阿里开源生态系列分享

阿里巴巴相关的开源生态,在不少中小公司得到了大量的实践落地,当然了,问题也不少,尤其是FastJson时不时就出现漏洞。虽然如此,但不可否认的是阿里巴巴这几年在技术方面对这个行业的贡献是不可磨灭的(当然了,”996福报”这个例外,本人非常痛恨996)。下面开始分享阿里开源生态系列(排名不分先后),所有的技术源代码均开源。

一、Druid

为监控而生的数据库连接池。早年我在创业公司的时候就曾应用过它。如今在M2公司做架构相关,仍然使用其作为数据库连接池。

Druid源代码:
https://github.com/alibaba/druid

Druid常见问题:
https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98

二、FastJson

FastJson从创业公司到M2公司均应用过。因为FastJson1.x版本相关bug问题,建议使用FastJson2.x版本,使用FastJson,也要特别关注(定期关注FastJson相关,减少可能坏的影响),也许有朋友担心,FastJson时不时有漏洞,可能会造成不利的影响,但在我看来,不可过于忧虑,任何的开源项目,多多少少都会有bug的存在,难道因为可能的几个bug就放弃使用了吗?(如果真按照这样的话,编程技术生态绝不会发展到现在,早就胎死腹中了)

FastJson源代码:
https://github.com/alibaba/fastjson

FastJson文档:
https://github.com/alibaba/fastjson/wiki/Quick-Start-CN

三、Dubbo

Dubbo最早在创业公司应用过,当时主要为了实现分布式OJ相关。Dubbo曾经有一段时间停止维护,而后就趋于正常化了。自从捐献给Apache以后,生态越来越丰富了,不仅仅适用于Java,还有Golang、Rust、Erlang等。

Dubbo官网:
https://cn.dubbo.apache.org/zh/

Dubbo 源代码:
https://github.com/apache/dubbo

四、Nacos

在教育Saas公司的时候,服务注册中心最初是用Eureka Server,而后由于技术总监的决定,由Eureka Server变为Nacos。而后当我来到M2公司之后,基于公司的产品必须支持分布式,对于服务注册中心方面,我仍采用Nacos,从2020年8月到现在,产品不断地稳定迭代。

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

Nacos官方文档:
https://nacos.io/zh-cn/docs/quick-start.html

Nacos 源代码:
https://github.com/alibaba/nacos

五、Seata

在M2公司使用分布式事务,最早是使用Tx-LCN,而后便是Seata。Seata最初搭建起来,很费劲,经过这么个流程下来,记录了文档,相关的归纳为脚本,到现在,就比较轻松了,团队成员只需参考文档,便能知道怎么用。

Seata官网:
https://seata.io/zh-cn/

Seata官方文档:
https://seata.io/zh-cn/docs/overview/what-is-seata.html

Seata 源代码:
https://github.com/seata/seata

六、EasyExcel

EasyExcel最早在创业公司调研过程中使用过,经过当时的调研,觉得EasyExcel不适用于智能酒店产品,最终采用EasyPoi。而后在教育Saas公司关于一些功能的大量的数据导入,用的就是EasyExcel。

EasyExcel官网:
https://easyexcel.opensource.alibaba.com/

EasyExcel文档:
https://easyexcel.opensource.alibaba.com/docs/current/

EasyExcel 源代码:
https://github.com/alibaba/easyexcel

七、Sentinel

随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、流量路由、熔断降级、系统自适应过载保护、热点流量防护等多个维度保护服务的稳定性。在M2公司做架构相关,其中就用到了Sentinel,主要的用途还是熔断降级相关。

Sentinel官网:
https://sentinelguard.io/zh-cn/

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

Sentinel 源代码:
https://github.com/alibaba/Sentinel

八、RocketMQ

RocketMQ是由阿里捐赠给Apache的一款低延迟、高并发、高可用、高可靠的分布式消息中间件。经历了淘宝双十一的洗礼。RocketMQ既可为分布式应用系统提供异步解耦和削峰填谷的能力,同时也具备互联网应用所需的海量消息堆积、高吞吐、可靠重试等特性。在教育Saas公司用到这个,当时我用其做异步解耦相关。在M2公司的时候最初也调研过,最开始是RabbitMQ,而后便是Kafka。

RocketMQ官网:
https://rocketmq.apache.org/zh/

RocketMQ文档:
https://rocketmq.apache.org/zh/docs/

RocketMQ源代码:
https://github.com/apache/rocketmq

九、Arthas

Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。在M2公司做架构相关,我的帮手小L,他在查询某个服务的问题时,用到了Arthas,而后,我也开始在查一些生产或测试环境的问题时,也用到了Arthas。

Arthas官网:
https://arthas.aliyun.com/

Arthas文档:
https://arthas.aliyun.com/doc/

Arthas源代码:
https://github.com/alibaba/arthas

十、Alink

Alink是基于Flink的机器学习算法平台,由阿里巴巴计算平台PAI团队开发。当我快离开教育Saas公司的时候,公司成立了机器学习相关部门,估计可能会用到Alink。

Alink教程(涵盖Java与Python):
https://alinklab.cn/tutorial/index.html

Alink源代码:
https://github.com/alibaba/Alink

十一、COLA

COLA 是 Clean Object-Oriented and Layered Architecture的缩写,代表“整洁面向对象分层架构”。 目前COLA已经发展到COLA v4。我是因为今年阅读了一本书了解到这个开源项目(该书为《代码精进之路:从码农到工匠》)。

COLA源代码:
https://github.com/alibaba/COLA

十二、SpringCloud Alibaba

SpringCloud Alibaba为阿里中间件分布式解决方案提供应用开发一站式解决方案。在M2公司至今,仍然用它,最早1.x版本用它,而后盈利的2.x版本也用它,如今新产品3.x也用它。

官网:
https://spring.io/projects/spring-cloud-alibaba

SpringCloud Alibaba源代码:
https://github.com/alibaba/spring-cloud-alibaba

十三、总结

最后,阿里相关开源生态远远不止上面的十二个,还有其它更多的,这里不一一列举。上面列举的大多为我实际当中应用过,可作为做架构的小伙伴们的Java技术选型参考。

文章目录
  1. 一、Druid
  2. 二、FastJson
  3. 三、Dubbo
  4. 四、Nacos
  5. 五、Seata
  6. 六、EasyExcel
  7. 七、Sentinel
  8. 八、RocketMQ
  9. 九、Arthas
  10. 十、Alink
  11. 十一、COLA
  12. 十二、SpringCloud Alibaba
  13. 十三、总结