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

Canal

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

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

652d95794ab6e509145869e588b722c9.png

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

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

258943167e5c899946e01a09738da0ec.png

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 的:

2cfb58947594cbceaa3bbffd71f990d1.png

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

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

Arthas

c4fc66db2d3b148c64fbd0d6c17e9f49.png

arthas

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

de47ab4f86e6d4192c261508bb1f4917.png

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

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

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

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

Arthas 提供了详细的在线教程供我们学习,非常赞!在线教程地址:https://arthas.aliyun.com/doc/arthas-tutorials.html?language=cn

4e9a3fdd12900259455861b64c151769.png

Arthas在线教程
  • 官网 :https://arthas.aliyun.com/zh-cn/ 。

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

FastJson

76fcaf7e1d8917175c3ed847b1747192.png

FastJson 是阿里的开源一个 JSON 解析库,其底层使用了 ASM 来动态生成类。Fastjson 的速度非常快,不过,快的同时也带来一些潜在的安全问题。

FastJson 几乎是作者温少大佬一个人开发和维护的,真心厉害!佩服!

0e7418a12db6ff348eeab7a4fc9e8499.png

知乎上有网友说:"温少几乎凭一己之力撑起了一个被广泛使用 JSON 库,而其他库几乎都是靠一整个团队,就凭这一点,温少作为初心不改的阿里初代开源人,当之无愧!"。

看到网上有很多人诟病 Fastjson 的漏洞问题,都是做技术的,希望大家也多给予一些理解吧!

  • Wiki :https://github.com/alibaba/druid/wiki/常见问题[2]

  • Github : https://github.com/alibaba/fastjson

Druid

Druid 是阿里巴巴开发的号称为监控而生的数据库连接池。和 FastJson 类似,Druid 几乎也是作者温少大佬一个人开发和维护的。

Github 地址:https://github.com/alibaba/druid 。

Spring Cloud Alibaba 相关

Sentinel

d16029966d6ed493db0e5cb9c9a03e2f.png

Sentinel 是阿里巴巴体提供的面向分布式服务架构的流量控制组件,主要以流量为切入点,提供 流量控制熔断降级系统自适应保护等功能来保护系统的稳定性和可用性。

cc09dae7cedc8db0d6a2bbcf63cb04a9.png

  • 官方文档:https://sentinelguard.io/zh-cn/docs/introduction.html[3]

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

Nacos

7e88762cade4072f34ec6bcff1d61881.png

Nacos 是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

我这里简单对 Nacos 官网对 Nacos 的介绍总结了一下:

  1. Nacos 主要用于发现、配置和管理微服务:Nacos 是 Spring Cloud Alibaba 提供的服务注册发现组件,类似于 Consul、Eureka。并且,提供了分布式配置管理功能。

  2. Nacos 名字的含义 :Na 即是 Naming(注册中心),co 即是 Configuration(配置管理),最后的 s 即是 Service。

Nacos 的关键特性包括:

  • 服务发现和服务健康监测

  • 动态配置服务 :提供能很多开箱即用的配置管理特性比如一键回滚配置、版本跟踪、金丝雀发布等等。并且,内置了简洁易用的 UI。

  • 动态 DNS 服务  :动态 DNS 服务支持权重路由,让您更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单 DNS 解析服务。

  • 服务及其元数据管理

  • ......

Nacos 生态图如下,可以看出 Nacos 无缝支持一些主流的开源生态如 Spring Cloud、Dubbo、K8S 等等。

d4bef02704f3cd1a38d52630db6402a1.png

  • 官网:https://nacos.io/zh-cn/index.html 。

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

RocketMQ

26e268984dbf3520ab0b848b8c14b809.png

RocketMQ 是一款高性能、高可靠、高实时、分布式的消息队列,由阿里巴巴团队开发,在 2016 年底贡献给 Apache 并且顺利成为了 Apache 的一个顶级项目。

  • 官网 :https://rocketmq.apache.org/ 。

  • Github :https://github.com/apache/rocketmq 。

Dubbo

22430ad22936c3b31eafe462d61c7216.png

Apache Dubbo |ˈdʌbəʊ| 是一款高性能、轻量级的开源 Java RPC 框架。

根据 Dubbo 官方文档的介绍,Dubbo 提供了六大核心能力

  1. 面向接口代理的高性能 RPC 调用。

  2. 智能容错和负载均衡。

  3. 服务自动注册和发现。

  4. 高度可扩展能力。

  5. 运行期流量调度。

  6. 可视化的服务治理与运维。

73404d1e76a4da008f1b894f3e2723df.png

Dubbo提供的六大核心能力

简单来说就是:Dubbo 不光可以帮助我们调用远程服务,还提供了一些其他开箱即用的功能比如智能负载均衡。

  • 官方文档:https://dubbo.apache.org/zh/ 。

  • Github :https://github.com/apache/dubbo 。

Seata

d158e93fc80de44b8191464f55db5ba0.png

Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。

数据库事务可以保证多个对数据库的操作(也就是 SQL 语句)构成一个逻辑上的整体。构成这个逻辑上的整体的这些数据库操作遵循:要么全部执行成功,要么全部不执行

ad1d1b40278a3203906622869e7659b2.png

但是,微服务架构下,一个系统被拆分为多个小的微服务。每个微服务都可能存在不同的机器上,并且每个微服务可能都有一个单独的数据库供自己使用。这种情况下,一组操作可能会涉及到多个微服务以及多个数据库。

这个时候单单依靠数据库事务就不行了!我们就需要引入 分布式事务 这个概念了!

实际上,除了我们上面提到的 服务拆分(微服务) 的场景,像 数据库水平拆分(分库分表) 这种场景的话也是需要引入分布式事务的。

一言蔽之,分布式事务的终极目标就是保证系统中多个数据库中的数据的一致性!

分布式事务的解决方案有很多,比如:2PC3PCTCC本地消息表MQ 事务Saga 等等。

  • 官网 :http://seata.io/zh-cn/ 。

  • Github :https://github.com/seata/seata 。

相关阅读:

  • Seata 分布式事务实践和开源详解 | GIAC 实录[4] :这篇文章是蚂蚁金服技术专家、分布式事务 Seata 发起者之一张森(花名:绍辉)在 GIAC 全球互联网架构大会的分享。文章内容详细介绍了分布式事务问题产生原因以及蚂蚁金服的应对措施(分布式事务 Seata 的 AT、TCC、Saga 和 XA 四种模式)。

P3C

P3C 项目包含了阿里巴巴 Java 开发手册(整合了阿里巴巴技术团队多年来的最佳编程实践)以及配套的 IDE 插件。

  • P3C-PMD :https://github.com/alibaba/p3c/tree/master/p3c-pmd

  • IDEA 插件 :https://github.com/alibaba/p3c/tree/master/idea-plugin

  • Eclipse 插件 :https://github.com/alibaba/p3c/tree/master/eclipse-plugin

这里我们以 IDEA 插件为例。

对应的 IDEA 插件名称是 Alibaba Java Code Guidelines。

安装完成之后建议将与语言替换成中文,提示更加友好一点。

2722460ba3d37c2af13fa744ee548bbb.png

根据官方描述:

目前这个插件实现了开发手册中的的 53 条规则,大部分基于 PMD 实现,其中有 4 条规则基于 IDEA 实现,并且基于 IDEA Inspection 实现了实时检测功能。部分规则实现了 Quick Fix 功能,对于可以提供 Quick Fix 但没有提供的,我们会尽快实现,也欢迎有兴趣的同学加入进来一起努力。目前插件检测有两种模式:实时检测、手动触发。

你还可以手动配置相关 inspection 规则:

7ce751ed5595bf660a9e22e093e18fbb.png

这个插件会实时检测出我们的代码不匹配它的规则的地方,并且会给出修改建议。比如我们按照下面的方式去创建线程池的话,这个插件就会帮我们检测出来,如下图所示。

58a3c18069621cddc9b618e85e3caf48.png

Alink

Alink 是基于 Flink 的通用算法平台,由阿里巴巴计算平台 PAI 团队研发。Alink 已在阿里巴巴内部支持了众多的应用场景,并在 2019 年 11 月的 Flink Forward Asia 大会上宣布开源。

Alink 提供了一系列算法,可以帮助处理各种机器学习任务比如模型选择和调参、个性化推荐、异常检测。

Alink 覆盖了机器学习核心的三类算法:分类算法、聚类算法、回归算法。并且,还包括联规则和协同过滤算法、相似度算法等数据挖掘方面算法。

95c8d3350ab708a2ad6061ce4746cb3e.png

Alink 开源算法列表
  • Github :https://github.com/alibaba/Alink 。

  • 官方文档 :https://www.yuque.com/pinshu/alink_doc

  • 使用指南:https://www.yuque.com/pinshu/alink_guide

  • Alink 插件下载器 :https://www.yuque.com/pinshu/alink_guide/czg4cx

COLA

COLA 是 Clean Object-Oriented and Layered Architecture 的缩写,代表“整洁面向对象分层架构”。COLA 可以帮助开发人员快速实践 DDD 落地的项目架构。

Github : https://github.com/alibaba/COLA 。

相关阅读:COLA 4.0:应用架构的最佳实践[5]

TestableMock

一款极简风格的 Mock 测试工具。无需初始化,不挑服务框架,甭管要换的是私有方法、静态方法、构造方法还是其他任何类的任何方法,也甭管要换的对象是怎么创建的。写好 Mock 定义,加个@MockMethod注解,一切统统搞定。

  • Github : https://github.com/alibaba/testable-mock

  • 文档 :https://alibaba.github.io/testable-mock/

  • 国内文档镜像 :http://freyrlin.gitee.io/testable-mock/

Compileflow

一个非常轻量、高性能、可集成、可扩展的流程引擎,淘宝工作流TBBPM引擎之一。

Compileflow 专注于纯内存执行,无状态的流程引擎,通过将流程文件转换生成java代码编译执行,简洁高效。当前是阿里业务中台交易等多个核心系统的流程引擎。

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

  • 官方 Demo : https://github.com/compileflow/compileflow-demo 。

  • 基于 IntelliJ IDEA 流程可视化插件 : https://github.com/alibaba/compileflow-idea-designer

参考资料

[1]

《MySQL Master-Slave Replication on the Same Machine》: https://www.toptal.com/mysql/mysql-master-slave-replication-tutorial

[2]

https://github.com/alibaba/druid/wiki/常见问题: https://github.com/alibaba/druid/wiki/常见问题

[3]

https://sentinelguard.io/zh-cn/docs/introduction.html: https://sentinelguard.io/zh-cn/docs/introduction.html

[4]

Seata 分布式事务实践和开源详解 | GIAC 实录: https://www.sofastack.tech/blog/seata-distributed-transaction-deep-dive/

[5]

COLA 4.0:应用架构的最佳实践: https://blog.csdn.net/significantfrank/article/details/110934799

有道无术,术可成;有术无道,止于术

欢迎大家关注Java之道公众号

18505904d185a7ca398cabdb27cd6c55.png

好文章,我在看❤️

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值