強烈推薦!!!阿里旗下10款頂級開源專案

程序员晓凡發表於2024-07-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 可以監控資料庫的訪問情況,就像你檢查水管有沒有問題一樣,讓你及時發現並解決問題。

    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 (●'◡'●)

相關文章