阿里巴巴开源的15个顶级Java项目

上个周末抽时间整理了一些阿里开源的一些 Java 开源项目,希望对大家有帮助!这篇文章收录的所有开源项目都是还在继续维护并且可以使用的。

虽然有部分项目不是那么”完美“,但是依然非常值得我们学习。

感谢阿里技术团队的小伙伴们为 Java 开源生态做的贡献!

Canal

Canal[kə'næl] 翻译过来是水道/管道/沟渠的意思,主要用于基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。

Canal 可以帮助我们实现 MySQL 和其他数据源比如 Elasticsearch、Kafka、RocketMQ 或者另外一台 MySQL 数据库之间的数据同步。Canal 的底层原理依赖 binlog,它会模拟 MySQL 主从复制的过程,解析 binlog 将数据同步到其他的数据源。

阿里巴巴开源的15个顶级Java项目_第1张图片

​MySQL binlog(binary log 即二进制日志文件) 主要记录了 MySQL 数据库中数据的所有变化(数据库执行的所有 DDL 和 DML 语句)。因此,我们根据主库的 MySQL binlog 日志就能够将主库的数据同步到从库中。

更具体和详细的过程是这个样子的(图片来自于:《MySQL Master-Slave Replication on the Same Machine》[1]):

阿里巴巴开源的15个顶级Java项目_第2张图片

MySQL主从复制

  1. 主库将数据库中数据的变化写入到 binlog

  2. 从库连接主库

  3. 从库会创建一个 I/O 线程向主库请求更新的 binlog

  4. 主库会创建一个 binlog dump 线程来发送 binlog ,从库中的 I/O 线程负责接收

  5. 从库的 I/O 线程将接收的 binlog 写入到 relay log 中。

  6. 从库的 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的:

阿里巴巴开源的15个顶级Java项目_第3张图片

  • 官方文档 :https://www.yuque.com/easyexcel 。

  • Github :https://github.com/alibaba/easyexcel 。

Arthas

阿里巴巴开源的15个顶级Java项目_第4张图片

​arthas

Arthas 是阿里开源的一个 Java 诊断工具,能够分析、诊断、定位 Java 应用问题。

你可能感兴趣的:(程序员,java,编程,java,开源,数据库)