kronos是一个解决宽表、数据同步等问题的框架。如微服务体系中解决多数据源查询、缓存同步数据、数据同步、分库分表等
宽表的实现,社区有一些开源实现方案,如Netflix 推出数据同步和增强平台 Delta(未开源)、flink cdc。但上述框架多多少少都存在一些场景不适合或者侵入性较强等问题。
如:Delta需要业务编程嵌入式代码,侵入性较强,flink cdc无法解决es中嵌套结构数据同步问题
kronos的算法源自公司内部一个宽表自研框架,经公司内部的大量线上经验,之前工程设计实现存在的弊端导致某些问题无法根本性解决, 比如性能、N:1问题、读写库延迟、数据事件优先级问题、项目可维护性与成本变高等 因此产生了开发该框架的想法
- 支持数据实时同步
- 多表异步数据源合并
- 数据迁移
- 数据源模拟flink cdc的框架实现结合Debezium实现
- 算子数据流采用Disruptor实现
Prerequisites for building Kronos:
- Unix-like environment (we use Linux, Mac OS X, Cygwin, WSL)
- Git
- Maven (we recommend version 3.2.5 and require at least 3.1.1)
- Java 8 or 11 (Java 9 or 10 may work)
git clone https://github.com/jackila/kronos.git
cd kronos
mvn clean package -DskipTests
Kronos is now installed in build-target
as kronos.jar.
-
方式一:通过集成测试(
需要docker环境
),了解该框架mvn test -Dtest=MySqlSourceExampleTest -DfailIfNoTests=false
-
方式二:通过业务模拟demo,了解kronos使用方法(业务背景见案例)
我们使用 Spotless plugin 和 google-java-format 一起格式化我们的 Java 代码。
你可以通过以下步骤来将 IDE 配置为在保存时自动应用格式设置:
- 下载 google-java-format plugin v1.7.0.6
- 打开 Settings → Plugins,点击齿轮图标并选择 "Install Plugin from Disk"。导航到下载的 zip 文件并选择它。
- 在插件设置中,启用插件并将代码样式更改为 "AOSP"(4 个空格的缩进)。
- 请记住不要将此插件更新为更高版本!
- 安装 Save Actions plugin。
- 启用插件,以及 "Optimize imports" 和 "Reformat file"。
- 在 "Save Actions" 设置页面中,为
.*\.java
设置 "File Path Inclusion"。否则你将在编辑其他文件中意外的重新格式化。
IntelliJ 使用 Checkstyle-IDEA 插件在 IDE 中支持 checkstyle。
- 从 IntelliJ 插件存储库中安装 "Checkstyle-IDEA" 插件。
- 通过 Settings → Tools → Checkstyle 配置插件。
- 将 "Scan Scope" 设置为仅 Java 源(包括测试)。
- 在 "Checkstyle Version" 下拉菜单中选择 8.14 版本,然后单击 "apply"。此步骤很重要,请勿跳过!
- 在 "Configuration File" 窗格中,点击 "+" 图标添加新配置:
- 将 "Description" 设置为 Flink。
- 选择 "Use a local Checkstyle file" ,然后将其指向你存储库中
"tools/maven/checkstyle.xml"
文件。 - 选中 "Store relative to project location" 框,然后单击 "Next"。
- 将 "checkstyle.suppressions.file" 属性值配置为
"suppressions.xml"
,然后单击 "Next",然后单击 "Finish"。
- 选择 "Kronos" 作为唯一的激活配置文件,单击 "Apply",然后点击 "OK"。
- Checkstyle 现在将在编辑器中针对任何违反 Checkstyle 的行为发出警告。
插件安装完成后你可以通过 Settings → Editor → Code Style → Java → Scheme 下拉框旁边的齿轮图标,选择intellij IDEA code style XML, 直接导入 "tools/intellij-java-google-style.xml"
文件。
你可以通过打开 Checkstyle 工具窗口并单击 "Check Module" 按钮来扫描整个模块。扫描不应报告任何错误。