支付寶系統架構內部剖析

来源:https://www.cnblogs.com/Javame/archive/2018/09/20/9680234.html
-Advertisement-
Play Games

支付寶系統架構概況 典型處理預設 資金處理平臺 財務會計 支付清算 核算中心 交易 柔性事務 消息系統 數據分佈 數據緩存 支付寶技術產品線 支付寶的開源分散式消息中間件–Metamorphosis(MetaQ) Metamorphosis (MetaQ) 是一個高性能、高可用、可擴展的分散式消息中 ...


支付寶系統架構概況

典型處理預設

 

資金處理平臺

財務會計

支付清算

 

核算中心

 

交易

 

柔性事務

 

消息系統

 

 

數據分佈

 

 

 

 

數據緩存

 

支付寶技術產品線

 

支付寶的開源分散式消息中間件–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來使用的其他功能。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 有一天看到css3旋轉這個屬性,突發奇想的寫了一個鐘錶(沒做瀏覽器相容),來一起看看是怎麼寫的吧! 先給個成品圖,最終結果是個樣子的(動態的). 首先,思考了一下頁面的佈局,大致需要4層div,最底層是一個表盤的背景圖,然後其餘3層分別是時針,分針,秒針的圖層. html代碼如下 ↓ 變數名是隨便起 ...
  • 常見用法: 1、該運算符主要用於函數調用。 function push(array, ...items) { array.push(...items); } function add(x, y) { return x + y; } var numbers = [4, 38]; add(...numb ...
  • 題目如下: 此題包含7小問: 先看此題的上半部分做了什麼,首先定義了一個叫Foo的函數,之後為Foo創建了一個叫getName的靜態屬性存儲了一個匿名函數,之後為Foo的原型對象新創建了一個叫getName的匿名函數。之後又通過函數變數表達式創建了一個getName的函數,最後再聲明一個叫getNa ...
  • function getIndex(ele){ var parent=ele.parentNode; var brothers=parent.children; for(var i=0,len=brothers.length;i<len;i++){ if(ele==brothers[i]){ ret ...
  • Http負載均衡 Nginx Nginx不僅是一個小巧且高效的HTTP伺服器,也可以做一個高效的負載均衡反向代理,通過它接受用戶的請求並分發到多個Mongrel進程可以極大提高Rails應用的併發能力 Tcp負載均衡 LVS LVS(LinuxVirtual Server)是由章文嵩博士主導開發的一 ...
  • 最近在看javascript高級程式設計這本書,看到了面向對象這一本部分,感覺很重要,所以再一次複習一遍,總結下知識,篇幅過多,分成了三部分,創建對象,原型和原型鏈,繼承,最好可以連著看,不懂得再跳回去看。 面向對象 (Object-Oriented,OO)的語言有一個標誌,那就是它們都有類的的概念 ...
  • 上一篇《HRMS(人力資源管理系統)-從單機應用到SaaS應用-系統介紹》我們已經詳細的分析了HRMS系統具備的功能,並且從HRMS系統的概念、系統功能、HR行業管理現狀及痛點、發展趨勢及行業前景、行業內的服務提供商情況、HRMS系統的建設意義及價值等方面進行了系統化的分析梳理。我想大家已經對於HR... ...
  • RESTful 介面是目前來說比較流行的一種介面,平常在開發中會非常常見。 有過和後端人員對接介面的小伙伴都應該知道,我們所做的大多數操作都是對資料庫的四格操作 “增刪改查” 對應到我們的介面操作分別是: 註意,這裡是我們約定,並非這些動作只能幹這件事情。從表層來說,除get外的其他方法,沒有什麼區 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...