阿里巴巴73款開源產品全向圖

雲棲社群發表於2016-10-02

摘要: 受益開源,就當回饋。面對阿里頭頂上“貢獻開源軟體數目第一”的光環,我們清醒地認知阿里開源的目的:阿里開源不是到業內“秀肌肉”,更不是自賣自誇;阿里之所以選擇開源是因為開源是孵化新技術領域的容器,更是技術演進的最大推動力。

阿里巴巴集團已經開源 115 個專案,加入 FSF 基金會、Apache 基金會、Linux 基金會和 Xen 的顧問團隊,並在雲棲大會北京峰會宣佈 AliSQL 開源。

為了讓大家能更好,更全面的瞭解和應用上阿里開源專案, 雲棲社群特別製作了一張“2016 阿里開源全向圖”。

2016 阿里巴巴 73 款開源產品全向圖詳細介紹如下:

一、框架

react-web:Readt Web 是為那些使用 React Native 相容的 API 構建的 Web 應用而提供的一個框架。React Web 的目的及意義非常明確: 讓 React Native 程式碼跑在 Web 上讓一套程式碼執行在各個移動終端,對前端及業務來說,這是開發效率中一個質的提升。

Jstrom:”JStorm 是參考 storm 的實時流式計算框架,在網路 IO、執行緒模型、資源排程、可用性及穩定性上做了持續改進,已被越來越多企業使用。經過 4 年發展,阿里巴巴 JStorm 叢集已經成為世界上最大的叢集之一,基於 JStorm 的應用數量超過 1000 個。資料顯示,JStorm 叢集每天處理的訊息數量達到 1.5PB。在 2015 年,JStorm 正式成為 Apache Storm 裡的子專案。JStorm 將在 Apache Storm 裡孵化,孵化成功後會成為 Apache Storm 主幹。 Apache 基金會官方表示,非常高興 JStorm 能夠成為 Apache Storm 社群的一員。”

Dubbo:高效能優秀的服務框架,使得應用可通過高效能的 RPC 實現服務的輸出和輸入功能,可以和 Spring 框架無縫整合。Dubbo is a distributed, high performance RPC framework enpowering applications with service import/export capabilities.

Kissy:KISSY 是一款跨終端、模組化、高效能、使用簡單的 JavaScript 框架。除了完備的工具集合如 DOM、Event、Ajax、Anim 等,它還提供了經典的物件導向、動態載入、效能優化解決方案。作為一款全終端支援的 JavaScript 框架,KISSY 為移動終端做了大量適配和優化,使使用者的程式在全終端均能流暢執行。

Dexposed:Dexposed 是面向 Android 應用開發的一個強大的非侵入式的執行時 AOP 框架。它基於 ROOT 社群著名開源專案 Xposed 的部分成果,並演化為服務於所在應用自身的 AOP 框架。目前它支撐了阿里大部分 App 的線上分鐘級客戶端 bugfix 和線上除錯能力。

TDDL:TDDL(Taobao Distributed Data Layer),是淘寶根據自己的業務特點開發了框架,主要解決了分庫分表對應用的透明化以及異構資料庫之間的資料複製,它是一個基於集中式配置的 jdbc datasource 實現,具有主備,讀寫分離,動態資料庫配置等功能。

Webx:Webx 是建立在 Java Servlet API 基礎上的通用 WEB 框架。用 Webx 搭建的應用可以執行在任何一個標準的 WEB 應用伺服器上面:Tomcat、Jetty、Jboss、Weblogic。 Webx 是基於經典 MVC 設計模式的 WEB 框架 Spring,並且可以被其它元件擴充套件。Webx 不僅能夠用來開發高度可定製的 Web 應用,也能夠用來幫助使用者開發高度可擴充套件的非 WEB 的應用。

Magix:Magix 是用於構建大型富互動單頁應用的前端 MVC 框架。

Brix:Brix 是基於 KISSY(PC 端)和 Zepto、SeaJS 等(移動端)底層類庫的應用層元件框架。

Canvax:Canvax 是一款小型輕便的 canvas 圖形框架,它採用 Flash AS3 相同的模式來對繪製元素進行抽象

Plover:Plover 是一個專注於模組化方式構建 web 應用的 NodeJs MVC web 框架。不同於其它 web 框架,它提供完整的應用和模組化模型可以讓複雜的業務功能可以方便地抽象成多個模組的方式進行獨立開發,讓應用可以像搭積目的方式拼裝模組而成。

二、元件

Druid:Druid 是 Java 語言中最好的資料庫連線池。Druid 能夠提供強大的監控和擴充套件功能。

Fastjson:fastjson 是一個效能很好的 Java 語言實現的 JSON 解析器和生成器

Macaroon:Macaroon 是一個高效的反向代理測試套件,測試框架本身基於 python2.7 開發,方便跨平臺移植;測試例使用格式化描述,做到程式語言無關性。使用 Macaroon 能夠簡便快捷的完成測試場景的構造、線上失效案例的重建及被測軟體(DUT)的功能、模組、協議一致性測試等。

Uploader:Uploader 是一個非常強大的非同步檔案上傳元件,支援 ajax、iframe、flash 三套方案,實現瀏覽器的全相容,呼叫非常簡單,內建多套主題支援和常用外掛,比如驗證、圖片預覽、進度條等

AliJVM:AliJVM 基於 OpenJDK HotSpot VM,是國內第一個優化、定製且開源的伺服器版 Java 虛擬機器。目前已經在淘寶、天貓上線,全部替換了 Oracle 官方 JVM 版本,在效能,功能上都初步體現了它的價值。 ”

KCharts:KCharts 是基於 Svg 的圖表元件庫,相容 IE6+ 等主流瀏覽器。基於淘寶 js 框架 KISSY 的圖表元件庫,包含折線圖、曲線圖、柱狀圖、散點圖、餅圖、地圖等常用圖表。

nginx-tfs :nginx-tfs 是 Nginx 的擴充套件模組用於訪問淘寶的 TFS 檔案系統。

transmittable-thread-local:transmittable-thread-local 是阿里用 Java 開發的用於多執行緒的的元件。

nginx-http-sysguard:nginx-http-sysguard 是阿里巴巴開發的一個 Nginx 模組,用來保護執行 Nginx 伺服器的系統負載和記憶體使用不會太高

java-dns-cache-manipulator:用編碼的方式設定/檢視 JVM 的 DNS(實際上設定的是 DNS Cache),支援 JDK 6+,支援 IPv6。

三、引擎

Velocity.js:Velocity.js 是一個基於 velocity 模板語法的 javascript 實現。它具有支援客戶端和伺服器端使用、支援 Node.js 環境、支援 Vim 語法等功能,具備富邏輯語法、語法分析和模板渲染分離等特點。

Qlexpress:Quick Laconic Express 高效簡潔的類 java 語法動態指令碼引擎

SimpleEL:Simple EL 是一個表示式解析引擎。它將表示式解析分成四個部分:預處理、編譯、快取和執行。這四個步驟任意一部分都可以替換,類似設計模式中的 Template Method。

xtemplate:xtemplate 是獨立的富邏輯模板引擎,基於瀏覽器和 Node.js 的可擴充套件的模板引擎庫。

nQuery:nQuery 引擎是來自阿里的資料中間層,主要為應對大資料場景的線上查詢的三大難題:長資料、寬資料、雜資料, 廣泛參考 Big Query、Impala、 PL/SQL、MySQL 、PgSQL、ql.io 等,結合自身業務特點,自行精心設計、實現的一套類 SQL 語言(nSQL)及解析、執行引擎

Min-velocity:min-velocity 是一個專為程式碼生成而定製的簡化 velocity 模板引擎。它的目標是以 velocity 1.7 為基礎, 裁剪出適合用作程式碼生成的模板引擎。

四、資料庫/儲存

AliSQL:AliSQL 是基於 MySQL 官方版本的一個分支,由阿里雲資料庫團隊維護,目前也應用於阿里巴巴集團業務以及阿里雲資料庫服務。該版本在 MySQL 社群版的基礎上做了大量的效能與功能的優化改進。尤其適合電商、雲端計算以及金融等行業環境。AliSQL 版本在強度和廣度上都經歷了極大的考驗。最新的 AliSQL 版本不僅從其他開源分支比如:Percona,MariaDB,WebScaleSQL 等社群汲取精華,也沉澱了阿里巴巴多年在 MySQL 領域的經驗和解決方案。AliSQL 增加更多監控指標,並針對電商秒殺、物聯網大資料壓縮、金融資料安全等場景提供個性化的解決方案。“在通用基準測試場景下,AliSQL 版本比 MySQL 官方版本有著 70% 的效能提升。在秒殺場景下,效能提升 100 倍。”

OceanBase :OceanBase 是一個支援海量資料的高效能分散式資料庫系統,實現了數千億條記錄、數百 TB 資料上的跨行跨表事務,由淘寶核心系統研發部、運維、DBA、廣告、應用研發等部門共同完成。

Tair:Tair 是由淘寶網自主開發的 Key/Value 結構資料儲存系統,在淘寶網有著大規模的應用。

TFS:TFS(Taobao FileSystem)是一個高可擴充套件、高可用、高效能、面向網際網路服務的分散式檔案系統,其設計目標是支援海量的非結構化資料。目前,國內自主研發的檔案系統可謂鳳毛麟角。淘寶在這一領域做了有效的探索和實踐,Taobao File System(TFS)作為淘寶內部使用的分散式檔案系統,針對海量小檔案的隨機讀寫訪問效能做了特殊優化。

AliRedis(計劃開源):AliRedis 是阿里團隊針對 Redis 日常維護中出現的不足而在 Redis 原有基礎上做出的深度改進。具體而言,AliRedis 採用多執行緒 master + N*work 工作模式,並且拋棄 save, bgsave, aof 等三種原有的模式.採用 redisDB lock 模式,除此之外,它還優化了 jemalloc, 採用大記憶體頁。

Wasp:Wasp 是類 Google MegaStore & F1 的分散式關聯式資料庫。它是分散式的、支援 SQL 的、事務型資料庫。

ADFS:ADFS (Ali Distributed File System)是基於 hadoop 開源分散式系統 HDFS 的一種優化實現,能夠將 HDFS 中單點 master namenode 節點中的記憶體資料結構利用高速儲存介質同步到磁碟中,同時能夠提供很高的吞吐和效能 。

五、平臺/系統

Zeus:宙斯是一個完整的 Hadoop 的作業平臺從 Hadoop 任務的除錯執行到生產任務的週期排程宙斯支援任務的整個生命週期。

DataX:DataX 是阿里巴巴集團內被廣泛使用的離線資料同步工具/平臺,實現包括 MySQL、Oracle、HDFS、Hive、OceanBase、HBase、OTS、ODPS 等各種異構資料來源之間高效的資料同步功能。

Reliable :Reliable 是由 Macaca 團隊的成員開發的分散式架構的持續整合系統。它是用 Node.js 和 Javascript 編寫的,並且使用 MongoDD 作為資料來源、Redis 作為快取,Docker 作為執行環境,具有叢集負載,合理調配、提供外掛機制,易擴充套件、部署非常簡單、便於接入 Gitlab 和 Github 社群化系統、與 Macaca 無縫融合等特點,因而適用於整合構建、整合構建等場景。

Toast:TOAST (Toast Open Automation System for Test) 是一淘廣告技術測試團隊開發的一套自動化測試任務排程平臺。

cnpmjs:CNPM 是阿里巴巴開發的一個私有 npm 倉庫和 web 服務

ruby.taobao.org:RubyGems Mirror Web page

ali_kernel:在 RHEL6 source codes 基礎上做的更新,以及一些新功能加入。

六、解決方案:

Hilo:一套 HTML5 跨終端的互動遊戲解決方案。Hilo 支援了多屆淘寶&天貓狂歡城等雙十一大型和日常營銷活動。核心極簡,提供包括 DOM,Canvas,Flash,WebGL 等多種渲染方案,滿足全終端和效能要求。支援多種模組正規化的包裝版本以及開放的擴充套件方式,方便接入和擴充套件。提供對 2D 物理,骨骼動畫的內建和擴充套件支援。

Weex:移動端高效能動態化,跨平臺移動開發解決方案,A framework for building Mobile cross-platform UI

Macaca:Macaca 是一套完整的自動化測試解決方案,它的特性包括支援移動端和 PC 端、支援 Native,Hybrid,H5 等多種應用型別和提供客戶端工具和持續整合服務。

F2etest:F2etest 是一個面向前端、測試、產品等崗位的多瀏覽器相容性測試整體解決方案。F2e test = Front to End Test = 前端測試

LuaView:LuaView 是一種執行在一個 ViewController/Activity 中,可以靈活載入 Lua 指令碼,並能夠按照 Native 的方式執行的一種面向業務的開發技術方案。

Cube:Cube 是一套跨終端、響應式、低設計耦合的 CSS 解決方案。包含全新基礎重置、佈局、按鈕、工具類、字型圖示等相對獨立的模組。

BeeHive:BeeHive 是用於 iOS 的 App 模組化程式設計的框架實現方案,吸收了 Spring 框架 Service 的理念來實現模組間的 API 耦合。

七、工具

Tsar Tsar:是淘寶的採集工具,主要用來收集伺服器的系統資訊(如 cpu,io,mem,tcp 等)以及應用資料(如 squid haproxy nginx 等),tsar 支援實時檢視和歷史檢視,方便了解應用和伺服器的資訊!

yugong:阿里巴巴去 Oracle 資料遷移同步工具(全量+增量,目標支援 MySQL/DRDS)

AndFix:AndFix,全稱“Andriod hot-fix”,是阿里開源的 Android 應用熱修復工具,用來幫助 Android 開發者修復應用的線上問題。AndFix 實現原理是方法體的替換,目前支援的平臺有 Android 2.3 – 6.0,ARM 和 x86 架構,dalvik 執行時和 art 執行時。

tblive:tblive 開源專案對應的產品是千牛主播,是一個獨立的 PC 端主播工具,基於開源軟體 OBS Studio 來修改定製,增強了互動和功能上的可用性,同時引入統一登陸 sdk(UnifiedAuthSDK.dll),可以支援淘寶賬號的驗證以及免登 url 的拼接,能更好的支援淘系 webview 頁面。

canal:阿里巴巴 mysql 資料庫 binlog 的增量訂閱&消費元件

RAP :是通過 GUI 工具幫助 WEB 工程師更高效的管理介面文件的工具。它在管理的同時通過分析介面結構自動生成 Mock 資料、校驗真實介面的正確性,使介面文件成為開發流程中的強依賴。正因為有了結構化的 API 資料,RAP 可以為使用者做更多地事,從而避免更多重複勞動。

tclip:自動頭像識別的圖片裁剪專案

TProfiler:TProfiler 是一個可以在生產環境長期使用的效能分析工具.它同時支援剖析和取樣兩種方式,記錄方法執行的時間和次數,生成方法熱點物件建立熱點執行緒狀態分析等資料,為查詢系統效能瓶頸提供資料支援.

Tao-ReviewBoard:Tao-ReviewBoard 是淘寶開發的基於 eclipse 的 reviewboard 外掛,能很好的解決安裝和使用的問題。

Mock.js:Mock.js 是一款模擬資料生成器,旨在幫助前端攻城師獨立於後端進行開發,幫助編寫單元測試。

Flex GateWay :Flex GateWay 提供了 VPN、SNAT 基礎服務。

Sqlautoreview:淘寶開源的 SQLautoReview 是一個 SQL 自動化稽核的程式

ossfs:ossfs 是用 Perl 語言寫的基於 aliyun OSS 的 fuse 客戶端。它能夠讓使用者在 Linux/Mac OS X 系統中把 Aliyun OSS bucket 掛載到本地檔案系統中,使使用者能夠便捷地通過本地檔案系統操作 OSS 上的物件,實現資料的共享。 ”

Darko:Darko 是阿里媽媽的 THX 團隊編寫的一個站點生成工具,與 Jekyll 相容,在不便安裝 Jekyll 的平臺上,可以試試 Darko。

Asyncload:Asyncload 是一款非同步並行載入工具(依賴位元組碼技術)。用於常用的 IO 需求

DragonBonesJS:DragonBonesJS 是 DragonBones 的 JS 版本,是 DragonBones 的改進版。而 DragonBones 是 Adobe 支援的一個開源專案,用於製作和播放骨骼動畫

otter:阿里巴巴分散式資料庫同步系統(解決中美異地機房)

Freeline:Freeline 是螞蟻聚寶團隊在 Android 平臺上的量身定做的一個增量開發的工具,支援 mPaas。

uirecorder:UI 測試用例錄製工具

八、中介軟體

RocketMQ:”訊息佇列(Message Queue,簡稱 MQ)是阿里雲商用的專業訊息中介軟體,是企業級網際網路架構的核心產品,基於高可用分散式叢集技術,搭建了包括髮布訂閱、訊息軌跡、資源統計、定時(延時)、監控報警等一套完整的訊息雲服務。RocketMQ:是 MQ 的開源版本”

Cobar:Cobar 是提供關係型資料庫(MySQL)分散式服務的中介軟體,它可以讓傳統的資料庫得到良好的線性擴充套件,並看上去還是一個資料庫,對應用保持透明。

Tbschedule:一種非同步任務處理系統,目的是用來可以提高使用者體驗,以及增大系統的可擴轉性,正因為它的種種優勢和特性,Tbschedule 得到大量的應用。

九、Web Server

Tengine:Tengine 是由淘寶網發起的 Web 伺服器專案。它在 Nginx 的基礎上,針對大訪問量網站的需求,新增了很多高階功能和特性,是目前全球 9 大流行 web server 之一。Tengine 的效能和穩定性已經在大型的網站如淘寶網,天貓商城等得到了很好的檢驗。它的最終目標是打造一個高效、穩定、安全、易用的 Web 平臺。

AnyProxy:AnyProxy 是一個基於 Node.js 的代理伺服器。代理伺服器是個中間人,站在了客戶端和服務端中間,雙方通訊的每個位元,都會滴水不漏地經過它。它控制了完整的請求頭、請求體、響應頭、響應體,可以在客戶端與服務端都無感知的情況下介入處理所有的流程。

十、設計

Ant-design:Ant Design 是一個致力於提升『使用者』和『設計者』使用體驗的中臺設計語言。它模糊了產品經理、互動設計師、視覺設計師、前端工程師、開發工程師等角色邊界,將進行 UE 設計和 UI 設計人員統稱為『設計者』,利用統一的規範進行設計賦能,全面提高中臺產品體驗和研發效率。

相關文章