1024程式設計師節 | 阿里巴巴集團開源軟體巡禮(史上最全)
小螞蟻說:
開源先鋒Tim O'Reilly 先生曾言:“開源軟體是計算機工業最寶貴的財富”。阿里巴巴是開源社群積極的共建者,為開源軟體發展做了重要的貢獻,相關的 GitHub 2017年資料統計顯示,阿里巴巴是唯一一家入圍 GitHub 頂尖貢獻名單的中國公司,值此1024程式員節,我們梳理阿里巴巴集團的重要開源專案,希望能夠對大家有所幫助。
回顧更多螞蟻金服相關的開源資訊:
《 ofollow,noindex">開源 |螞蟻金服啟動分散式中介軟體開源計劃,用於快速構建金融級雲原生架構 》
《 開源 | 螞蟻金服分散式中介軟體開源第二彈:豐富微服務架構體系 》
《 開源 | 螞蟻金服開源:關係資料的視覺化引擎 G6 2.0 》……
目錄
一、前言
二、前端
三、Java
四、資料庫
五、系統
六、教程
一、前言
程式設計師的語言是程式碼,程式設計師的交流工具就是開源軟體。
通過開源軟體,程式設計師不僅貢獻了改變世界的工具,還向同行展示了自己的作品,期望得到交流和反饋,進一步提高軟體的功能和質量。開源已經成為程式設計師文化的一部分。
作為軟體大廠,阿里巴巴集團為開源社群貢獻了大量軟體,無償提供包含了無數工程師智慧和函式的海量程式碼。在今天這個 1024 程式設計師節的特殊日子,我們為大家整理了近十年來阿里巴巴集團的開源軟體,希望讓大家感受程式設計師對世界的貢獻。

Ant Design 是螞蟻金服開發和正在使用的一套企業級的前端設計語言和基於 React 的前端框架實現。它的特性:企業級金融產品的互動語言和視覺體系;豐富實用的 React UI 元件;基於 React 的元件化開發模式;背靠 npm 生態圈;基於 webpack 的除錯構建方案,支援 ES6。
地址: https://github.com/ant-design/ant-design
2. 視覺化語法庫 G2
Line"/>
G2 是一套基於視覺化編碼的圖形語法,以資料驅動,具有高度的易用性和擴充套件性,使用者無需關注各種繁瑣的實現細節,一條語句即可構建出各種各樣的可互動的統計圖表。
地址: https://github.com/antvis/g2
3. 視覺化圖表庫 BizCharts
BizCharts 是基於 G2 的 React 圖表庫,歷經阿里兩年打磨,覆蓋數十個產品。
地址: https://github.com/alibaba/BizCharts
4. Node 應用框架 Egg
egg 是為企業級框架和應用而生的 Web 框架,使用 Node.js。
地址: https://github.com/eggjs/egg
5. 基於 React 的前端框架 umi
umi 是可插拔的企業級 React 框架,類似 Next.js。
地址: https://github.com/umijs/umi
6. 通用渲染引擎 Rax
Rax 是阿里開源的一個通用的 JavaScript 庫,主要有 React 相容的 API 。 使用 React 的就應該已經知道如何使用 Rax。特性:快速:快速的虛擬 DOM;微型:min + gzip 之後僅 8.0kb;通用:跨瀏覽器、Weex 和 Node.js。
地址: https://github.com/alibaba/rax
7. 跨平臺移動開發工具 Weex
Weex 是開源的跨平臺移動開發工具,能夠完美兼顧效能與動態性,讓移動開發者通過簡捷的前端語法寫出Native級別的效能體驗,並支援iOS、安卓、YunOS及Web等多端部署。
地址: https://github.com/apache/incubator-weex/
8. 自動化測試解決方案 Macaca
Macaca是一套完整的自動化測試解決方案,支援移動端和PC端,支援Native, Hybrid, H5 等多種應用型別,並且提供客戶端工具和持續整合服務。
地址: https://github.com/alibaba/macaca
9. 前端物料庫 ice
ice 是前端的海量可複用物料庫,配套桌面工具極速構建前端應用,大幅提升開發效率。
地址: https://github.com/alibaba/ice
10. HTML5 互動遊戲引擎 Hilo
Hilo 是阿里巴巴集團開發的一款HTML5跨終端遊戲解決方案,ta可以幫助開發者快速建立 HTML5 遊戲。
地址: https://github.com/hiloteam/Hilo
11. JavaScript 模板引擎 Velocity.js
Velocity.js 是velocity模板語法的javascript實現。Velocity 是基於Java的模板引擎,廣泛應用在阿里集 體各個子公司。Velocity模板適用於大量模板使用的場景,支援複雜的邏輯運算,包含 基本資料型別、變數賦值和函式等功能。Velocity.js 支援 Node.js 和瀏覽器環境。
地址: https://github.com/shepherdwind/velocity.js
12. 非侵入式執行期 AOP 框架 Dexposed
Dexposed 是阿里巴巴無線事業部第一個重量級 Andorid 開源軟體,基於 ROOT 社群著名開源專案 Xposed 改造剝離了 ROOT 部分,演化為服務於所在應用自身的 AOP 框架。它支撐了阿里大部分 App 的線上分鐘級客戶端 bugfix 和線上除錯能力。
地址: https://github.com/alibaba/dexposed
13. 自動化測試解決方案 UI Recorder
UI Recorder 是一款零成本的整體自動化測試解決方案,一次自測等於多次測試,測一個瀏覽器等於測多個瀏覽器!
地址: https://github.com/alibaba/uirecorder
14. Android 應用熱修復工具 AndFix
AndFix 是阿里巴巴開源的 Android 應用熱修復工具,幫助 Anroid 開發者修復應用的線上問題。Andfix 是 "Android hot-fix" 的縮寫。
地址: https://github.com/alibaba/AndFix
15. 淘寶 React 框架 React Web
淘寶前端團隊開源專案React Web,通過與React Native一致的API構建Web應用。
地址: https://github.com/taobaofed/react-web
16. 基於 Node.js 的自動化持續整合 Reliable
Reliable 是分散式架構的持續整合系統,由Macaca 團隊的成員開發。適用於整合構建、整合構建等場景。她是典型的主從結構,分為reliable-master 與 reliable-slave 兩部分。
地址: https://github.com/reliablejs/reliable-master
17. 模擬資料生成器 Mock.js
Mock.js 是一款模擬資料生成器,旨在幫助前端攻城師獨立於後端進行開發,幫助編寫單元測試。提供了以下模擬功能:根據資料模板生成模擬資料,模擬 Ajax 請求,生成並返回模擬資料,基於 HTML 模板生成模擬資料。
地址: https://github.com/nuysoft/Mock
18. React 應用的伺服器渲染框架 Beidou
Beidou(北斗) 是 NodeJS & React 同構框架,基於Egg.js開發。
地址: https://github.com/alibaba/beidou
三、Java
1. JDBC 連線池、監控元件 Druid
Druid是一個 JDBC 元件。
● 監控資料庫訪問效能。
● 提供了一個高效、功能強大、可擴充套件性好的資料庫連線池。
● 資料庫密碼加密。
● SQL執行日誌。
地址: https://github.com/alibaba/druid
2. Java 的 JSON 處理器 fastjson
fastjson 是一個性能很好的 Java 語言實現的 JSON 解析器和生成器,來自阿里巴巴的工程師開發。
主要特點:快速FAST (比其它任何基於Java的解析器和生成器更快,包括jackson);強大(支援普通JDK類包括任意Java Bean Class、Collection、Map、Date或enum);零依賴(沒有依賴其它任何類庫除了JDK)。
地址: https://github.com/alibaba/fastjson
3. 服務框架 Dubbo
Dubbo 是阿里巴巴公司開源的一個高效能優秀的服務框架,使得應用可通過高效能的 RPC 實現服務的輸出和輸入功能,可以和 spring 框架無縫整合。
地址: https://github.com/alibaba/dubbo
4. 企業級流式計算引擎 JStorm
JStorm 是參考 Apache Storm 實現的實時流式計算框架,在網路IO、執行緒模型、資源排程、可用性及穩定性上做了持續改進,已被越來越多企業使用。JStorm 可以看作是 storm 的 java 增強版本,除了核心用純java實現外,還包括了thrift、python、facet ui。從架構上看,其本質是一個基於 zk 的分散式排程系統。
地址: https://github.com/alibaba/jstorm
5. apns4j
apns4j 是 Apple Push Notification Service 的 Java 實現!
地址: https://github.com/teaey/apns4j
6. 分散式資料層 TDDL
TDDL 是一個基於集中式配置的 jdbc datasource實現,具有主備,讀寫分離,動態資料庫配置等功能。
地址: https://github.com/alibaba/tb_tddl
7. 輕量級分散式資料訪問層 CobarClient
Cobar Client是一個輕量級分散式資料訪問層(DAL)基於iBatis(已更名為MyBatis)和Spring框架實現。
地址: https://github.com/alibaba/cobarclient
8. 淘寶定製 JVM:TaobaoJVM
TaobaoJVM 基於 OpenJDK HotSpot VM,是國內第一個優化、定製且開源的伺服器版Java虛擬機器。目前已經在淘寶、天貓上線,全部替換了Oracle官方JVM版本,在效能,功能上都初步體現了它的價值。
地址: http://jvm.taobao.org
9. Java 圖片處理類庫 SimpleImage
SimpleImage是阿里巴巴的一個Java圖片處理的類庫,可以實現圖片縮略、水印等處理。
地址: https://github.com/alibaba/simpleimage
10. redis 的 java 客戶端 Tedis
Tedis 是另一個 redis 的 java 客戶端。Tedis 的目標是打造一個可在生產環境直接使用的高可用 Redis 解決方案。
地址: https://github.com/justified/tedis
四、資料庫
1. 開源資料庫 AliSQL
AliSQL 是基於 MySQL 官方版本的一個分支,由阿里雲資料庫團隊維護,目前也應用於阿里巴巴集團業務以及阿里雲資料庫服務。該版本在社群版的基礎上做了大量的效能與功能的優化改進。尤其適合電商、雲端計算以及金融等行業環境。
地址: https://github.com/alibaba/AliSQL
2. 分散式資料庫 OceanBase
OceanBase是一個支援海量資料的高效能分散式資料庫系統,實現了數千億條記錄、數百TB資料上的跨行跨表事務,由淘寶核心系統研發部、運維、DBA、廣告、應用研發等部門共同完成。
地址: https://github.com/alibaba/oceanbase
3. 分散式資料庫同步系統 otter
otter 基於資料庫增量日誌解析,準實時同步到本機房或異地機房的mysql/oracle資料庫. 一個分散式資料庫同步系統。
地址: https://github.com/alibaba/otter
4. Oracle 資料遷移同步工具 yugong
yugong 是阿里巴巴推出的去 Oracle 資料遷移同步工具(全量 + 增量,目標支援 MySQL/DRDS)。
地址: https://github.com/alibaba/yugong
5. 分散式 SQL 引擎 Lealone
Lealone 為 HBase 提供一個分散式SQL引擎,嘗試將BigTable(HBase)和 RDBMS (H2資料庫) 結合的專案。
地址: https://github.com/lealone/Lealone
6. 關係型資料的分散式處理系統 Cobar
Cobar 是關係型資料的分散式處理系統,它可以在分散式的環境下像傳統資料庫一樣為您提供海量資料服務。以下是快速啟動場景:
地址: https://github.com/alibaba/cobar
7. 分散式關係資料庫 Alibaba Wasp
Wasp 是類Google MegaStore & F1的分散式關係資料庫。
地址: https://github.com/alibaba/wasp
五、系統
1. 分散式檔案系統 FastDFS
FastDFS 是一個開源的分散式檔案系統,她對檔案進行管理,功能包括:檔案儲存、檔案同步、檔案訪問(檔案上傳、檔案下載)等,解決了大容量儲存和負載均衡的問題。特別適合以檔案為載體的線上服務,如相簿網站、視訊網站等等。
地址: https://github.com/happyfish100/fastdfs
2. 訊息中介軟體 Apache RocketMQ
RocketMQ 是一款分散式、佇列模型的訊息中介軟體,具有以下特點:
● 能夠保證嚴格的訊息順序
● 提供豐富的訊息拉取模式
● 高效的訂閱者水平擴充套件能力
● 實時的訊息訂閱機制
● 億級訊息堆積能力
地址: https://github.com/apache/rocketmq/
3. 分散式 key/value 儲存系統 Tair
Tair是一個Key/Value結構資料的解決方案,它預設支援基於記憶體和檔案的兩種儲存方式,分別和我們通常所說的快取和持久化儲存對應。
地址: https://github.com/alibaba/tair
4. 系統資訊採集和監控工具 Tsar
Tsar是淘寶的採集工具,主要用來收集伺服器的系統資訊(如cpu,io,mem,tcp等)以及應用資料(如squid haproxy nginx等),tsar支援實時檢視和歷史檢視,方便了解應用和伺服器的資訊!
地址: https://github.com/alibaba/tsar
5. 分散式訊息中介軟體 Metamorphosis
Metamorphosis (MetaQ) 是一個高效能、高可用、可擴充套件的分散式訊息中介軟體,類似於LinkedIn的Kafka,具有訊息儲存順序寫、吞吐量大和支援本地和XA事務等特性,適用於大吞吐量、順序訊息、廣播和日誌資料傳輸等場景。
地址: https://github.com/killme2008/Metamorphosis
6. 淘寶Web伺服器 Tengine
Tengine是由淘寶網發起的Web伺服器專案。它在Nginx的基礎上,針對大訪問量網站的需求,添加了很多高階功能和特性。Tengine的效能和穩定性已經在大型的網站如淘寶網,天貓商城等得到了很好的檢驗。它的最終目標是打造一個高效、穩定、安全、易用的Web平臺。
地址: https://github.com/alibaba/tengine
7. 分散式檔案系統 TFS
TFS(Taobao FileSystem)是一個高可擴充套件、高可用、高效能、面向網際網路服務的分散式檔案系統,其設計目標是支援海量的非結構化資料。
地址: https://github.com/alibaba/tfs
8. 非同步任務處理系統 TBSchedule
tbschedule 是一個簡潔的分散式任務排程引擎,目的是讓一種批量任務或者不斷變化的任務,能夠被動態的分配到多個主機的JVM中,不同的執行緒組中並行執行。所有的任務能夠被不重複,不遺漏的快速處理。
地址: https://github.com/taobao/TBSchedule
9. 容器引擎 Pouch
Pouch 是一款輕量級的容器引擎,擁有快速高效、可移植性高、資源佔用少等特性,主要幫助阿里更快的做到內部業務的交付,同時提高超大規模下資料中心的物理資源利用率。
地址: https://github.com/alibaba/pouch
10. 線上分析查詢系統 mdrill
mdrill是一個分散式的線上分析查詢系統,基於hadoop,lucene,solr,jstorm等開源系統作為實現,基於SQL的查詢語法。 mdrill是一個能夠對大量資料進行分散式處理的軟體框架。mdrill是快速的高效能的,他的底層因使用了索引、列式儲存、以及記憶體cache等技 術,使得資料掃描的速度大為增加。mdrill是分散式的,它以並行的方式工作,通過並行處理加快處理速度。
地址: https://github.com/alibaba/mdrill
六、教程
1. 七天學會NodeJS文件
七天學會 NodeJS 是阿里巴巴國際站前端技術部編寫的開源文件,用於學習 Node.js。
地址: https://github.com/nqdeng/7-days-nodejs
2. Nginx開發從入門到精通
nginx由於出色的效能,在世界範圍內受到了越來越多人的關注,在淘寶內部它更是被廣泛的使用,眾多的開發以及運維同學都迫切的想要了解nginx模組的開發以及它的內部原理,但是國內卻沒有一本關於這方面的書,源於此我們決定自己來寫一本。本書的作者為淘寶核心系統伺服器平臺組的成員,本書寫作的思路是從模組開發逐漸過渡到nginx原理剖析。
原文釋出時間為:2018-10-24