最全最強解析:支付寶錢包系統架構內部剖析(架構圖)

来源:https://www.cnblogs.com/wlzjdm/archive/2017/12/25/8110456.html
-Advertisement-
Play Games

原文地址:http://www.woshipm.com/pmd/160822.html+ 支付寶系統架構概況 典型處理預設 資金處理平臺 財務會計 支付清算 核算中心 交易 柔性事務 支付寶的開源分散式消息中間件–Metamorphosis(MetaQ) Metamorphosis (MetaQ) ... ...


原文地址:http://www.woshipm.com/pmd/160822.html+

支付寶系統架構概況

QQ20150605112628

典型處理預設

QQ20150605112641

資金處理平臺

QQ20150605112653

財務會計

QQ20150605112701

支付清算

QQ20150605112710

核算中心

QQ20150605112730

交易

QQ20150605112751

柔性事務

QQ20150605112821

QQ20150605112834

QQ20150605112857

QQ20150605112909

QQ20150605112919

QQ20150605112929

QQ20150605112943

QQ20150605112954

QQ20150605113005

QQ20150605113016

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

QQ20150605113032

QQ20150605113042

 

作者:雪姬

來源:移動支付網(微信公眾號:mpaypass)


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

-Advertisement-
Play Games
更多相關文章
  • 最近剛剛用vue寫了個公司項目,使用vue-cli構建的,算是中大型項目吧,然後這裡想記錄並且分享一下其中的知識點,希望對大家有幫助,後期會逐漸分享;話不多說,直接上代碼!! app.vue main.js router文件夾裡面的index.js home.vue pagevue.vue next ...
  • 一、前端MVC概要 1.1、庫與框架的區別 框架是一個軟體的半成品,在全局範圍內給了大的約束。庫是工具,在單點上給我們提供功能。框架是依賴庫的。Vue是框架而jQuery則是庫。 1.2、AMD與CMD 在傳統的非模塊化JavaScript開發中有許多問題:命名衝突、文件依賴、跨環境共用模塊、性能優 ...
  • 閑話不多說,開篇擼代碼,你可以會看到類似如下的結構: See the Pen react props by 糊一笑 (@rynxiao) on CodePen. 當一個組件嵌套了若幹層子組件時,而想要在特定的組件中取得父組件的屬性,就不得不將 一層一層地往下傳,我這裡只是簡單的列舉了3個子組件,而當 ...
  • 1、示例代碼 (註:寫到vue單文件中了) 2、說明 (1)需要transition 標簽包裹。 (2)6個class狀態 (3)效果: ...
  • 本節流程如圖: 現在正式進入打包流程,起步方法為run: 為什麼不介紹compiler對象?因為構造函數中並沒有一個初始化的方法,只是普通的變數聲明,沒啥好講的。 在run方法中,首先是調用了tapable的applyPluginsAsync執行了before-run事件流,該事件流的定義地點如下: ...
  • 例如: !function(){alert('ok')}(); 常見格式:(function() { /* code */ })(); //也等同於此 匿名函數 解釋:包圍函數(function(){})的第一對括弧向腳本返回未命名的函數,隨後一對空括弧立即執行返回的未命名函數,括弧內為匿名函數的參 ...
  • 需求說明:簡單演示ajax提交fromData類型數據。 代碼說明:ajax在傳輸數據的時候基本格式大都是固定的,只需要修改傳輸類型即可。下麵介紹基本的參數提交。 步驟一:建立html或者jsp頁面,引入jquery-3.2.1.min.js(其他版本亦可)。 步驟二:建立文件選擇輸入框,上傳按鈕並 ...
  • 閱讀目錄: 主機安裝 集群搭建 API 操作 API 說明和 etcdctl 命令說明 "etcd" 是 CoreOS 團隊發起的一個開源項目(Go 語言,其實很多這類項目都是 Go 語言實現的,只能說很強大),實現了 分散式鍵值存儲 和 服務發現 ,etcd 和 ZooKeeper/Consul ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...