阿里巴巴開源技術體系

阿里巴巴爲開源社區貢獻了大量優秀的軟件產品,這些開源軟件通過了阿里億萬級流量的驗證,性能和穩定性都值得信賴。 如今阿里的開源軟件已經成爲了一個生態,這裏對應用較多的的開源產品進行簡單整理,你們在技術選型時能夠參考。前端

開發框架

移動開發框架 Weex

Weex是一款跨平臺移動開發工具。Weex可讓移動開發者經過簡捷的前端語法寫出Native級別的性能體驗,並且並支持iOS、安卓、YunOS及Web等多端部署,阿里已經將Weex項目捐贈給Apache基金會開始孵化。 Weex使用 Vue 做爲上層框架,並遵循 W3C 標準實現了統一的 JSEngine 和 DOM API。node

Weex 表面上是一個客戶端技術,但實際上它串聯起了從本地開發環境到雲端部署和分發的整個鏈路。算法

 

前端開發框架 KISSY

KISSY 是一款跨終端、模塊化、高性能、使用簡單的 JavaScript 框架。除了完備的工具集合如 DOM、Event、Ajax、Anim 等,它還提供了經典的面向對象、動態加載、性能優化解決方案。做爲一款全終端支持的 JavaScript 框架,KISSY 爲移動終端作了大量適配和優化,使用戶的程序在全終端均能流暢運行。spring

模塊加載框架 SeaJS

Sea.JS 是一個遵循 CommonJS 規範的模塊加載框架,可用來輕鬆愉悅地加載任意JavaScript模塊。 SeaJS 支持的標準模塊遵循 Modules/Wrappings 規範的 define 形式,可運行於 Web 瀏覽器以及 node.JS 等環境中。數據庫

Web開發框架 Webx

Webx是一套基於Java Servlet API的通用Web框架,在Alibaba集團內部被普遍使用。json

 

整個Webx框架分紅三個層次:瀏覽器

  1. SpringExt:基於Spring,提供擴展組件的能力。它是整個框架的基礎。
  2. Webx Framework:基於Servlet API,提供基礎的服務,例如:初始化Spring、初始化日誌、接收請求、錯誤處理、開發模式等。 Webx Framework只和servlet及spring相關 —— 它不關心Web框架中常見的一些服務, 例如Action處理、表單處理、模板渲染等。 所以,事實上,你能夠用Webx Framework來建立多種風格的Web框架。
  3. 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、廣告、應用研發等部門共同完成。

相關文章
相關標籤/搜索