写点什么

强烈推荐!!!阿里旗下 10 款顶级开源项目

作者:EquatorCoco
  • 2024-07-22
    福建
  • 本文字数:6810 字

    阅读完需:约 22 分钟

写在前面


如果你是一名 Java 开发者,下面说到的这些开源项目应该不陌生了。在实际工作中或多或少都用到过。

趁着周末,特地整理下阿里巴巴旗下开源的 10 款顶级项目


TOP10 rocketmq


① 简介

RocketMQ是一个分布式消息中间件。专门负责在不同的软件系统之间传递消息

最初由阿里巴巴开发并在 2012 年开源,在 2017 年,RocketMQ成为了 Apache 软件基金会的顶级项目。

RocketMQ不仅在阿里巴巴内部广泛使用,也被许多其他公司采用,适用于各种场景,如金融交易、电商订单处理、日志聚合、流数据处理等


② 开源地址

https://github.com/apache/rocketmq


③ 目前 stars 数

20.8k ⭐


④ 特点,为了能直观说明其特点,这里我们以快递小哥为例来说明

  1. 速度快: 就像快递小哥不再骑自行车送快递,而是骑的电动车,RocketMQ 处理消息的速度非常快,可以同时处理很多消息。

  2. 靠谱: 即使遇到刮风下雨,快递小哥也会想尽办法把快递送到。RocketMQ 也有类似的能力,即使系统出了点问题,它也能确保消息不会丢失,可靠地送达。

  3. 灵活: 快递小哥可以根据不同的需求,选择不同的路线和方式送快递。RocketMQ 也可以根据需要,灵活地部署和配置,适应不同的使用场景。

  4. 能存很多东西: 快递仓库可以放很多快递包裹。RocketMQ 也能存储大量的信息,即使一下子来了很多消息,它也能先存起来,慢慢地发送。

  5. 有序: 快递小哥送快递时,相同地址的快递会放在一起送。RocketMQ 也能让相同业务的消息按照顺序一个接一个地处理。

  6. 延时服务: 有时候我们会选择定时派送服务,比如让快递明天再送。RocketMQ 也支持这种延时发送消息的功能。

  7. 过滤服务: 快递小哥在送快递时,会根据收件人的要求只送特定的快递。RocketMQ 也允许消费者只接收他们感兴趣的消息。

  8. 处理复杂情况: 如果快递在途中遇到问题,快递公司会有一套办法来处理。RocketMQ 也有类似的机制,比如消息发送失败了可以重试,或者把消息放到一个特殊的地方等待处理。

  9. 容易监控: 快递公司会有系统来监控快递的状态。RocketMQ 也有这样的监控系统,可以实时查看消息处理的状态和性能。


TOP9 Sentinel


① 简介

Sentinel 是阿里巴巴开源的一个流量控制框架,就像餐厅或者旅游景点控制流量的“门卫”一样,专门用来保护你的软件服务不被过多的请求压垮


② 开源地址

https://github.com/alibaba/Sentinel


③ 目前 stars 数

22.2k ⭐


④ 特点

想象一下,你开了一家餐厅,生意特别火,每天都有很多人来吃饭。但是,餐厅的接待能力是有限的,不可能一下子接待所有的顾客。这时候,你需要一个“门卫”,来控制进店的顾客数量,保证餐厅的服务质量不受影响。这个“门卫”,在软件世界里,就是 Sentinel

它主要有以下几个作用:

  1. 流量控制:就像餐厅的门卫控制进店的顾客数量一样,Sentinel可以控制进入你的软件服务的请求数量。如果请求太多,它就会拒绝一些请求,避免系统崩溃。

  2. 熔断机制:如果你的餐厅厨房突然出了问题,门卫会告诉顾客暂时不要进店,等厨房修好了再继续营业。Sentinel 也有类似的功能,当系统出现问题时,它可以暂时停止服务,避免问题进一步扩大。

  3. 系统保护:餐厅的门卫不仅要控制人数,还要保护餐厅的安全。Sentinel 也可以监控系统的运行状态,一旦发现系统负载过高,就会采取措施保护系统,比如减少请求量。

  4. 灵活配置:餐厅的门卫可以根据实际情况调整接待策略,比如节假日人多就多接待一些。Sentinel 也支持灵活配置,你可以根据需要调整流量控制的策略。

  5. 实时监控:餐厅的门卫需要随时了解店内的情况,Sentinel 也有实时监控的功能,可以实时查看系统的运行状态和流量情况。

  6. 易于集成:就像餐厅的门卫不需要顾客做太多配合一样,Sentinel 也很容易集成到现有的系统中,不需要做太多的改动。

总之,Sentinel 就像是一个智能的“门卫”,帮助你管理软件服务的流量,保证系统的稳定运行。

功能概述 如下图所示



TOP8 fastjson


① 简介

fastjson 是一个由阿里巴巴开发并开源的高性能JSON 处理库,主要用于 Java 应用程序。

它的设计目标是在保证速度的同时简化JSON数据的序列化和反序列化过程


② 开源地址

https://github.com/alibaba/fastjson


③目前 stars 数

25.7k ⭐


④ 特点

  1. 高性能FastJSON 通过优化算法和减少反射调用等方式,实现了非常快的 JSON 序列化和反序列化速度。它在处理大量数据时表现出色,尤其适合高并发和大数据量的场景。

  2. 轻量级FastJSON没有外部依赖,可以直接在任何使用 JDK 的环境中运行,无需添加额外的 jar 文件。

  3. 功能丰富:支持 Java 中常见的数据类型,包括基本类型、JavaBeans、集合、Map、日期、枚举和泛型等。支持 JSON 格式的数据处理,包括解析、生成和修改 JSON 字符串。

  4. 安全性FastJSON 在安全方面持续改进,修复了多个潜在的安全漏洞,以防止反序列化攻击等安全风险。

  5. 易用性:提供了简洁的 API 接口,使得JSON 数据的处理变得简单直观。支持自定义序列化器和反序列化器,以便处理复杂的数据结构或特殊需求。

  6. 开源许可:使用 Apache License 2.0 许可证发布,这意味着它是完全免费的,可以用于商业项目。

fastjson的评价,网络上可是褒贬不一,曾经爆出过存在安全漏洞及 bug

处于这些原因,作者也是推出了FastJson2,在FastJson上做了重大版本更新,旨在解决之前提出的安全性问题及 bug 修复,同时还增加了一些新特性及性能也得到了提升。

下面是FastJson2开源地址

https://github.com/alibaba/fastjson2

目前已有3.6k ⭐


TOP7 spring-cloud-alibaba


① 简介

spring-cloud-alibaba是一套基于 Spring Cloud 和阿里巴巴中间件的微服务开发解决方案。


② 开源地址

https://github.com/alibaba/spring-cloud-alibaba


③目前 stars 数

27.6k ⭐


④ 特点

想象一下,你是一个餐厅老板,你的餐厅需要提供各种服务,比如点餐、支付、送外卖等。

但是,这些服务不是一下子就能搞定的,你需要很多工具和帮手。

Spring Cloud Alibaba 就像是你开餐厅时的“一站式服务超市”,提供了你需要的所有工具和帮手。

  1. 一站式服务: 提供了一整套工具和框架,帮助你轻松搭建和管理分布式系统。就像你在一个超市里可以买到所有开餐厅需要的东西一样。

  2. 分布式系统:如果你的餐厅有很多分店,每个分店都需要独立运作,但又需要互相协作。Spring Cloud Alibaba 可以帮助你管理这些分店,确保它们能够协同工作。

  3. 服务发现:就像你需要知道每个分店的位置一样,Spring Cloud Alibaba有一个功能叫做“服务发现”,可以帮你找到系统中的各个服务组件。

  4. 配置管理:餐厅的菜单和价格可能会变,Spring Cloud Alibaba 可以帮你管理这些变化,确保所有分店的菜单和价格都是最新的。

  5. 负载均衡:餐厅的客流量大时,需要合理分配顾客到不同的服务员那里。Spring Cloud Alibaba 也有类似的功能,可以帮你合理分配请求,避免某个服务组件过载。

  6. 断路器:就像餐厅在遇到问题时会暂时停止服务一样,Spring Cloud Alibaba 提供了“断路器”功能,当某个服务组件出现问题时,可以暂时切断它的服务,避免影响整个系统。

  7. 消息队列:餐厅在处理订单时,可能需要传递很多信息。Spring Cloud Alibaba 支持消息队列,帮助你在不同的服务组件之间传递消息。

  8. 易于集成:就像超市里的商品可以直接拿回家用一样,Spring Cloud Alibaba 也很容易集成到你的系统中,不需要太多的改动。

总之,Spring Cloud Alibaba就像是你开餐厅时的“万能工具箱”,提供了你需要的所有工具和服务,帮助你轻松管理复杂的分布式系统。


TOP6 Druid


① 简介

Druid 是阿里巴巴开源的一款高性能的 Java 数据库连接池和 SQL 监控工具


② 开源地址

https://github.com/alibaba/druid


③目前 stars 数

27.8k ⭐


④ 特点

Druid 就像是你家里的水管系统。想象一下,如果你住在一个很大的房子里,有很多水龙头,你需要一个系统来确保每个水龙头都能正常供水,而且水压要合适,水管还要结实耐用。

  1. 高效Druid 特别高效,就像你家里的水管系统,水能快速流到每一个水龙头,Druid 也能快速处理数据库的请求。

  2. 监控:水管系统如果漏水或者堵塞,你会很头疼。Druid 可以监控数据库的访问情况,就像你检查水管有没有问题一样,让你及时发现并解决问题。



  1. 连接池Druid 提供了一个连接池,这就像是你家里有很多备用水管,需要用水的时候,直接拿一个来用,用完再放回去,不用每次都去新买一根水管。

  2. 安全性:水管如果随便接,可能会漏水或者影响其他水龙头的使用。Druid可以加密数据库的密码,保护你的数据不被外人随便访问。

  3. 灵活性:水管系统需要适应不同的情况,比如有时候需要分流,有时候需要增压。Druid也很灵活,可以根据不同的数据库操作需求进行调整。

  4. SQL日志:就像你会记录家里每个月的用水量,Druid 可以记录执行的SQL语句,帮助你分析和优化数据库的使用。

  5. 易用性:安装和使用 Druid 就像安装家里的水管系统一样,不需要太复杂的操作,按照说明一步步来就行。

总之,Druid 就像是一个高级的水管系统,不仅保证你的数据库操作高效、安全,还能帮你监控和管理数据流动,让数据库的使用更加顺畅和可靠。


TOP5 canal


① 简介

Canal是阿里巴巴开源的一个数据同步工具,它的主要作用是“监控”和“同步”数据库的变化


② 开源地址

https://github.com/alibaba/canal


③目前 stars 数

28.1k ⭐


④ 特点

想象一下,你有一个大鱼塘,里面养了很多鱼。

但是,你想知道鱼塘里到底发生了什么,比如哪些鱼长大了,哪些鱼生病了,或者有没有新鱼进来。

这时候,你需要一个“水下观察站”,帮你监控鱼塘里的情况。

Canal就充当了“水下观察站”的角色

  1. 数据变化监控:就像你用观察站监控鱼塘,Canal 监控数据库的变化,比如数据的增加、删除、修改等。

  2. 实时同步:如果鱼塘里发生了新情况,你肯定希望立刻知道。

    Canal 可以实时地把数据库的变化同步到别的地方,比如另一个数据库或者消息队列。

  3. 增量订阅:你不需要知道鱼塘里所有鱼的情况,可能只关心新进来的鱼或者生病的鱼。

    Canal 支持增量订阅,只同步你关心的数据变化。

  4. 易于扩展:如果你的鱼塘越来越大,一个观察站可能不够用。

    Canal 很容易扩展,可以增加更多的“观察站”来满足需求。

  5. 多种数据库支持:你的鱼塘可能有很多种类的鱼,Canal 支持多种数据库,比如 MySQLOracle 等。

  6. 轻量级:虽然功能强大,但 Canal 很轻量级,不会占用太多资源,就像一个小巧的观察站,不会影响鱼塘的生态。

  7. 易用性:搭建和使用 Canal 就像搭建一个观察站一样,按照说明一步步来,不需要太复杂的操作。

总之,Canal 就像一个高效的“水下观察站”,帮你实时监控和同步数据库的变化,让你对数据流动的情况了如指掌。


TOP4 nacos


① 简介

Nacos 是一个服务发现与配置管理平台,旨在帮助开发者更轻松地构建、部署和管理云原生应用。

目前国内大部分公司都在使用


② 开源地址

https://github.com/alibaba/nacos


③目前 stars 数

29.6k ⭐


④ 特点

想象一下,你是一个大型购物中心的经理。

这个购物中心有很多店铺,每个店铺都有自己的营业时间和服务内容。

你需要一个系统来管理这些店铺,确保顾客能够找到他们需要的服务。

Nacos像是你管理购物中心的“智能助手”。它主要做以下几件事:

  1. 服务发现:就像顾客需要知道哪些店铺开门了,Nacos 可以帮助你的应用程序发现系统中的其他服务。比如,一个在线购物网站需要知道支付服务和物流服务是否可用。

  2. 服务配置:每个店铺可能有不同的服务标准和价格。Nacos 可以管理这些配置信息,确保所有的服务都按照统一的标准运行。

  3. 服务管理:购物中心的店铺需要定期检查和维护。Nacos 可以帮助你管理和维护系统中的服务,比如自动重启失败的服务或者扩展服务的容量。

  4. 流量管理:购物中心在节假日可能会迎来大量顾客。Nacos 可以通过流量控制和负载均衡,确保所有的服务都能够平稳运行,不会因为突然增加的请求而崩溃。

  5. 服务健康检查:就像你需要定期检查店铺的卫生和服务质量,Nacos 可以监控服务的健康状态,及时发现并处理问题。

  6. 易于集成:就像购物中心可以很容易地增加新的店铺,Nacos 也很容易集成到现有的系统中,不需要做太多的改动。

  7. 跨语言支持:购物中心可能有不同的店铺类型,比如餐厅、服装店、电子产品店。Nacos 支持多种编程语言,比如 Java.NETGo 等,适合各种类型的服务。

总之,Nacos 就像是一个智能的购物中心管理系统,帮助你轻松管理复杂的微服务架构,确保所有的服务都能够高效、稳定地运行。


TOP3 easyexcel


① 简介

EasyExcel 是一个专门用于处理 Excel文件。

Java 解析、生成 Excel 比较有名的框架有Apache poijxl。但他们都存在一个严重的问题就是非常的耗内存,poi 有一套 SAX 模式的 API 可以一定程度的解决一些内存溢出的问题,但 POI 还是有一些缺陷,比如 07 版 Excel 解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。easyexcel重写了 poi 对 07 版 Excel 的解析,一个 3M 的 excel 用 POI sax 解析依然需要 100M 左右内存,改用 easyexcel 可以降低到几 M,并且再大的 excel 也不会出现内存溢出;03 版依赖 POI 的 sax 模式,在上层做了模型转换的封装,让使用者更加简单方便


② 开源地址

https://github.com/alibaba/easyexcel


③目前 stars 数

31.5k ⭐


④ 特点

  1. 低内存消耗

EasyExcel 通过流式读写 Excel 文件,不会一次性将整个文件加载到内存中,因此可以处理包含百万行数据的大文件,而不会导致内存溢出。

  1. 16M 内存 23 秒读取 75M(46W 行 25 列)的 Excel



  1. 易用性

提供了简洁的 API,使得读写 Excel 文件变得简单直观,减少了开发工作量。


⑤ 使用

easyexcel的使用在之前的文章中介绍过,感兴趣的小伙伴可以看过来


TOP2 arthas


① 简介

一款强大的 Java 诊断工具,当遇到复杂或难以复现的故障时,Arthas绝对可以帮助到你


② 开源地址

https://github.com/alibaba/arthas


③目前 stars 数

35.1k ⭐


④ 特点

  1. 方法跟踪

可以查看方法的执行轨迹,包括调用层级、耗时、参数和返回值,帮助理解方法的执行流程和性能瓶颈。

  1. 类和方法字节码修改

允许在运行时修改类和方法的字节码,无需重新编译和部署应用,便于快速验证代码修改的效果。

  1. JVM 参数调整

可以在线修改 JVM 参数,如垃圾回收策略、堆大小等,以优化应用性能或解决内存泄漏等问题。

  1. 线程分析

提供了线程堆栈信息、线程状态和锁信息,帮助分析线程死锁和阻塞等问题。

  1. 内存泄漏检测

可以分析对象的引用关系,查找可能的内存泄漏点。

  1. 代码热更新

支持代码热更新,可以在不停机的情况下更新类的实现。

  1. 丰富的命令行工具

Arthas 提供了诸如 tracewatchthreaddashboardtelnet 等命令,涵盖了 Java 应用诊断的各个方面。

  1. 自动补全和历史记录

Arthas 的命令行界面支持 Tab 键自动补全和命令历史记录,提高了使用效率。

  1. IDEA 插件

提供了IntelliJ IDEA 插件,可以更方便地在 IDE 内部使用 Arthas 进行诊断。



  1. 跨平台

Arthas 可以在 LinuxmacOS 和 Windows 等平台上运行,适用于各种开发和生产环境。


至于怎么使用,由于文章篇幅原因,这里就不展开了。如果小伙伴们感兴趣,可以在后面的文章中说一说。

TOP1 dubbo


① 简介

一个高性能的 Java RPC 框架,用来帮助不同的服务之间进行通信

并于 2008 年开源。2017 年,Dubbo 正式成为 Apache 软件基金会的顶级项目。


② 开源地址

https://github.com/apache/dubbo


③目前 stars 数

40.3k ⭐


④ 特点

想象一下,你开了一家餐厅,生意非常火爆。

为了提高效率,你决定把一些工作外包出去,比如让附近的面包店帮你做面包,让附近的蔬菜供应商每天给你送新鲜的蔬菜。

但是,你和这些供应商之间的沟通需要一个系统来协调和管理,这就是 Dubbo 的作用。

  1. 远程调用:就像你给供应商打电话下订单,Dubbo允许你的程序远程调用其他服务的方法,就像是直接调用本地方法一样简单。

  2. 服务注册与发现:你的餐厅需要知道哪些供应商是可用的,Dubbo 提供了一个服务注册中心,供应商(服务提供者)会在这里注册自己,你的餐厅(服务消费者)可以发现这些供应商。

  3. 负载均衡:假设你有多个面包供应商,Dubbo 可以帮助你决定从哪个供应商那里采购面包,以平衡每个供应商的负载,避免某个供应商过载。

  4. 容错机制:如果某个供应商突然不能供货了,Dubbo可以帮助你的餐厅自动切换到其他供应商,确保餐厅的运营不受影响。

  5. 监控和管理Dubbo 提供了丰富的监控和管理工具,让你可以实时了解各个服务的状态,比如响应时间、调用次数等。

  6. 扩展性:随着餐厅生意的扩展,你可能需要更多的供应商。Dubbo的设计使得扩展服务变得非常容易,你可以轻松地增加新的服务或者修改现有的服务。

  7. 协议支持Dubbo 支持多种通信协议,比如 Dubbo 协议、RMI 协议等,就像是你和供应商可以通过电话、邮件或者微信等多种方式沟通。

  8. 易于集成:就像是你可以很容易地和新的供应商建立合作关系,Dubbo 也很容易集成到现有的 Java 应用中,不需要太多的改动。

总之,Dubbo 就像是你餐厅的“供应链协调员”,帮助你高效、可靠地管理和协调与各个服务提供者的通信,确保你的餐厅能够顺利运营。

架构图如下



文章转载自:程序员晓凡

原文链接:https://www.cnblogs.com/xiezhr/p/18315275

体验地址:http://www.jnpfsoft.com/?from=infoq

用户头像

EquatorCoco

关注

还未添加个人签名 2023-06-19 加入

还未添加个人简介

评论

发布
暂无评论
强烈推荐!!!阿里旗下10款顶级开源项目_开源_EquatorCoco_InfoQ写作社区