9.5. 多发整体架构介绍

9.5.1. 流程图

../_images/multiplex_overall_architecture_2024-09-09_13-48-45.png

9.5.2. 相关组件说明

9.5.2.1. Blade平台或者其他自动化工具

请求的发起者(复制请求到下一个节点IAR或者其他网关)

9.5.2.2. 统一sql

9.5.2.2.1. sql-convert-runtime

作为fat包集成到微服务中拦截运行时sql,查询sql引起的表数据变化并发送到比对服务。

9.5.2.2.2. 动态库

统一sql动态库,被sql-convert-runtime依赖,支持服务器架构x86_64或者arm,其中unisql.linux.x86_64.so支持架构x86_64,unisql.linux.aarch64.so支持架构arm。

9.5.2.3. 微服务

微服务集成统一sql后,业务操作产生运行时sql被统一sql拦截后发送到pulsar。

9.5.2.4. pulsar

作为MQ,接收微服务发送的消息(包含sql引起的表数据变化),推送消息到比对服务。

9.5.2.5. 比对服务

订阅pulsar主题,消费消息,比对数据结果产生比对报告。

9.5.3. 配置说明

9.5.3.1. 微服务

9.5.3.1.1. 集成统一sql

9.5.3.1.1.1. 数据源驱动类

微服务配置的数据源驱动类统一配成 com.hundsun.lightdb.unisql.proxy.Driver

9.5.3.1.1.2. 配置数据库jdbc连接

参考 统一sql配置数据库jdbc连接

9.5.3.1.1.3. 集成sql-convert-runtime
  • 方式1 将 sql-convert-runtime-fat-xxx.jar 外挂到微服务可以加载的文件目录

  • 方式2 在项目中通过pom依赖的方式引入

<dependency>
        <groupId>com.hundsun.lightdb</groupId>
        <artifactId>sql-convert-runtime</artifactId>
        <version>${sql-convert-runtime.version}</version>
<dependency>
9.5.3.1.1.4. sql-convert-runtime配置项

参数

说明

multi.sendCompareService

是否发送到比对服务(总开关),默认0不发送到比对服务,取值范围[0,1]

multi.onlyCompare

在发送比对服务的前提下(即配置项multi.sendCompareService=1),默认1表示采集dml前后数据变化并发送到pulsar,取值范围[0,1]

multi.collect.trace.info

在发送比对服务的前提下(即配置项multi.sendCompareService=1),用于是否从线程threadlocal变量获取trace_id(标识某次sql操作),默认为0表示关闭,取值范围[0,1]

9.5.3.1.1.5. 配置动态库

参考 统一sql配置动态库

9.5.3.1.1.6. pulsar客户端生产者配置

参数

说明

multi.pulsarServiceUrl

Pulsar服务端地址,格式为:pulsar://<ip>:<port> 样例数据:pulsar://10.20.47.203:6650

multi.topicName

Pulsar的持久化主题,主题格式:persistent://<tenant>/<namespace>/<topic>,样例数据为:persistent://public/default/recordMonitorJingji;支持系统参数配置(-D)

9.5.3.1.1.7. 配置文件unisql.conf配置项

参数

说明

unisql.skip

全局透传,开启后所有SQL不进行转换直接透传。 1开启0不开启 默认不开启 ,在取值范围之外的按照默认值处理。 注意 这里是 配置为1开启全局透传

9.5.3.2. 比对服务

9.5.3.2.1. pulsar客户端消费者配置

参数

说明

multi.pulsarServiceUrl

Pulsar服务端地址,格式为:pulsar://<ip>:<port> 样例数据:pulsar://10.20.47.203:6650

multi.topicName

Pulsar的持久化主题,主题格式:persistent://<tenant>/<namespace>/<topic>,样例数据为:persistent://public/default/recordMonitorJingji

multi.subscriptionName

在Pulsar中,订阅(Subscription)是用于消费主题消息的标识符。订阅名称是用来标识不同消费者或消费组在订阅相同主题时的唯一标识。合法字符串即可,比如jingjiTest

9.5.3.2.2. 配置动态库

参考 统一sql配置动态库