阿里靠什麼武功祕籍渡過“雙十一“的天量衝擊

beyondma發表於2020-01-11

雙十一大概會產生多大的資料量呢,可能大家沒概念,舉個例子央視拍了這麼多年電視新聞節目,幾十年下來他存了大概80P的資料。而今年雙11一天,阿里要處理970P的資料,做為一個IT人,筆者認為今年”雙十一“阿里最大的技術看點有有以下兩個:

  • 阿里的資料庫,也就是剛剛拿下TPC冠軍的OcceanBase,處理峰值也達到了駭人聽聞的6100萬次/秒,
  • 阿里核心系統百分百上雲了。

如果把資訊系統比做一個武林高手,那麼如此之大的交易量代表了他的剛猛威武,而全面觸雲又代表他靈動飄逸。而能把剛猛和靈活完美結合是簡直是神才能達到的境界。

上雲雖好,但不適合大規模計算,由於底層與使用者之間多了一個虛擬化層,所以雲端計算平臺一般都會產生10%左右的排程損耗,而這10%的損耗也讓很多密集計算型的應用場景不太合適使用雲平臺。所以站在IT視角,雲端計算也不太合適雙十一的場景。那麼阿里剛猛兼顧靈活的武功是如何練成的呢?

乾坤大挪移-Tair

通過阿里的官宣來看在Tair之前還有一個LVS的負載均衡層,不過那些都不是國產的自研技術,也不細表了。

Tair是阿里自研的開源快取服務中介軟體(Github地址:。https://github.com/alibaba/tair)提供快速訪問的記憶體(MDB引擎)/持久化(LDB引擎)儲存服務,基於高效能、高可用的分散式叢集架構,滿足讀寫效能要求高及容量可彈性伸縮的業務需求,在雙十一秒殺的體系內完成乾坤大挪移般的加速工作。

通常情況下,一個 Tair 叢集中包含2臺 Configserver 及多臺 DataServer。其中兩臺 Configserver 互為主備。通過和 Dataserver 之間的心跳檢測獲取叢集中存活可用的 Dataserver,構建資料在叢集中的分佈資訊。Dataserver 負責資料的儲存,並按照 Configserver 的指示完成資料的複製和遷移工作。Client 在啟動的時候,從 Configserver 獲取資料分佈資訊,根據資料分佈資訊,和相應的 Dataserver 進行互動,完成使用者的請求。

 

其核心的模組就是Configserver,具體的程式碼在https://github.com/alibaba/tair/blob/master/src/configserver/conf_server_table_manager.cpp

以初始化函式為例:

using namespace std;

void conf_server_table_manager::init()

{ flag = client_version = server_version = server_bucket_count = server_copy_count = plugins_version = area_capacity_version = last_load_config_time = NULL;//初始化標誌位

 migrate_block_count = NULL;

 hash_table = m_hash_table = d_hash_table = NULL;

 file_name = "";

 hash_table_deflate_data_for_client = hash_table_deflate_data_for_data_server = NULL;

 hash_table_deflate_data_for_client_size = hash_table_deflate_data_for_data_server_size = 0;

 file_opened = false;

 if(transition_version != NULL)//如不為空,則刪除

 {

    delete transition_version;

 }

 if(recovery_version != NULL)//如不為空,則刪除

 {

   delete recovery_version;

 }

 if(recovery_block_count != NULL) //如不為空,則刪除

 {

    delete recovery_block_count;

 }

 transition_version = new uint32_t();

 recovery_version = new uint32_t();

 recovery_block_count = new int32_t();

 *transition_version = 0;

 *recovery_version = 0;

 *recovery_block_count = -1;

}

凌波微步-SOFAStack:SOFAStack(Scalable Open Financial Architecture Stack)是阿里研發的一套開源的用於構建微服務的分散式中介軟體(Github地址:https://github.com/sofastack),微服務最大的優勢就是方便靈活,與凌波微步的武功有異曲同工之妙。它包含了構建微服務體系的眾多元件,包括研發框架、RPC 框架,服務註冊中心,分散式鏈路追蹤,Metrics監控度量、分散式事務框架、服務治理平臺等,結合社群優秀的開源產品,可以快速搭建一套完善的微服務體系。

使用SOFAStack可以快速的構建出架構完整的微服務體系:

九陽神功-OceanBase:勇奪TPC冠軍的OceanBase也是阿里自研的金融級關係型資料庫,由於是其叢集化的特性使其具備了有如九陽神功般取之不盡,用之不竭的內力。

筆者在前文《200行程式碼解讀國產資料庫阿里OceanBase的速度之源》 《揭祕OceanBase的王者攻略》已經對於這個資料庫做了詳盡的介紹,這裡不再贅述。

武穆遺書-飛天作業系統:飛天(Apsara)是由阿里雲自主研發、服務全球的超大規模通用計算作業系統。正所謂韓信點兵,多多益善,飛天能將百萬級伺服器連成一臺超級計算機,還能有條不紊的通過雲端計算向使用者提供計算能力。

我們看到在飛天的基礎公共模組之上,有兩個最核心的服務,一個是盤古,另一個是伏羲。盤古是儲存管理服務,伏羲是資源排程服務,飛天核心之上應用的儲存和資源的分配都是由盤古和伏羲管理。具體見下圖:

飛天最底層是遍佈全球的幾十個資料中心,成百上千萬臺伺服器,把這麼多伺服器連成一片變成一個整體,絕對是上乘的兵法才能做到的,所以飛天堪稱是阿里“雙十一“的武穆兵法。

真武七截陣-神龍雲伺服器: 在《倚天屠龍記》中真武七截陣是由張三丰創始的陣法,人數越多威力越強,而神龍雲伺服器也其最大的特點就是把虛擬化層的損耗幾乎為零,隨著物理服務數量的增多,效能卻一點也不打折,堪稱IT界的真武七截陣。

其最大亮點是阿里自研的MOC晶片,MOC是專門用於虛擬化層的排程服務,將寶貴的CPU與記憶體資源由複雜的雲排程中解放出來,開創了一種新型的雲伺服器形式,神龍能與阿里雲產品家族中的其他計算產品無縫對接。比如儲存、網路、資料庫等產品,完全相容ECS雲伺服器例項的映象系統,可以自由地在普通ECS例項以及神龍雲伺服器例項間變配,從而更多元化地結合客戶的業務場景進行資源構建。

 

所以阿里的“雙十一”既有頂級的武學又有強悍的陣法、兵法加持,所以才能達到如此的高度,不久前阿里的平頭哥晶片公司釋出了無劍平臺,這可能也代表著阿里的技術體系已經到了既剛且靈的境界。不僅如此縱阿里的技術體系最令人驚喜的是這些技術全部出於國產自研,甚至大部分已經開源,相信今後國產的底層軟體也會在阿里等龍頭的帶領下迎來爆發。

相關文章