/esupdater

一个基于Canal实现ES文档增量更新的轻量级框架

Primary LanguagePHPMIT LicenseMIT

img

一个基于Canal实现ES文档增量更新的轻量级框架

目录

一、介绍

ESUpdater是一个基于Canal实现ES文档增量更新的轻量级框架。基于以下优势,可以方便的完成业务接入与扩展。

Architecture

1、轻量级框架

从消费Kafka消息,到派发至业务层处理,框架设计清晰,源码简单易懂。

2、全面容器化

为解决各种依赖安装的复杂困难问题,已实现全面容器化,只需一条命令就可以轻松安装、部署、和维护。

3、事件驱动化

通过数据表变更事件的注册与回调,完成业务逻辑的实时处理,这种事件驱动化设计更符合增量更新的理念。

二、快速安装

安装过程会依赖Docker,所以请先安装并启动Docker,或者使用在线Docker网站,按如下步骤安装即可

1、获取项目

git clone https://github.com/WGrape/esupdater
cd esupdater

2、安装依赖

cd image
bash make.sh

如果出现下图提示,则表示phpkafka镜像生成成功,至此所有的安装步骤就已经完成。

如果安装过程出错,请查看镜像制作帮助文档。

三、轻松管理

1、容器部署

如果部署出错,请参考容器部署帮助文档

(1) 启动

bash ./start.sh

(2) 停止

bash ./stop.sh

(3) 重启

bash ./restart.sh

2、容器运行配置

容器的运行时配置在/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 设置容器挂载的目录,以便在宿主机查看日志

四、业务接入

1、修改配置

只需要修改 consumer.php 配置文件中的broker_list_stringgroup_idtopic这三个必须的配置项即可, 否则无法正常消费数据。

其他非必须的配置请参考应用配置文档

2、创建应用

/app/目录下,创建一个以业务为命名规范的应用名称,如/app/alpha/

3、创建事件模块

在上一步中创建的应用目录下,再创建一个由HandlerService组成的事件模块,如 :

  • /app/alpha/user/UserHandler.php ,作用类似 Controller
  • /app/alpha/user/UserService.php,作用类似 Service

4、注册事件回调

/config/event.php配置文件中添加一个新的键值对,表示当数据库.数据表出现变更事件时,由对应的事件Handler响应处理。参考事件配置

$event = [
    'alpha.user' => '\app\alpha\user\UserHandler',
];

5、部署项目

至此业务接入部分已经完成,参考 轻松管理 部分部署代码即可

五、疑问解答

1、项目文档

项目共有如下3个的文档,以便查看了解

  • README :项目本身的文档,快速了解项目
  • HOWTOCODE :更深的了解项目,包括架构设计、底层原理、应用配置、单元测试等
  • HELP :解决安装和部署过程中问题的帮助手册,包括镜像制作帮助、容器部署帮助等

2、参与项目

项目源码设计简单易懂,如果你有更好的想法,非常欢迎提出宝贵的 Pull request

3、提问渠道

如果在了解和使用过程中,有任何疑问,非常欢迎提出宝贵的 Issue