干货分享 | HZERO系列组件之数据分发组件(二),ElasticSearch同步方案

时间:2022-09-29 15:26:41

干货分享 | HZERO系列组件之数据分发组件(二),ElasticSearch同步方案

上文我们讲述了利用数据分发组件如何进行广播表的数据分发,相信大家对数据分发也有了一定的了解,但是数据分发能做到的不仅仅是MYSQL表对表的同步,还有更多的适用场景,这里我们分享一个ElasticSearch同步方案。

同步方案概述

数据分发适用场景

本质上该工具是监控数据增量文件,进行增量数据分发,可以减少代码层面的埋点和开发,比较适合我们项目交付的场景:

1.大数据量查询瓶颈,关系型数据库MYSQL,当数据量达到一定量级时,查询会产生瓶颈,将数据分发至ES,利用ES的搜索特性可大幅提升查询性能;

2.业务产品和HZERO基础服务分数据库实例跨库查询问题,比如业务产品需要关联查询Iam_user用户表信息,除了使用Feign,还可以把Iam_user表分发到两个库中,在目标库直接Sql查询;

3.增量消息队列生产,监听Mysql binlog增量推送队列,可自定义消费者逻辑进行队列消费;

4.缓存数据同步,将Mysql数据同步至Redis,减少代码开发。

ElasticSearch同步方案

干货分享 | HZERO系列组件之数据分发组件(二),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.配置完成后,列表页点击测试连接。

干货分享 | HZERO系列组件之数据分发组件(二),ElasticSearch同步方案

新建订单同步任务

1.左边是来源,选择Mysql,选择订单所在的Schema,右边是目标,选择Es,高级配置保持默认

干货分享 | HZERO系列组件之数据分发组件(二),ElasticSearch同步方案

2.根据实际选择任务的配置,一般选择第一个

3.不要使用自动创建的索引(映射的字段类型可能有问题),选择自己新建的索引

干货分享 | HZERO系列组件之数据分发组件(二),ElasticSearch同步方案

4.创建任务

 

检查同步状态

干货分享 | HZERO系列组件之数据分发组件(二),ElasticSearch同步方案

出错可以点击查看日志排查

干货分享 | HZERO系列组件之数据分发组件(二),ElasticSearch同步方案

 

通过上述的数据分发配置步骤,能够把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/

如有疑问登录开放平台提单反馈

https://open.hand-china.com/

干货分享 | HZERO系列组件之数据分发组件(二),ElasticSearch同步方案

干货分享 | HZERO系列组件之数据分发组件(二),ElasticSearch同步方案

▲ 更多精彩内容,扫码关注 “四海汉得” 公众号