上個周末抽時間整理了一些阿里開源的一些 Java 開源項(xiàng)目,希望對大家有幫助!這篇文章收錄的所有開源項(xiàng)目都是還在繼續(xù)維護(hù)并且可以使用的。
雖然有部分項(xiàng)目不是那么”完美“,但是依然非常值得我們學(xué)習(xí)。
感謝阿里技術(shù)團(tuán)隊(duì)的小伙伴們?yōu)?Java 開源生態(tài)做的貢獻(xiàn)!
Canal
Canal[k?'n?l] 翻譯過來是水道/管道/溝渠的意思,主要用于基于 MySQL 數(shù)據(jù)庫增量日志解析,提供增量數(shù)據(jù)訂閱和消費(fèi)。
Canal 可以幫助我們實(shí)現(xiàn) MySQL 和其他數(shù)據(jù)源比如 Elasticsearch、Kafka、RocketMQ 或者另外一臺 MySQL 數(shù)據(jù)庫之間的數(shù)據(jù)同步。Canal 的底層原理依賴 binlog,它會模擬 MySQL 主從復(fù)制的過程,解析 binlog 將數(shù)據(jù)同步到其他的數(shù)據(jù)源。
添加圖片注釋,不超過 140 字(可選)
MySQL binlog(binary log 即二進(jìn)制日志文件) 主要記錄了 MySQL 數(shù)據(jù)庫中數(shù)據(jù)的所有變化(數(shù)據(jù)庫執(zhí)行的所有 DDL 和 DML 語句)。因此,我們根據(jù)主庫的 MySQL binlog 日志就能夠?qū)⒅鲙斓臄?shù)據(jù)同步到從庫中。
更具體和詳細(xì)的過程是這個樣子的(圖片來自于:《MySQL Master-Slave Replication on the Same Machine》[1]):
添加圖片注釋,不超過 140 字(可選)
MySQL主從復(fù)制
-
主庫將數(shù)據(jù)庫中數(shù)據(jù)的變化寫入到 binlog
-
從庫連接主庫
-
從庫會創(chuàng)建一個 I/O 線程向主庫請求更新的 binlog
-
主庫會創(chuàng)建一個 binlog dump 線程來發(fā)送 binlog ,從庫中的 I/O 線程負(fù)責(zé)接收
-
從庫的 I/O 線程將接收的 binlog 寫入到 relay log 中。
-
從庫的 SQL 線程讀取 relay log 同步數(shù)據(jù)本地(也就是再執(zhí)行一遍 SQL )
-
Wiki : https://github.com/alibaba/canal/wiki 。
-
Github :https://github.com/alibaba/canal 。
EasyExcel
Java 解析、生成 Excel 常用的框架有 Apache poi、jxl ,但是這兩個框架使用起來都不夠優(yōu)雅,并且非常耗內(nèi)存,嚴(yán)重時會導(dǎo)致內(nèi)存溢出。
怎么解決這個問題呢?
推薦你使用阿里開源的 EasyExcel。正如這個項(xiàng)目官網(wǎng)介紹的那樣,這是一款快速、簡單避免 OOM 的 java 處理 Excel 工具。
官方是這樣介紹 EasyExcel的:
添加圖片注釋,不超過 140 字(可選)
-
官方文檔 :https://www.yuque.com/easyexcel 。
-
Github :https://github.com/alibaba/easyexcel 。
Arthas
添加圖片注釋,不超過 140 字(可選)
arthas
Arthas 是阿里開源的一個 Java 診斷工具,能夠分析、診斷、定位 Java 應(yīng)用問題。
添加圖片注釋,不超過 140 字(可選)
Arthas能幫我們解決的一些問題
Arthas 把一些常用的 Java 診斷相關(guān)的功能封裝起來了,提供簡單的命令行操作,功能強(qiáng)大。
Arthas 底層用到了字節(jié)碼編程相關(guān)的技術(shù),簡單看了一下源碼,應(yīng)該是基于 ByteBuddy。
ByteBuddy 是一款強(qiáng)大的 Java 字節(jié)碼增強(qiáng)框架,它提供了一套統(tǒng)一易上手的 Api,簡化了字節(jié)碼編碼的學(xué)習(xí)和使用難度。Byte Buddy 成熟穩(wěn)定,性能也還不錯。像咱們平常經(jīng)常使用 Mockito,Hibernate,Jackson 等知名框架都使用了 Byte Buddy。
Arthas 提供了詳細(xì)的在線教程供我們學(xué)習(xí),非常贊!在線教程地址:https://arthas.aliyun.com/doc/arthas-tutorials.html?language=cn
添加圖片注釋,不超過 140 字(可選)
Arthas在線教程
-
官網(wǎng) :https://arthas.aliyun.com/zh-cn/ 。
-
Github :https://github.com/alibaba/arthas 。
相關(guān)閱讀:
-
使用 Arthas 排查 SpringBoot 詭異耗時的 Bug
-
阿里問題定位神器 Arthas 的騷操作,定位線上 BUG,超給力
FastJson
添加圖片注釋,不超過 140 字(可選)
FastJson 是阿里的開源一個 JSON 解析庫,其底層使用了 ASM 來動態(tài)生成類。Fastjson 的速度非???,不過,快的同時也帶來一些潛在的安全問題。
FastJson 幾乎是作者溫少大佬一個人開發(fā)和維護(hù)的,真心厲害!佩服!
添加圖片注釋,不超過 140 字(可選)
我這里簡單對 Nacos 官網(wǎng)對 Nacos 的介紹總結(jié)了一下:
看到網(wǎng)上有很多人詬病 Fastjson 的漏洞問題,都是做技術(shù)的,希望大家也多給予一些理解吧!
-
Wiki :https://github.com/alibaba/druid/wiki/常見問題[2]
-
Github : https://github.com/alibaba/fastjson
Druid
Druid 是阿里巴巴開發(fā)的號稱為監(jiān)控而生的數(shù)據(jù)庫連接池。和 FastJson 類似,Druid 幾乎也是作者溫少大佬一個人開發(fā)和維護(hù)的。
Github 地址:https://github.com/alibaba/druid 。
Spring Cloud Alibaba 相關(guān)
Sentinel
添加圖片注釋,不超過 140 字(可選)
Sentinel 是阿里巴巴體提供的面向分布式服務(wù)架構(gòu)的流量控制組件,主要以流量為切入點(diǎn),提供 流量控制、熔斷降級、系統(tǒng)自適應(yīng)保護(hù)等功能來保護(hù)系統(tǒng)的穩(wěn)定性和可用性。
添加圖片注釋,不超過 140 字(可選)
-
官方文檔:https://sentinelguard.io/zh-cn/docs/introduction.html[3] 。
-
Github :https://github.com/alibaba/Sentinel 。
Nacos
添加圖片注釋,不超過 140 字(可選)
Nacos 是一個更易于構(gòu)建云原生應(yīng)用的動態(tài)服務(wù)發(fā)現(xiàn)、配置管理和服務(wù)管理平臺。
我這里簡單對 Nacos 官網(wǎng)對 Nacos 的介紹總結(jié)了一下:
-
Nacos 主要用于發(fā)現(xiàn)、配置和管理微服務(wù):Nacos 是 Spring Cloud Alibaba 提供的服務(wù)注冊發(fā)現(xiàn)組件,類似于 Consul、Eureka。并且,提供了分布式配置管理功能。
-
Nacos 名字的含義 :Na 即是 Naming(注冊中心),co 即是 Configuration(配置管理),最后的 s 即是 Service。
Nacos 的關(guān)鍵特性包括:
-
服務(wù)發(fā)現(xiàn)和服務(wù)健康監(jiān)測
-
動態(tài)配置服務(wù) :提供能很多開箱即用的配置管理特性比如一鍵回滾配置、版本跟蹤、金絲雀發(fā)布等等。并且,內(nèi)置了簡潔易用的 UI。
-
動態(tài) DNS 服務(wù) :動態(tài) DNS 服務(wù)支持權(quán)重路由,讓您更容易地實(shí)現(xiàn)中間層負(fù)載均衡、更靈活的路由策略、流量控制以及數(shù)據(jù)中心內(nèi)網(wǎng)的簡單 DNS 解析服務(wù)。
-
服務(wù)及其元數(shù)據(jù)管理
-
......
Nacos 生態(tài)圖如下,可以看出 Nacos 無縫支持一些主流的開源生態(tài)如 Spring Cloud、Dubbo、K8S 等等。
添加圖片注釋,不超過 140 字(可選)
-
官網(wǎng):https://nacos.io/zh-cn/index.html 。
-
Github :https://github.com/alibaba/nacos 。
RocketMQ
添加圖片注釋,不超過 140 字(可選)
RocketMQ 是一款高性能、高可靠、高實(shí)時、分布式的消息隊(duì)列,由阿里巴巴團(tuán)隊(duì)開發(fā),在 2016 年底貢獻(xiàn)給 Apache 并且順利成為了 Apache 的一個頂級項(xiàng)目。
-
官網(wǎng) :https://rocketmq.apache.org/ 。
-
Github :https://github.com/apache/rocketmq 。
Dubbo
添加圖片注釋,不超過 140 字(可選)
Apache Dubbo |?d?b??| 是一款高性能、輕量級的開源 Java RPC 框架。
根據(jù) Dubbo 官方文檔的介紹,Dubbo 提供了六大核心能力
-
面向接口代理的高性能 RPC 調(diào)用。
-
智能容錯和負(fù)載均衡。
-
服務(wù)自動注冊和發(fā)現(xiàn)。
-
高度可擴(kuò)展能力。
-
運(yùn)行期流量調(diào)度。
-
可視化的服務(wù)治理與運(yùn)維。
添加圖片注釋,不超過 140 字(可選)
Dubbo提供的六大核心能力
簡單來說就是:Dubbo 不光可以幫助我們調(diào)用遠(yuǎn)程服務(wù),還提供了一些其他開箱即用的功能比如智能負(fù)載均衡。
相關(guān)閱讀:1w+字的 Dubbo 面試題/知識點(diǎn)總結(jié)?。?021 最新版) 。
-
官方文檔:https://dubbo.apache.org/zh/ 。
-
Github :https://github.com/apache/dubbo 。
Seata
添加圖片注釋,不超過 140 字(可選)
Seata 是一款開源的分布式事務(wù)解決方案,致力于在微服務(wù)架構(gòu)下提供高性能和簡單易用的分布式事務(wù)服務(wù)。
數(shù)據(jù)庫事務(wù)可以保證多個對數(shù)據(jù)庫的操作(也就是 SQL 語句)構(gòu)成一個邏輯上的整體。構(gòu)成這個邏輯上的整體的這些數(shù)據(jù)庫操作遵循:要么全部執(zhí)行成功,要么全部不執(zhí)行 。
添加圖片注釋,不超過 140 字(可選)
但是,微服務(wù)架構(gòu)下,一個系統(tǒng)被拆分為多個小的微服務(wù)。每個微服務(wù)都可能存在不同的機(jī)器上,并且每個微服務(wù)可能都有一個單獨(dú)的數(shù)據(jù)庫供自己使用。這種情況下,一組操作可能會涉及到多個微服務(wù)以及多個數(shù)據(jù)庫。
這個時候單單依靠數(shù)據(jù)庫事務(wù)就不行了!我們就需要引入 分布式事務(wù) 這個概念了!
實(shí)際上,除了我們上面提到的 服務(wù)拆分(微服務(wù)) 的場景,像 數(shù)據(jù)庫水平拆分(分庫分表) 這種場景的話也是需要引入分布式事務(wù)的。
一言蔽之,分布式事務(wù)的終極目標(biāo)就是保證系統(tǒng)中多個數(shù)據(jù)庫中的數(shù)據(jù)的一致性!
分布式事務(wù)的解決方案有很多,比如:2PC、3PC、TCC、本地消息表、MQ 事務(wù)、Saga 等等。
-
官網(wǎng) :http://seata.io/zh-cn/ 。
-
Github :https://github.com/seata/seata 。
相關(guān)閱讀:
-
阿里終面:分布式事務(wù)原理 :1.4 w 字,25 張圖讓你徹底掌握分布式事務(wù)原理。
-
Seata 分布式事務(wù)實(shí)踐和開源詳解 | GIAC 實(shí)錄[4] :這篇文章是螞蟻金服技術(shù)專家、分布式事務(wù) Seata 發(fā)起者之一張森(花名:紹輝)在 GIAC 全球互聯(lián)網(wǎng)架構(gòu)大會的分享。文章內(nèi)容詳細(xì)介紹了分布式事務(wù)問題產(chǎn)生原因以及螞蟻金服的應(yīng)對措施(分布式事務(wù) Seata 的 AT、TCC、Saga 和 XA 四種模式)。
P3C
P3C 項(xiàng)目包含了阿里巴巴 Java 開發(fā)手冊(整合了阿里巴巴技術(shù)團(tuán)隊(duì)多年來的最佳編程實(shí)踐)以及配套的 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 插件為例。
對應(yīng)的 IDEA 插件名稱是 Alibaba Java Code Guidelines。
安裝完成之后建議將與語言替換成中文,提示更加友好一點(diǎn)。
添加圖片注釋,不超過 140 字(可選)
根據(jù)官方描述:
目前這個插件實(shí)現(xiàn)了開發(fā)手冊中的的 53 條規(guī)則,大部分基于 PMD 實(shí)現(xiàn),其中有 4 條規(guī)則基于 IDEA 實(shí)現(xiàn),并且基于 IDEA Inspection 實(shí)現(xiàn)了實(shí)時檢測功能。部分規(guī)則實(shí)現(xiàn)了 Quick Fix 功能,對于可以提供 Quick Fix 但沒有提供的,我們會盡快實(shí)現(xiàn),也歡迎有興趣的同學(xué)加入進(jìn)來一起努力。目前插件檢測有兩種模式:實(shí)時檢測、手動觸發(fā)。
你還可以手動配置相關(guān) inspection 規(guī)則:
添加圖片注釋,不超過 140 字(可選)
這個插件會實(shí)時檢測出我們的代碼不匹配它的規(guī)則的地方,并且會給出修改建議。比如我們按照下面的方式去創(chuàng)建線程池的話,這個插件就會幫我們檢測出來,如下圖所示。
添加圖片注釋,不超過 140 字(可選)
Alink
Alink 是基于 Flink 的通用算法平臺,由阿里巴巴計(jì)算平臺 PAI 團(tuán)隊(duì)研發(fā)。Alink 已在阿里巴巴內(nèi)部支持了眾多的應(yīng)用場景,并在 2019 年 11 月的 Flink Forward Asia 大會上宣布開源。
Alink 提供了一系列算法,可以幫助處理各種機(jī)器學(xué)習(xí)任務(wù)比如模型選擇和調(diào)參、個性化推薦、異常檢測。
Alink 覆蓋了機(jī)器學(xué)習(xí)核心的三類算法:分類算法、聚類算法、回歸算法。并且,還包括聯(lián)規(guī)則和協(xié)同過濾算法、相似度算法等數(shù)據(jù)挖掘方面算法。
添加圖片注釋,不超過 140 字(可選)
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 的縮寫,代表“整潔面向?qū)ο蠓謱蛹軜?gòu)”。COLA 可以幫助開發(fā)人員快速實(shí)踐 DDD 落地的項(xiàng)目架構(gòu)。
Github : https://github.com/alibaba/COLA 。
相關(guān)閱讀:COLA 4.0:應(yīng)用架構(gòu)的最佳實(shí)踐[5]
TestableMock
一款極簡風(fēng)格的 Mock 測試工具。無需初始化,不挑服務(wù)框架,甭管要換的是私有方法、靜態(tài)方法、構(gòu)造方法還是其他任何類的任何方法,也甭管要換的對象是怎么創(chuàng)建的。寫好 Mock 定義,加個@MockMethod注解,一切統(tǒng)統(tǒng)搞定。
-
Github : https://github.com/alibaba/testable-mock
-
文檔 :https://alibaba.github.io/testable-mock/
-
國內(nèi)文檔鏡像 :http://freyrlin.gitee.io/testable-mock/
相關(guān)閱讀: 史上最輕量!阿里新型單元測試 Mock 工具開源了
Compileflow
一個非常輕量、高性能、可集成、可擴(kuò)展的流程引擎,淘寶工作流TBBPM引擎之一。
Compileflow 專注于純內(nèi)存執(zhí)行,無狀態(tài)的流程引擎,通過將流程文件轉(zhuǎn)換生成java代碼編譯執(zhí)行,簡潔高效。當(dāng)前是阿里業(yè)務(wù)中臺交易等多個核心系統(tǒng)的流程引擎。
-
Github :https://github.com/alibaba/compileflow 。
-
官方 Demo : https://github.com/compileflow/compileflow-demo 。
-
基于 IntelliJ IDEA 流程可視化插件 : https://github.com/alibaba/compileflow-idea-designer
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????文章來源:http://www.zghlxwxcb.cn/news/detail-796108.html
資源獲取:
大家點(diǎn)贊、收藏、關(guān)注、評論啦 、查看????????????微信公眾號獲取聯(lián)系方式????????????
精彩專欄推薦訂閱:在下方專欄????????????????
每天學(xué)四小時:Java+Spring+JVM+分布式高并發(fā),架構(gòu)師指日可待文章來源地址http://www.zghlxwxcb.cn/news/detail-796108.html
到了這里,關(guān)于阿里巴巴開源的15個頂級Java項(xiàng)目的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!