阿里开源的15个顶级Java项目!!!
Canal
Canal[k?'n?l] 翻譯過來是水道/管道/溝渠的意思,主要用于基于 MySQL 數據庫增量日志解析,提供增量數據訂閱和消費。
Canal 可以幫助我們實現 MySQL 和其他數據源比如 Elasticsearch、Kafka、RocketMQ 或者另外一臺 MySQL 數據庫之間的數據同步。Canal 的底層原理依賴 binlog,它會模擬 MySQL 主從復制的過程,解析 binlog 將數據同步到其他的數據源。
MySQL binlog(binary log 即二進制日志文件) 主要記錄了 MySQL 數據庫中數據的所有變化(數據庫執行的所有 DDL 和 DML 語句)。因此,我們根據主庫的 MySQL binlog 日志就能夠將主庫的數據同步到從庫中。
更具體和詳細的過程是這個樣子的(圖片來自于:《MySQL Master-Slave Replication on the Same Machine》[1]):
MySQL主從復制主庫將數據庫中數據的變化寫入到 binlog
從庫連接主庫
從庫會創建一個 I/O 線程向主庫請求更新的 binlog
主庫會創建一個 binlog dump 線程來發送 binlog ,從庫中的 I/O 線程負責接收
從庫的 I/O 線程將接收的 binlog 寫入到 relay log 中。
從庫的 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 的:
官方文檔 :https://www.yuque.com/easyexcel 。
Github :https://github.com/alibaba/easyexcel 。
Arthas
arthasArthas 是阿里開源的一個 Java 診斷工具,能夠分析、診斷、定位 Java 應用問題。
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
Arthas在線教程官網 :https://arthas.aliyun.com/zh-cn/ 。
Github :https://github.com/alibaba/arthas 。
FastJson
FastJson 是阿里的開源一個 JSON 解析庫,其底層使用了 ASM 來動態生成類。Fastjson 的速度非常快,不過,快的同時也帶來一些潛在的安全問題。
FastJson 幾乎是作者溫少大佬一個人開發和維護的,真心厲害!佩服!
知乎上有網友說:"溫少幾乎憑一己之力撐起了一個被廣泛使用 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
Sentinel 是阿里巴巴體提供的面向分布式服務架構的流量控制組件,主要以流量為切入點,提供 流量控制、熔斷降級、系統自適應保護等功能來保護系統的穩定性和可用性。
官方文檔:https://sentinelguard.io/zh-cn/docs/introduction.html[3] 。
Github :https://github.com/alibaba/Sentinel 。
Nacos
Nacos 是一個更易于構建云原生應用的動態服務發現、配置管理和服務管理平臺。
我這里簡單對 Nacos 官網對 Nacos 的介紹總結了一下:
Nacos 主要用于發現、配置和管理微服務:Nacos 是 Spring Cloud Alibaba 提供的服務注冊發現組件,類似于 Consul、Eureka。并且,提供了分布式配置管理功能。
Nacos 名字的含義 :Na 即是 Naming(注冊中心),co 即是 Configuration(配置管理),最后的 s 即是 Service。
Nacos 的關鍵特性包括:
服務發現和服務健康監測
動態配置服務 :提供能很多開箱即用的配置管理特性比如一鍵回滾配置、版本跟蹤、金絲雀發布等等。并且,內置了簡潔易用的 UI。
動態 DNS 服務 ?:動態 DNS 服務支持權重路由,讓您更容易地實現中間層負載均衡、更靈活的路由策略、流量控制以及數據中心內網的簡單 DNS 解析服務。
服務及其元數據管理
......
Nacos 生態圖如下,可以看出 Nacos 無縫支持一些主流的開源生態如 Spring Cloud、Dubbo、K8S 等等。
官網:https://nacos.io/zh-cn/index.html 。
Github :https://github.com/alibaba/nacos 。
RocketMQ
RocketMQ 是一款高性能、高可靠、高實時、分布式的消息隊列,由阿里巴巴團隊開發,在 2016 年底貢獻給 Apache 并且順利成為了 Apache 的一個頂級項目。
官網 :https://rocketmq.apache.org/ 。
Github :https://github.com/apache/rocketmq 。
Dubbo
Apache Dubbo |?d?b??| 是一款高性能、輕量級的開源 Java RPC 框架。
根據 Dubbo 官方文檔的介紹,Dubbo 提供了六大核心能力
面向接口代理的高性能 RPC 調用。
智能容錯和負載均衡。
服務自動注冊和發現。
高度可擴展能力。
運行期流量調度。
可視化的服務治理與運維。
簡單來說就是:Dubbo 不光可以幫助我們調用遠程服務,還提供了一些其他開箱即用的功能比如智能負載均衡。
官方文檔:https://dubbo.apache.org/zh/ 。
Github :https://github.com/apache/dubbo 。
Seata
Seata 是一款開源的分布式事務解決方案,致力于在微服務架構下提供高性能和簡單易用的分布式事務服務。
數據庫事務可以保證多個對數據庫的操作(也就是 SQL 語句)構成一個邏輯上的整體。構成這個邏輯上的整體的這些數據庫操作遵循:要么全部執行成功,要么全部不執行 。
但是,微服務架構下,一個系統被拆分為多個小的微服務。每個微服務都可能存在不同的機器上,并且每個微服務可能都有一個單獨的數據庫供自己使用。這種情況下,一組操作可能會涉及到多個微服務以及多個數據庫。
這個時候單單依靠數據庫事務就不行了!我們就需要引入 分布式事務 這個概念了!
實際上,除了我們上面提到的 服務拆分(微服務) 的場景,像 數據庫水平拆分(分庫分表) 這種場景的話也是需要引入分布式事務的。
一言蔽之,分布式事務的終極目標就是保證系統中多個數據庫中的數據的一致性!
分布式事務的解決方案有很多,比如:2PC、3PC、TCC、本地消息表、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。
安裝完成之后建議將與語言替換成中文,提示更加友好一點。
根據官方描述:
目前這個插件實現了開發手冊中的的 53 條規則,大部分基于 PMD 實現,其中有 4 條規則基于 IDEA 實現,并且基于 IDEA Inspection 實現了實時檢測功能。部分規則實現了 Quick Fix 功能,對于可以提供 Quick Fix 但沒有提供的,我們會盡快實現,也歡迎有興趣的同學加入進來一起努力。目前插件檢測有兩種模式:實時檢測、手動觸發。
你還可以手動配置相關 inspection 規則:
這個插件會實時檢測出我們的代碼不匹配它的規則的地方,并且會給出修改建議。比如我們按照下面的方式去創建線程池的話,這個插件就會幫我們檢測出來,如下圖所示。
Alink
Alink 是基于 Flink 的通用算法平臺,由阿里巴巴計算平臺 PAI 團隊研發。Alink 已在阿里巴巴內部支持了眾多的應用場景,并在 2019 年 11 月的 Flink Forward Asia 大會上宣布開源。
Alink 提供了一系列算法,可以幫助處理各種機器學習任務比如模型選擇和調參、個性化推薦、異常檢測。
Alink 覆蓋了機器學習核心的三類算法:分類算法、聚類算法、回歸算法。并且,還包括聯規則和協同過濾算法、相似度算法等數據挖掘方面算法。
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之道公眾號
好文章,我在看??
總結
以上是生活随笔為你收集整理的阿里开源的15个顶级Java项目!!!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一文详解,RocketMQ事务消息
- 下一篇: 噢,老天爷! 属于Java的协程终于来了