[关闭]
@wddpct 2020-12-21T16:27:05.000000Z 字数 1705 阅读 847

gluttony 部署文档

未分类


gluttony

gluttony 是一个针对 oracle, mssql, postgresql 等数据源进行数据变更捕获功能管理的工具。

gluttony 基于 kafkadebezium 构建,主要提供对 kafka consumer 的管理和运行状态的监控。

前情提要

各类常见的数据库通常都实现了内置的数据变更捕获功能,如 oracle goldengate 之于 oracle, sqlserver change-data-capture 之于 mssql, logic-replication 之于 postgresql。

针对上述某类特定的数据库,在开启了相关的数据变更捕获功能后,debezium 可以对接数据库的数据变更操作,并以流的形式写入 kafka(debezium 本身提供了 kafka 的 connector 组件)。

基于 debezium + kafka 的一套实用功能,gluttony 可以直接对接 kafka,以提供管理 consumer 的形式实现相应的数据变更处理后续操作。如预先开启原始数据库的病人主表的 cdc 功能并接入 debezium + kafka。然后由 gluttony 注册消费数据变更记录,实现实时注册 empi 的功能。再比如注册就诊表信息,在检测到就诊信息发生变更时,实现实时触发 cdss trigger 接口的业务逻辑。

empi 处理器与 trigger 处理器需要预先写入 gluttony 程序或通过 go 程序插件的方式提供。

通过对接 debezium + kafka 而不是由 gluttony 实现针对数据库的数据变更监控有以下优劣势。

优势

  1. 专注于提供针对数据变更消费者的管理
  2. 开发周期短,避免重复造轮子,便于对接各类业务需求

提供的插件功能实现了将业务处理逻辑下发给实际的业务开发人员开发实现

劣势

  1. 支持的数据库种类受限于 debezium,如 debezium 不支持 hana 数据库
  2. debezium + kafka 有额外的硬件和运维成本

ORACLE 截至目前也仍未调试通过

开发手册

环境变量一览

名称 解释
DATABASE_URL 项目管理数据库地址,uri 风格,暂时只支持 POSTGRESQL 数据库
KAFKA_HOST 监听KAFKA发送的数据变更通知,如 localhost:9092,不需要协议名称如http
OMIGA_HOST 调用 OMIGA EMPI 注册接口,如 http://xx:5000
LOG_LEVEL 日志输出级别,off, trace, debug, info, warn, error, fatal, panic,默认输出trace级别
CDSS_HOST 调用 CDSS trigger 服务接口,如 http://xx:8088
DATASYNC_HOST 调用 CDSS base data info sync 服务接口,如 http://xx:8088
CONNECT_HOST 调用 KAFKA CONNECT,代理注册和删除连接器,如http://xx:8083
TOPIC_CONSUME_INTERVAL 表示轮询访问 kafka topic 的毫秒数
EMPI_HOST EMPI 地址,如 http://empi-demo-1802-develop.sy,最终调用请求 api/client/patient/add 地址

管理数据库初始化语句

  1. drop schema if exists cdc CASCADE;
  2. create schema cdc;
  3. create table cdc.consumer
  4. (
  5. id serial not null
  6. constraint consumer_pk
  7. primary key,
  8. name text,
  9. conn_string text,
  10. data_source text,
  11. capture_schema text,
  12. capture_table text,
  13. topic text,
  14. "group" text,
  15. handler_func text,
  16. global_key text[],
  17. is_valid boolean,
  18. count bigint,
  19. creation_time timestamp,
  20. configuration jsonb
  21. );
  22. create unique index consumer_name_uindex
  23. on cdc.consumer (name);
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注