1. 程式人生 > >支付寶系統架構內部剖析

支付寶系統架構內部剖析

fse zook 設計理念 架構 本地事務 produce 統架構 發送消息 為什麽

支付寶系統架構概況

技術分享圖片

典型處理默認

技術分享圖片

資金處理平臺

技術分享圖片

財務會計

技術分享圖片

支付清算

技術分享圖片

核算中心

技術分享圖片

交易

技術分享圖片

柔性事務

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

消息系統

技術分享圖片

技術分享圖片

技術分享圖片

數據分布

技術分享圖片

數據緩存

技術分享圖片

支付寶技術產品線

技術分享圖片

支付寶的開源分布式消息中間件–Metamorphosis(MetaQ)

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來使用的其他功能。

支付寶系統架構內部剖析