上个周末抽时间整理了一些阿里开源的一些 Java 开源项目,希望对大家有帮助!这篇文章收录的所有开源项目都是还在继续维护并且可以使用的。
虽然有部分项目不是那么”完美“,但是依然非常值得我们学习。
感谢阿里技术团队的小伙伴们为 Java 开源生态做的贡献!
Canal
Canal[kə'næl] 翻译过来是水道/管道/沟渠的意思,主要用于基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。
Canal 可以帮助我们实现 MySQL 和其他数据源比如 Elasticsearch、Kafka、RocketMQ 或者另外一台 MySQL 数据库之间的数据同步。Canal 的底层原理依赖 binlog,它会模拟 MySQL 主从复制的过程,解析 binlog 将数据同步到其他的数据源。
MySQL binlog(binary log 即二进制日志文件) 主要记录了 MySQL 数据库中数据的所有变化(数据库执行的所有 DDL 和 DML 语句)。因此,我们根据主库的 MySQL binlog 日志就能够将主库的数据同步到从库中。
更具体和详细的过程是这个样子的(图片来自于:《MySQL Master-Slave Replication on the Same Machine》[1]):
MySQL主从复制
-
主库将数据库中数据的变化写入到 binlog
-
从库连接主库
-
从库会创建一个 I/O 线程向主库请求更新的 binlog
-
主库会创建一个 binlog dump 线程来发送 binlog ,从库中的 I/O 线程负责接收
-
从库的 I/O 线程将接收的 binlog 写入到 relay log 中。
-
从库的 SQL 线程读取 relay log 同步数据本地(也就是再执行一遍 SQL )
-
Wiki : https://github.com/alibaba/canal/wiki 。
-
Github :https://github.com/alibaba/canal 。
EasyExcel
Java 解析、生成 Excel 常用的框架有 Apache poi、jxl ,但是这两个框架使用起来都不够优雅,并且非常耗内存,严重时会导致内存溢出。
怎么解决这个问题呢?
推荐你使用阿里开源的 EasyExcel。正如这个项目官网介绍的那样,这是一款快速、简单避免 OOM 的 java 处理 Excel 工具。
官方是这样介绍 EasyExcel的:
-
官方文档 :https://www.yuque.com/easyexcel 。
-
Github :https://github.com/alibaba/easyexcel 。
Arthas
arthas
Arthas 是阿里开源的一个 Java 诊断工具,能够分析、诊断、定位 Java 应用问题。