阿里开源的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 应用问题。

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

Arthas能帮我们解决的一些问题

Arthas 把一些常用的 Java 诊断相关的功能封装起来了,提供简单的命令行操作,功能强大。

Arthas 底层用到了字节码编程相关的技术,简单看了一下源码,应该是基于 ByteBuddy。

ByteBuddy 是一款强大的 Java 字节码增强框架,它提供了一套统一易上手的 Api,简化了字节码编码的学习和使用难度。Byte Buddy 成熟稳定,性能也还不错。像咱们平常经常使用 Mockito,Hibernate,Jackson 等知名

你可能感兴趣的:(java,mysql,开发语言)