数据分发客户端
组件编码
hzero-boot-transfer
一、简介
1.1 概述
数据分发客户端的功能是按需求对数据的增删改的变更进行拦截并记录更改信息,并将变更数据发送至对应的服务器端。目前提供对数据审计和数据分发的功能
1.2 组件坐标
<dependency>
<groupId>org.hzero.boot</groupId>
<artifactId>hzero-boot-transfer</artifactId>
<version>${hzero.boot.version}</version>
</dependency>
1.3 功能特性
- 作为数据分发服务的数据生产端
二、使用说明
数据变更监控是数据分发客户端的基础功能,数据分发和数据审计是扩展功能。
- 配置已提供的功能包含数据变更监控,数据分发,数据审计。开启数据分发,数据审计任意之一都必须开启数据监控。
# application.yml
hzero:
data:
change:
enable: true # 是否启用数据变更拦截功能
transfer:
dataTransfer:
enabled: true # 是否启用数据变更分发功能
三、局限性
由于底层实现原因,在使用数据分发框架实现数据审计功能或者数据分发功能的时候,需要注意一下几点限制:
-
暂不支持联合主键和无主键的情况。如果是联合主键,默认会取第一个键作为主键,如果没有主键,将不会对数据进行拦截
-
暂不支持无实体类映射的动态sql
-
必须正确使用mybatis标签,比如不能在
<select>
标签下写insert相关的SQL,否则会导致无法拦截 -
如果在A表的mapper XML文件下通过sql修改,新增 ,删除 B表的数据,将不会拦截到
-
通过手动sql实现的批量更新操作在高并发下可能会出现并发问题,如果开启了审计或者分发功能,慎用。
-
0.11.0版本已经支持
insert into select
,但是在使用改语法的时候还需要注意以下几点:-
mapper接口入参使用
@Param
注解的时候值不能为collection
,比如@Param(“collection”)。否则会导致SQL取不到正确的参数值。 -
mapper接口入参如果是对象或者map,则对象的属性值或者map的Key名称不能为
collection
。否则会导致SQL取不到正确的参数值。 -
xml中的SQL不能使用
collection
。形如xx = #{collection},或者<foreach collection="collection">
。可将collection用list
代替
-
四、版本更新日志
版本 0.10.0.RELEASE [2019-07-20]
- 初始发布
版本 0.11.0.RELEASE [2019-08-30]
- 修复不支持foreach语法的BUG
- 支持INSERT INTO SELECT语法
版本 0.12.0.RELEASE [2019-09-30]
- 拆分数据变化拦截功能为单独客户端
- 将数据审计功能单独分离为单独插件