# business-data-sync-model **Repository Path**: kygeng/business-data-sync-model ## Basic Information - **Project Name**: business-data-sync-model - **Description**: 实现一套数据同步模型 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-08-28 - **Last Updated**: 2024-12-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # business-data-sync-model 时间:2024-12 ## 介绍 ### 业务场景 查公司(类似:企查查、爱企查、天眼查) 查询条件:关键词查询,等值查询,范围查询,排序,分页,聚合,经纬度区间查询,经纬度范围查询,AI查询 补充说明: 经纬度区间查询:用户在地图上画一个多边形,就能够查询出 经纬度(注册地址 OR 办公地址)在图形内的企业 经纬度范围查询:用户在地图上选择一个中心点,再选择一个半径,就能够查询出 当前圆范围内的企业 AI查询: 1、查询列表:例如用户只需要输入 “ 给我推荐几家注册地址在上海,办公地址在南京,注册资本超过100万,是高新技术企业,但是不是科技行业的公司 ”,就能够查询出结果 2、动态图表:例如用户输入 “ 基于查询结果的结果,生成有意义的图形 ”,就能根据不同的维度(注册资本、人员规模、地区、行业...)生成不同的图表(柱状图,饼图,折线图,热力图,散点图...) 3、动态展示:例如用户输入 “ 新增注册资本列的展示,取消注册地址的展示 ”,后端能动态的调整出参,前端能够动态调整图表样式 ### 技术功能点: 1、数据同步:使用 canal 捕获 MySQL 的 binlog,将变更数据内容发送到 kafka ,消费者消费kafka中数据,并将变更内容同步更新到 ES 2、全量数据下发:获取MySQL中业务表的全量ID,将数据发送到 kafka ,消费者消费kafka中数据,并将数据同步更新到 ES 3、动态加载热点词、停止词:修改 IK 分词器源码,使其能够连接MYSQL,并加载 热点词表、停止词表中的数据 4、ES查询优化:从 程序代码、ES配置、JVM配置、服务器配置 等多个方面对ES进行优化 5、ES插入优化:从 程序代码、ES配置、JVM配置、服务器配置 等多个方面对ES进行优化 6、ES 在线库、离线库:实现ES的在线库、离线库的动态切换 ## 程序设计 ### 环境依赖 | 组件 | 版本号 | 备注 | |-------|-----|--------| | MYSQL | 5.7 | | | Canal | | 数据同步组件 | | Kafka | | | | ElasticSearch | | | | Kibana | | | | ollama | | | ### 软件架构 ![](png/image-20240901230615134.png) ### 数据同步流程