一个基于Canal实现ES文档增量更新的高性能轻量框架
一、介绍
ESUpdater是一个基于Canal实现ES文档增量更新的高性能轻量框架。基于以下优势,可以让你快速上手和使用。
1、轻量级框架
无论安装使用,还是代码设计,整个框架都非常轻量,优雅的完成数据二次处理和ES增量更新。
2、全面容器化
为解决各种依赖安装的复杂麻烦问题,已实现全面容器化,只需一条命令就可以轻松安装、部署、和维护。
3、事件驱动化
基于框架内部的事件驱动设计,可以轻松地注册不同数据表的变更事件和回调,优雅地实现增量更新。
4、插件化扩展
在不影响框架内部运行的前提下,支持插件化扩展,实现对内部行为的自定义扩展。
5、高性能消费
通过一个Consumer
进程和多个Worker
进程的一对多通信模型,最少提高10倍的吞吐量,实现高性能消费。
二、快速上手
预计只需要 3分钟 即可完成 !
以下操作中会依赖Docker,所以请先安装并启动它。如果只是试用则强烈建议你全程使用在线Docker网站,按如下步骤安装即可,非常方便。
1、获取项目
通过git clone
或下载Release包即可获取项目,如果出错请参考获取过程帮助文档。
git clone https://github.com/WGrape/esupdater
cd esupdater
2、开始安装
执行install
目录下的install.sh
安装脚本时,需要传递如下参数以实现设置环境变量。如果出错请参考安装过程帮助文档。
your_local_ip
:本机IP参数,通过ifconfig
查看,通常为192.168开头,而不是127.0.0.1
cd install
bash install.sh ${your_local_ip}
cd ..
3、运行项目
安装成功后,执行根目录下的start.sh
启动脚本即可。如果出错请参考运行过程帮助文档。
bash start.sh
# 查看日志输出
tail -f /home/log/esupdater/debug.log.20220111
4、测试运行
在另一个窗口进入kafkaContainer
容器中,按如下操作启动Kafka生产者
docker exec -it kafkaContainer /bin/bash
cd /opt/kafka/
# 启动时可能会出现warn, 忽略即可
./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic default_topic
启动成功后会进入一个生产消息的命令行,发送任意消息后,查看上一步日志中的输出,如果出现如下类似日志则说明服务已经成功运行 !
三、业务接入
如果需要在你的业务中接入此项目,请参考应用接入文档。
四、扩展列表
基于插件化扩展开发,项目提供了一系列开箱即用的扩展。
1、AutoGenerateCallback
一个自动生成Handler
和Service
的事件回调模块的扩展。具体使用见使用介绍
五、关于项目
1、深入了解
如果想要深入了解本项目,在 doc目录 下提供了如下丰富完善的项目文档,欢迎阅读。
- APPLICATION :帮助你快速在业务中接入此项目
- HOWTOCODE :更深的了解项目,包括架构设计、底层原理
- HELP :解决安装和部署过程中问题的帮助手册,包括镜像制作帮助、容器部署帮助等
2、参与项目
项目源码设计简单易懂,如有更好的想法,可参考如何贡献文档,期待提出宝贵的 Pull request 。
如果在了解和使用过程中,有任何疑问,也欢迎提出宝贵的 Issue 。
开源不易,如果支持本项目 欢迎Star ! 以激励维护和更新的动力。
六、贡献列表
所有对本项目有过重要贡献的用户,会收录在此贡献者列表中。
- 感谢 sick-cat 提出的Issue :启动配置
- 感谢 onser3 提出的Issue :自动生成handler和service层