一个基于Canal实现ES文档增量更新的轻量级框架
- 一、介绍
- 1、轻量级框架
- 2、全面容器化
- 3、事件驱动化
- 二、快速安装
- 三、轻松管理
- 1、容器部署
- 2、容器运行配置
- 四、业务接入
- 1、修改配置
- 2、创建应用
- 3、创建事件模块
- 4、注册事件回调
- 5、部署项目
- 五、疑问解答
- 1、项目文档
- 2、参与项目
- 3、提问渠道
ESUpdater是一个基于Canal实现ES文档增量更新的轻量级框架。基于以下优势,可以方便的完成业务接入与扩展。
从消费Kafka消息,到派发至业务层处理,框架设计清晰,源码简单易懂。
为解决各种依赖安装的复杂困难问题,已实现全面容器化,只需一条命令就可以轻松安装、部署、和维护。
通过数据表变更事件的注册与回调,完成业务逻辑的实时处理,这种事件驱动化设计更符合增量更新的理念。
安装过程会依赖Docker,所以请先安装并启动Docker,或者使用在线Docker网站,按如下步骤安装即可
git clone https://github.com/WGrape/esupdater
cd esupdater
cd image
bash make.sh
如果出现下图提示,则表示phpkafka
镜像生成成功,至此所有的安装步骤就已经完成。
如果安装过程出错,请查看镜像制作帮助文档。
如果部署出错,请参考容器部署帮助文档
bash ./start.sh
bash ./stop.sh
bash ./restart.sh
容器的运行时配置在/start.sh
脚本中定义,请根据实际情况进行修改,或使用默认配置。
Id | 配置名称 | 配置参数 | 参数值 | 默认值 | 释义 |
---|---|---|---|---|---|
1 | 核心数 | --cpus | >=0.5 | 1.5 | 设置允许的最大核心数 |
2 | CPU核心集 | ---cpuset-cpus | 0,1,2... | 未设置 | 设置允许执行的CPU核心 |
3 | 内存核心集 | --cpuset-mems | 0,1,2... | 未设置 | 设置使用哪些核心的内存 |
4 | 目录挂载 | -v | 磁盘目录 | /home/log/esupdater | 设置容器挂载的目录,以便在宿主机查看日志 |
只需要修改 consumer.php 配置文件中的broker_list_string
、group_id
、topic
这三个必须的配置项即可, 否则无法正常消费数据。
其他非必须的配置请参考应用配置文档
在/app/
目录下,创建一个以业务为命名规范的应用名称,如/app/alpha/
在上一步中创建的应用目录下,再创建一个由Handler
和Service
组成的事件模块,如 :
/app/alpha/user/UserHandler.php
,作用类似Controller
/app/alpha/user/UserService.php
,作用类似Service
在/config/event.php
配置文件中添加一个新的键值对,表示当数据库.数据表
出现变更事件时,由对应的事件Handler
响应处理。参考事件配置
$event = [
'alpha.user' => '\app\alpha\user\UserHandler',
];
至此业务接入部分已经完成,参考 轻松管理 部分部署代码即可
项目共有如下3个的文档,以便查看了解
- README :项目本身的文档,快速了解项目
- HOWTOCODE :更深的了解项目,包括架构设计、底层原理、应用配置、单元测试等
- HELP :解决安装和部署过程中问题的帮助手册,包括镜像制作帮助、容器部署帮助等
项目源码设计简单易懂,如果你有更好的想法,非常欢迎提出宝贵的 Pull request
如果在了解和使用过程中,有任何疑问,非常欢迎提出宝贵的 Issue