上文我们讲述了利用数据分发组件如何进行广播表的数据分发,相信大家对数据分发也有了一定的了解,但是数据分发能做到的不仅仅是MYSQL表对表的同步,还有更多的适用场景,这里我们分享一个ElasticSearch同步方案。
同步方案概述
数据分发适用场景
本质上该工具是监控数据增量文件,进行增量数据分发,可以减少代码层面的埋点和开发,比较适合我们项目交付的场景:
1.大数据量查询瓶颈,关系型数据库MYSQL,当数据量达到一定量级时,查询会产生瓶颈,将数据分发至ES,利用ES的搜索特性可大幅提升查询性能;
2.业务产品和HZERO基础服务分数据库实例跨库查询问题,比如业务产品需要关联查询Iam_user用户表信息,除了使用Feign,还可以把Iam_user表分发到两个库中,在目标库直接Sql查询;
3.增量消息队列生产,监听Mysql binlog增量推送队列,可自定义消费者逻辑进行队列消费;
4.缓存数据同步,将Mysql数据同步至Redis,减少代码开发。
ElasticSearch同步方案
以改造O2产品订单查询为例
现状:产品层面按“平台”进行划分,底层分为了四套订单表,每套表有大部分字段是一样的个别字段有区别,代码层面分为了四套策略,列表查询需要必输“平台”字段,才能确定查询走哪套表的查询策略。
改造目标:查询聚合到一处,”平台“字段设置为非必输,同时能满足未来大数据量增长的需求,保障查询性能。
MYSQL数据库分四张表:
O2omc_jd_order
O2omc_order
O2omc_pub_order
O2omc_tm_order;
Cloud Canal同步任务:全量同步、增量同步(秒级延迟)、个性化代码宽表处理;
ES汇聚为一个索引:将数据聚合至一处,Join查询字段做字段冗余,订单行表做嵌套文档;
列表查询:改造为ES语法,从ES索引中查询,O2产品有提供ES查询分页组件(比直接使用ES操作类方便);
详情查询:通过平台+ID,能够精确匹配到表和记录,仍然可从MYSQL查询。
ES查询索引构建
梳理查询字段
梳理界面上查询需要的字段,找出非订单表的字段,冗余到订单上,几种类型字段处理如下:
表上没有的字段:如果是前置流程产生的则直接宽表冗余,如果是后续流程的比如是否退货,则需要新增Mysql字段回写。
行表字段:做嵌套文档,比如SkuCodes。
新建ES索引
虽然配置任务时可默认生成索引,类型都是自动匹配,但建议索引手工创建,字段类型有保证,参考如下:
索引名称:Glzoms_omc_order_0,前缀建议能按业务类型划分,同一类命名相同,后缀为租户Id;
索引的Doc Id:目前是Order_code,四套表的Order_code全局唯一。
新建ES别名
使用别名:上线后有概率需要删除重建索引字段,由于索引全量同步任务需要一段时间,所以不建议查询直接操作索引,建议操作别名,切换时间比较短。
别名名称:Glzoms_omc_order_alias_0,跟索引名称规则基本一致,后缀为租户ID。
POST _aliases
{
"actions" : [{"remove" : {"index" : "glzoms_omc_order_0" , "alias" : "glzoms_omc_order_alias_0"}}],
"actions" : [{"add" : {"index" : "glzoms_omc_order_0" , "alias" : "glzoms_omc_order_alias_0"}}]
}
同步任务配置
新建MYSQL数据源
1.可以使用阿里云账号,也可以使用自建账号密码模式(一般习惯用账号密码模式,权限分配比较简单)
2.网络地址最好填写内网,避免网络延迟
3.按步骤填写后点击测试链接。
新建Elasticsearch数据源
1.可以使用阿里云账号,也可以使用自建账号密码模式(一般习惯用账号密码模式,比较简单)
2.网络地址最好填写内网,避免网络延迟,注意主要加上端口,ES默认为9200
3.配置完成后,列表页点击测试连接。
新建订单同步任务
1.左边是来源,选择Mysql,选择订单所在的Schema,右边是目标,选择Es,高级配置保持默认
2.根据实际选择任务的配置,一般选择第一个
3.不要使用自动创建的索引(映射的字段类型可能有问题),选择自己新建的索引
4.创建任务
检查同步状态
出错可以点击查看日志排查
通过上述的数据分发配置步骤,能够把MYSQL的数据汇聚到ElasticSearch上,配合ElasticSearch分页查询组件,利用ElasticSearch优秀的查询性能,可以轻松支撑千万级别数据量的查询,同时ElasticSearch上的数据会随着MYSQL的改动而实时同步,也降低了数据操作的难度。
下篇我们将讲述数据分发组件之自定义代码处理,敬请期待。
下期预告
干货分享 | HZERO系列组件之数据分发组件(三),自定义代码处理
往期推荐
1汉得企业级数字化PaaS平台 HZERO 1.9.0 版本正式发布!
2汉得aPaaS低代码平台-飞搭 2.3.0 RELEASE正式发布!
3重磅发布 | 汉得iPaaS全域集成平台 集星獭 1.5.0 版本正式发布
4干货分享 | HZERO系列组件之辅助开发核心包,一招搞定开发!
5干货分享 | HZERO系列组件之消息管理组件,满足您的多种发送需求
6干货分享 | HZERO系列组件之数据分发组件(一),广播表快速入门
联系我们
产品试用请登录开放平台。请在 PC 端打开:
https://open.hand-china.com/market-home/trial-center/
产品详情请登录开放平台:
https://open.hand-china.com/document-center/
如有疑问登录开放平台提单反馈:
▲ 更多精彩内容,扫码关注 “四海汉得” 公众号