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