嘘~ 小破站正在拼命加载中 . . .

强烈推荐,阿里开源的Java项目top10


写在前面

如果你是一名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 可以监控数据库的访问情况,就像你检查水管有没有问题一样,让你及时发现并解决问题。

    sql监控

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

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

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

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

  7. 易用性:安装和使用 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 文件,不会一次性将整个文件加载到内存中,因此可以处理包含百万行数据的大文件,而不会导致内存溢出。

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

    内存占用

  2. 易用性

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

⑤ 使用

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

传送门

TOP2 arthas

① 简介

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

② 开源地址

https://github.com/alibaba/arthas

③目前stars数

35.1k

④ 特点

  1. 方法跟踪

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

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

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

    • 提供了线程堆栈信息、线程状态和锁信息,帮助分析线程死锁和阻塞等问题。
  5. 内存泄漏检测

    • 可以分析对象的引用关系,查找可能的内存泄漏点。
  6. 代码热更新

    • 支持代码热更新,可以在不停机的情况下更新类的实现。
  7. 丰富的命令行工具

    • Arthas 提供了诸如 trace, watch, thread, dashboard, telnet 等命令,涵盖了 Java 应用诊断的各个方面。
  8. 自动补全和历史记录

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

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

    idea中安装arthas

  10. 跨平台

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

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

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

架构图如下

Dubbo架构图

本期内容到这儿就结束了 ★,°:.☆( ̄▽ ̄)/$:.°★ 。 希望对您有所帮助

我们下期再见 ヾ(•ω•`)o (●’◡’●)


文章作者: xiezhr
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 xiezhr !
评论
  目录