1. 程式人生 > >阿里專家:講述支付寶內部架構剖析

阿里專家:講述支付寶內部架構剖析

支付寶系統架構概況大資料

典型處理預設大資料

財務會計大資料

支付清算大資料

核算中心大資料

易大資料

柔性事務

支付寶的開源分散式訊息中介軟體

Metamorphosis (MetaQ) 是一個高效能、高可用、可擴充套件的分散式訊息中介軟體,類似於LinkedIn的Kafka,具有訊息儲存順序寫、吞吐量大和支援本地和XA事務等特性,適用 於大吞吐量、順序訊息、廣播和日誌資料傳輸等場景,在淘寶和支付寶有著廣泛的應用,現已開源。

Metamorphosis是淘寶開源的一個Java訊息中介軟體。關於訊息中介軟體,你應該聽說過JMS規範,以及一些開源實現,如ActiveMQ和HornetQ等。Metamorphosis也是其中之一。

Metamorphosis 的起源是我從對linkedin的開源MQ--現在轉移到apache的kafka的學習開始的,這是一個設計很獨特的MQ系統,它採用pull機制,而 不是一般MQ的push模型,它大量利用了zookeeper做服務發現和offset儲存,它的設計理念我非常欣賞並贊同,強烈建議你閱讀一下它的設計 文件,總體上說metamorphosis的設計跟它是完全一致的。但是為什麼還需要meta呢?

簡單概括下我重新寫出meta的原因:

1.Kafka是scala寫,我對scala不熟悉,並且kafka整個社群的發展太緩慢了。

2.有一些功能是kakfa沒有實現,但是我們卻需要:事務、多種offset儲存、高可用方案(HA)等

3.Meta相對於kafka特有的一些功能:

-文字協議設計,非常透明,支援類似memcached stats的協議來監控broker

-純Java實現,從通訊到儲存,從client到server都是重新實現。

-提供事務支援,包括本地事務和XA分散式事務

-支援HA複製,包括非同步複製和同步複製,保證訊息的可靠性

-支援非同步傳送訊息

-消費訊息失敗,支援本地恢復

-多種offset儲存支援,資料庫、磁碟、zookeeper,可自定義實現支援group commit,提升資料可靠性和吞吐量。

-支援訊息廣播模式

-一系列配套專案:python客戶端、twitter storm的spout、tail4j等。

因此meta相比於kafka的提升是巨大的。meta在淘寶和支付寶都得到了廣泛應用,現在每天支付寶每天經由meta路由的訊息達到120億,淘寶也有每天也有上億的訊息量。

Meta適合的應用:

-日誌傳輸,高吞吐量的日誌傳輸本來就是kafka的強項;

-訊息廣播功能,如廣播快取配置失效;

-資料的順序同步功能,如mysql binlog複製;

-分散式環境下(broker,producer,consumer都為叢集)的訊息路由,對順序和可靠性有極高要求的場景;

-作為一般MQ來使用的其他功能。

內部結構

以上內容分享給喜歡程式設計,有夢想成為架構師的程式設計師們

作者:JAVA架構師的圈子 連結:https://www.jianshu.com/p/0640cb90a168 來源:簡書 簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處。