企业的信息化系统,通常会存在业务系统服务和HZERO系统服务相互独立,表数据也进行分库存储的情况,然而在众多业务系统服务中,存在很多场景需要用到HZERO平台的Iam_user(用户)表,因此我们需要将用户表分发到其他数据库里。
普通的解决方式是通过定时调度任务或者在代码中埋点,编写同步代码的方式让两个系统两个数据库实例的用户数据保持一致。
但设想一下,如果我们需要同步的不仅仅是用户,还有角色、用户权限、员工、组织、部门等等数据呢?编写代码的方式不仅会增加开发量,还可能会有数据延迟、程序BUG等影响。
所以这里要引入数据分发组件,在保障同步性能的同时,能大大降低数据分发的工作量。
数据分发组件概述
基于CloudCanal社区版,HZERO提供了一个集成组件,进行API和操作流程的封装,主要功能是实现全局表的数据分发功能,灵活设置可按服务分DB,该组件主要的使用场景包括需要用到全局表的情况,例如用户表等。
当然,不使用HZERO的操作入口,从CloudCanal官方提供的管理界面进行配置也能达到效果,不过在这我们还是建议使用HZERO进行统一的管理。
组件坐标
管理端组件在Hzero-Admin服务中依赖使用。
<dependency>
<groupId>org.hzero.plugin</groupId>
<artifactId>admin-datasync</artifactId>
</dependency>
组件配置说明
在Hzero-Admin服务中添加好依赖后,还需配置以下信息才能正常使用。
hzero:
admin:
cloudCanal:
# 服务地址, 安装CloudCanal组件后,CloudCanal的访问地址
serverUrl: ${HZERO_CLOUDCANAL_SERVER_URL:http://cloudcanal.hzero.com}
# 应用KEY,从CloudCanal的管理员用户账号信息中获取,与appSecret相对应,具体获取方式可参考`CloudCanal`的官方文档
appKey: ${HZERO_CLOUDCANAL_APP_KEY:ak**********************************}
# 应用秘钥,从CloudCanal的管理员用户账号信息中获取,与appKey相对应,具体获取方式可参考`CloudCanal`的官方文档
appSecret: ${HZERO_CLOUDCANAL_APP_SECRET:sk*********************************}
# 管理帐户,CloudCanal的管理员账户
account: ${HZERO_CLOUDCANAL_ACCOUNT:test@clougence.com}
# 管理密码,CloudCanal的管理员账户的密码
password: ${HZERO_CLOUDCANAL_PASSWORD:********************}
# 登录认证Cookie域,需要保证CloudCanal的访问地址要与hzero的界面前端在同一个域里,否则不能以无登录的方式直接跳转到CloudCanal的管理界面
domainUrl: ${HZERO_CLOUDCANAL_DOMAIN_URL:.hzero.com}
组件安装
安装教程
详细教程可参考以下路径:https://www.clougence.com/cc-doc/quick/quick_start/
修改默认验证码
CloudCanal社区版为了体验便利,默认设置了777777验证码,但是我们希望提高数据安全性,降低数据泄露风险。CloudCanal也提供修改默认验证码的功能,我们按照以下步骤配置即可。
操作步骤:
1、进入CloudCanal社区版解压目录
/console_data/cloudcanal/console/conf;
2、编辑Business-output.properties文件和以下参数Console.config.product.trial.verify_code=777777;
3、重启Console容器。
准备数据库账号
CloudCanal在做MySQL源端或对端的数据迁移同步时,需要提供的账号有一些赋权,基于数据安全和规范的考虑,我们建议新建数据库账号,不要使用权限最大的账号。
- MySQL源端
全量迁移:迁移库表的SELECT权限,Information_schema SELECT权限
增量同步:SELECT,REPLICATION SLAVE,REPLICATION CLIENT权限,Information_schema SELECT权限
- MySQL对端
全量迁移/增量同步:迁移库表的 INSERT/UPDATE/DELETE/DDL权限,Information_schema SELECT权限
- 系统自动心跳(可选)
默认心跳语句:CREATE DATABASE权限
组件基础配置
新建MYSQL数据源
路径:平台层菜单平台治理>数据分发>CloudCanal
通过以上路径进入CloudCanal管理界面。
目前HZERO系统能方便管理的只有MySql类型,若要分发其他类型数据库,请参照官方文档直接在CloudCanal系统中配置 :
1、可以使用阿里云账号,也可以使用自建账号密码模式(一般习惯用账号密码模式,权限分配比较简单);
2、网络地址最好填写内网,避免网络延迟;
3、按步骤填写后点击测试链接。
创建来源表
路径:平台层菜单平台治理>数据分发>广播表通过以上路径进入广播表管理界面
点击广播表操作栏上的【新建】按钮进入来源表创建页面。依次选择集群,网关类型为公网,数据源为我的数据源,库为Hzero_platform,表为Iam_user,点击【确定】后完成来源表的创建。
创建目标表
选中刚创建的来源表,点击目标表操作栏上的 新建按钮进入目标表创建页面。依次选择网关类型为公网,数据源为我的数据源,库为Order_sys,表不做更改, 默认与来源表保持一致,为Iam_user,点击确定后完成目标表的创建。
重复以上操作,只是这次库选择Payment_sys。
等待片刻,分别进入数据库的Order_sys与Payment_sysDB,可以看到Iam_user数据已经同步过来,而且后续的其他操作也会同步到其他两个DB中的对应表里。
通过以上几步简单的配置,就能完成两个数据库实例间的数据同步,不仅避免定时任务同步、代码埋点同步带来的一系列问题,而且CloudCanal是通过监听MySQL的增量日志实现的增量同步,在不影响应用服务器性能的情况下,正常情况下延迟不会超过1秒。
下篇我们将讲述数据分发组件之ElasticSearch同步方案,敬请期待。
联系我们
产品试用请登录开放平台。请在 PC 端打开:
https://open.hand-china.com/market-home/trial-center/
产品详情请登录开放平台:
https://open.hand-china.com/document-center/
如有疑问登录开放平台提单反馈:
▲ 更多精彩内容,扫码关注 “四海汉得” 公众号