阿裏巴巴開源技術體系
阿裏巴巴為開源社區貢獻了大量優秀的軟件產品,這些開源軟件經過了阿裏億萬級流量的驗證,性能和穩定性都值得信賴。 現在阿裏的開源軟件已經成為了一個生態,這裏對應用較多的的開源產品進行簡單整理,大家在技術選型時可以參考。
開發框架
移動開發框架 Weex
Weex是一款跨平臺移動開發工具。Weex可以讓移動開發者通過簡捷的前端語法寫出Native級別的性能體驗,而且並支持iOS、安卓、YunOS及Web等多端部署,阿裏已經將Weex項目捐贈給Apache基金會開始孵化。 Weex使用 Vue 作為上層框架,並遵循 W3C 標準實現了統一的 JSEngine 和 DOM API。
Weex 表面上是一個客戶端技術,但實際上它串聯起了從本地開發環境到雲端部署和分發的整個鏈路。
前端開發框架 KISSY
KISSY 是一款跨終端、模塊化、高性能、使用簡單的 JavaScript 框架。除了完備的工具集合如 DOM、Event、Ajax、Anim 等,它還提供了經典的面向對象、動態加載、性能優化解決方案。作為一款全終端支持的 JavaScript 框架,KISSY 為移動終端做了大量適配和優化,使用戶的程序在全終端均能流暢運行。
模塊加載框架 SeaJS
Sea.JS 是一個遵循 CommonJS 規範的模塊加載框架,可用來輕松愉悅地加載任意JavaScript模塊。 SeaJS 支持的標準模塊遵循 Modules/Wrappings 規範的 define 形式,可運行於 Web 瀏覽器以及 node.JS 等環境中。
Web開發框架 Webx
Webx是一套基於Java Servlet API的通用Web框架,在Alibaba集團內部被廣泛使用。
整個Webx框架分成三個層次:
- SpringExt:基於Spring,提供擴展組件的能力。它是整個框架的基礎。
- Webx Framework:基於Servlet API,提供基礎的服務,例如:初始化Spring、初始化日誌、接收請求、錯誤處理、開發模式等。 Webx Framework只和servlet及spring相關 —— 它不關心Web框架中常見的一些服務, 例如Action處理、表單處理、模板渲染等。 因此,事實上,你可以用Webx Framework來創建多種風格的Web框架。
- Webx Turbine:基於Webx Framework,實現具體的網頁功能,例如:Action處理、表單處理、模板渲染等。
基礎組件
Json解析 fastjson
Fastjson是一個Java語言編寫的高性能功能完善的JSON庫。它采用一種“假定有序快速匹配”的算法,把JSON Parse的性能提升到極致,是目前Java語言中最快的JSON庫。Fastjson接口簡單易用,已經被廣泛使用在緩存序列化、協議交互、Web輸出、Android客戶端等多種應用場景。
數據庫連接池 Druid
Druid是一個JDBC組件,它包括三部分:
- DruidDriver 代理Driver,能夠提供基於Filter-Chain模式的插件體系
- DruidDataSource 高效可管理的數據庫連接池
- SQLParser
數據庫中間層 Taobao Distributed Data Layer
TDDL主要解決了分庫分表對應用的透明化以及異構數據庫之間的數據復制,它是一個基於集中式配置的 jdbc datasource實現,具有主備,讀寫分離,動態數據庫配置等功能。
配置管理 Diamond
Diamond 一個提供持久配置的工具,支持各種持久信息(比如各種規則,數據庫配置等)的發布和訂閱,同類產品有百度的Disconf等。
虛擬機優化 TaobaoJVM
TaobaoJVM 基於 OpenJDK HotSpot VM,是國內第一個優化、定制且開源的服務器版Java虛擬機。目前已經在淘寶、天貓上線,全部替換了Oracle官方JVM版本,在性能,功能上都初步體現了它的價值。
定制Nginx Tengine
Tengine是由淘寶網發起的Web服務器項目。它在Nginx的基礎上,針對大訪問量網站的需求,添加了很多高級功能和特性。Tengine的性能和穩定性已經在大型的網站如淘寶網,天貓商城等得到了很好的檢驗。
分布式組件
分布式服務框架 Dubbo
Dubbo 是一個分布式服務框架,使得應用可通過高性能的 RPC 實現服務的輸出和輸入功能,以及SOA服務治理方案。 Dubbo是一個功能強大的服務治理方案。
分布式調度框架 Tbschedule
TBSchedule將調度作業從業務系統中分離出來,降低或者是消除和業務系統的耦合度,進行高效異步任務處理。目前被應用於阿裏巴巴、淘寶、支付寶、京東、聚美、汽車之家、國美等很多互聯網公司的流程調度系統。
消息中間件
高性能消息隊列 Notify
Notify是一個消息中間件。應用程序或組件之間可以使用消息中間件進行可靠的異步通訊來降低系統之間的耦合度,從而提高整個系統的可擴展性和可用性。
Notify在設計思路上與傳統的MQ有一定的不同,核心設計理念:
- 為了消息堆積而設計系統
- 無單點,可自由擴展的設計
分布式消息隊列 RocketMQ
RocketMQ即阿裏內部的MetaQ消息隊列,是一款分布式、隊列模型的消息中間件。分為Topic與Queue兩種模式,Push和Pull兩種方式消費,支持嚴格的消息順序,億級別的堆積能力,支持消息回溯和多個維度的消息查詢。
RocketMQ借鑒了Kafka的思想,並結合互聯網應用場景對性能的要求,對數據的存儲結構進行了全新設計。在功能層面,增加了更適合大型互聯網特色的功能點。
- 能夠保證嚴格的消息順序
- 提供豐富的消息拉取模式
- 高效的訂閱者水平擴展能力
- 實時的消息訂閱機制
- 億級消息堆積能力
兩款消息中間件對比
- Notify側重於交易消息,分布式事務消息方面
- MetaQ側重於順序消息場景,例如binlog同步。以及主動拉消息場景,例如流計算等
存儲與數據處理
分布式緩存 Tair
Tair是一個高性能、分布式、可擴展、高可靠的Key-Value結構存儲系統,專註於高速緩存場景。該項目誕生於淘寶,並在阿裏巴巴集團內部大規模使用,是集團內調用量最大的系統之一。在多年的阿裏巴巴“雙十一”全球狂歡節上,為了承受數億次的調用服務, Tair部署了將上百個集群,數千臺的物理機,單節點QPS峰值近百萬次,集群緩存命中率達90%以上,承擔了天貓、淘寶、聚劃算主站的大多數訪問壓力。
Taobao FileSystem
TFS是一個高可擴展、高可用、高性能、面向互聯網服務的分布式文件系統,其設計目標是支持海量的非結構化數據。 Taobao File System(TFS)作為淘寶內部使用的分布式文件系統,針對海量小文件的隨機讀寫訪問性能做了特殊優化,承載著淘寶主站所有圖片、商品描述等數據存儲。
實時計算 JSTORM
JStorm 是一個類似Hadoop MapReduce的系統, 用戶按照指定的接口實現一個任務,然後將這個任務遞交給JStorm系統,Jstorm將這個任務跑起來,並且按7 * 24小時運行起來,一旦中間一個Worker 發生意外故障, 調度器立即分配一個新的Worker替換這個失效的Worker.JStorm是Storm的Java版本,使用Java重寫的同時在其基礎上進行了大幅度的改進與優化.與Hadoop對大數據進行離線全量處理相對應,JStorm主要做的是對大數據的實時增量計算與流式計算。
分布式數據庫 OceanBase
OceanBase是一個支持海量數據的高性能分布式數據庫系統,實現了數千億條記錄、數百TB數據上的跨行跨表事務,由淘寶核心系統研發部、運維、DBA、廣告、應用研發等部門共同完成。
阿裏巴巴開源技術體系