国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

RocketMQ如何應(yīng)對(duì)每天1500億條的數(shù)據(jù)處理?

開(kāi)發(fā) 前端 開(kāi)發(fā)工具
同程藝龍的機(jī)票、火車票、汽車票、酒店相關(guān)業(yè)務(wù)已經(jīng)接入了 RocketMQ,用于流量高峰時(shí)候的削峰,以減少后端的壓力。

同程藝龍的機(jī)票、火車票、汽車票、酒店相關(guān)業(yè)務(wù)已經(jīng)接入了 RocketMQ,用于流量高峰時(shí)候的削峰,以減少后端的壓力。

同時(shí),對(duì)常規(guī)的系統(tǒng)進(jìn)行解耦,將一些同步處理改成異步處理,每天處理的數(shù)據(jù)達(dá) 1500 億條。

在近期的 Apache RocketMQ Meetup 上,同程藝龍機(jī)票事業(yè)部架構(gòu)師查江,分享了同程藝龍的消息系統(tǒng)如何應(yīng)對(duì)每天 1500 億條的數(shù)據(jù)處理。

通過(guò)此文,您將了解到:

  • 同程藝龍消息系統(tǒng)的使用情況
  • 同程藝龍消息系統(tǒng)的應(yīng)用場(chǎng)景
  • 技術(shù)上踩過(guò)的坑
  • 基于 RocketMQ 的改進(jìn)

同程藝龍消息系統(tǒng)的使用情況

RocketMQ 集群分為 Name Server 和 Broker 兩部分,Name Server 用的是雙主模式,一個(gè)是考慮性能,另一個(gè)考慮安全性。在純數(shù)據(jù)的 Broker 分成很多組,每個(gè)組里面分為 Master 和 Slave。

目前,我們的機(jī)票、火車票、汽車票、酒店相關(guān)業(yè)務(wù)已經(jīng)接入了 RocketMQ,用于流量高峰時(shí)候的削峰,以減少后端的壓力。

同時(shí),對(duì)常規(guī)的系統(tǒng)進(jìn)行解耦,將一些同步處理改成異步處理,每天處理的數(shù)據(jù)達(dá) 1500 億條。

選擇 RocketMQ 的原因是:

  • 接入簡(jiǎn)單,引入的 Java 包比較少
  • 純 Java 開(kāi)發(fā),設(shè)計(jì)邏輯比較清晰
  • 整體性能比較穩(wěn)定的,Topic 數(shù)量大的情況下,可以保持性能

同程藝龍消息系統(tǒng)的應(yīng)用場(chǎng)景

退訂系統(tǒng)

這個(gè)是我們退訂系統(tǒng)中的一個(gè)應(yīng)用場(chǎng)景。用戶點(diǎn)擊前端的退訂按鈕,系統(tǒng)調(diào)用退訂接口,再去調(diào)用供應(yīng)商的退訂接口,從而完成一個(gè)退訂功能。

如果供應(yīng)商的系統(tǒng)接口不可靠,就會(huì)導(dǎo)致用戶退訂失敗,如果系統(tǒng)設(shè)置為同步操作,會(huì)導(dǎo)致用戶需要再去點(diǎn)一次。

所以,我們引入 RocketMQ 將同步改為異步,當(dāng)前端用戶發(fā)出退訂需求,退訂系統(tǒng)接收到請(qǐng)求后就會(huì)記錄到退訂系統(tǒng)的數(shù)據(jù)庫(kù)里面,表示這個(gè)用戶正在退訂。

同時(shí)通過(guò)消息引擎把這條退訂消息發(fā)送到和供應(yīng)商對(duì)接的系統(tǒng),去調(diào)用供應(yīng)商的接口。

如果調(diào)用成功,就會(huì)把數(shù)據(jù)庫(kù)進(jìn)行標(biāo)識(shí),表示已經(jīng)退訂成功。同時(shí),加了一個(gè)補(bǔ)償?shù)哪_本,去數(shù)據(jù)庫(kù)撈那些未退訂成功的消息,重新退訂,避免消息丟失引起的退訂失敗的情況。

房倉(cāng)系統(tǒng)

第二個(gè)應(yīng)用場(chǎng)景是我們的房倉(cāng)系統(tǒng)。這是一個(gè)比較常規(guī)的消息使用場(chǎng)景,我們從供應(yīng)商處采集一些酒店的基本信息數(shù)據(jù)和詳情數(shù)據(jù),然后接入到消息系統(tǒng),由后端的分銷系統(tǒng)、最小價(jià)系統(tǒng)和庫(kù)存系統(tǒng)來(lái)進(jìn)行計(jì)算。

同時(shí)當(dāng)供應(yīng)商有變價(jià)的時(shí)候,變價(jià)事件也會(huì)通過(guò)消息系統(tǒng)傳遞給我們的后端業(yè)務(wù)系統(tǒng),來(lái)保證數(shù)據(jù)的實(shí)時(shí)性和準(zhǔn)確性。

供應(yīng)庫(kù)的訂閱系統(tǒng)

數(shù)據(jù)庫(kù)的訂閱系統(tǒng)也用到了消息的應(yīng)用。一般情況下做數(shù)據(jù)庫(kù)同步,都是通過(guò) binlog 去讀里面的數(shù)據(jù),然后搬運(yùn)到數(shù)據(jù)庫(kù)。

搬運(yùn)過(guò)程中,我們最關(guān)注的是數(shù)據(jù)的順序性,因此在數(shù)據(jù)庫(kù) row 模式的基礎(chǔ)上,新增了一個(gè)功能,以確保每一個(gè) Queue 里面的順序是唯一的。

雖然 Queue 里面的順序天然都是唯一的,但我們?cè)谑褂蒙嫌幸粋€(gè)特點(diǎn),就是把相同 ID 的消息都是放在同一個(gè) Queue 里面的。

例如,圖中右上角 id1 的消息,數(shù)據(jù)庫(kù)主字段是 id1,就統(tǒng)一放在 Queue1 里面,而且是順序的。

在 Queue2 里,兩個(gè) id3 之間被兩個(gè)順序的 id2 間隔開(kāi)來(lái)了,但實(shí)際消費(fèi)讀出來(lái)的時(shí)候,也會(huì)是順序的,由此,可以用多隊(duì)列的順序來(lái)提高整體的并發(fā)度。

技術(shù)上踩過(guò)的坑

供應(yīng)商系統(tǒng)的場(chǎng)景

上圖中,一個(gè) MQ 對(duì)應(yīng)有兩個(gè)消費(fèi)者,他們是在同一個(gè) Group1 中,起初大家都只有 Topic1,這時(shí)候是正常消費(fèi)的。

但如果在***個(gè)消費(fèi)者里面加入一個(gè) Topic2,這時(shí)候是無(wú)法消費(fèi)或消費(fèi)不正常了。

這是 RocketMQ 本身的機(jī)制引起的問(wèn)題,需要在第二個(gè)消費(fèi)者里面加入 Topic2 才能正常消費(fèi)。

支付交易系統(tǒng)的場(chǎng)景

另外一個(gè)是支付交易系統(tǒng),這個(gè)場(chǎng)景下也是有兩個(gè)應(yīng)用,他們都是在同一 Group 和同一 Topic 下,一個(gè)是消費(fèi) Tag1 的數(shù)據(jù),另一個(gè)是消費(fèi) Tag2 的數(shù)據(jù)。

正常情況下,啟動(dòng)應(yīng)該是沒(méi)問(wèn)題的,但是有一天我們發(fā)現(xiàn)一個(gè)應(yīng)用起不來(lái)了,另外一個(gè)應(yīng)用,他只消費(fèi) Tag2 的數(shù)據(jù),但是因?yàn)?RocketMQ 的機(jī)制會(huì)把 Tag1 的數(shù)據(jù)拿過(guò)來(lái),拿過(guò)來(lái)后會(huì)把 Tag1 的數(shù)據(jù)丟棄。

這會(huì)導(dǎo)致用戶在支付過(guò)程中出現(xiàn)支付失敗的情況。對(duì)此,我們把 Tag2 放到 Group2 里面,兩個(gè) Group 就不會(huì)消費(fèi)相同的消息了。

個(gè)人建議 RocketMQ 能夠?qū)崿F(xiàn)一個(gè)機(jī)制,即只接受自己的 Tag 消息,非相關(guān)的 Tag 不去接收。

大量老數(shù)據(jù)讀取的場(chǎng)景

在火車票消費(fèi)的場(chǎng)景中,我們發(fā)現(xiàn)有 200 億條老數(shù)據(jù)沒(méi)有被消費(fèi)。當(dāng)我們消費(fèi)啟動(dòng)的時(shí)候,RocketMQ 會(huì)默認(rèn)從第 0 個(gè)數(shù)據(jù)開(kāi)始讀,這時(shí)候磁盤 IO 飆升到 100%,從而影響到其他消費(fèi)端數(shù)據(jù)的讀取,但這些老數(shù)據(jù)被加載后,并沒(méi)有實(shí)際作用。

因此,對(duì)于大量老數(shù)據(jù)讀取的改進(jìn)方式是:

  • 對(duì)于新消費(fèi)組,默認(rèn)從 LAST_OFFSET 消費(fèi)。
  • Broker 中單 Topic 堆積超過(guò) 1000 萬(wàn)時(shí),禁止消費(fèi),需聯(lián)系管理員開(kāi)啟消費(fèi)。
  • 監(jiān)控要到位,磁盤 IO 飆升時(shí),能立刻聯(lián)系到消費(fèi)方處理。

服務(wù)端的場(chǎng)景

①CentOS 6.6 中 Futex Kernel bug, 導(dǎo)致 Name Server, Broker 進(jìn)程經(jīng)常掛起,無(wú)法正常工作

解決方法:升級(jí)到 6.7

②服務(wù)端 2 個(gè)線程會(huì)創(chuàng)建相同 CommitLog 放入 List,導(dǎo)致計(jì)算消息 offset 錯(cuò)誤,解析消息失敗,無(wú)法消費(fèi),重啟沒(méi)法解決問(wèn)題。

解決方法:線程安全問(wèn)題,改為單線程

③Pull 模式下重置消費(fèi)進(jìn)度,導(dǎo)致服務(wù)端填充大量數(shù)據(jù)到 Map 中,Broker CPU 使用率飆升 100%。

解決方法:Map 局部變量場(chǎng)景用不到,刪除

④Master 建議客戶端到 Slave 消費(fèi)時(shí),若數(shù)據(jù)還沒(méi)同步到 Slave, 會(huì)重置 pullOffset,導(dǎo)致大量重復(fù)消費(fèi)。

解決方法:不重置 offset

⑥同步?jīng)]有 MagicCode,安全組掃描同步端口時(shí),Master 解析錯(cuò)誤,導(dǎo)致一些問(wèn)題。

解決方法:同步時(shí)添加 magicCode 校驗(yàn)

基于 RocketMQ 的改進(jìn)

新增客戶端

新增 .net 客戶端,基于 Java 源代碼原生開(kāi)發(fā);新增 HTTP 客戶端,實(shí)現(xiàn)部分功能,并通過(guò) Netty Server 連接 RocketMQ。

新增消息限流功能

如果客戶端代碼寫錯(cuò)產(chǎn)生死循環(huán),就會(huì)產(chǎn)生大量的重復(fù)數(shù)據(jù),這時(shí)候會(huì)把生產(chǎn)線程打滿,導(dǎo)致隊(duì)列溢出,嚴(yán)重影響我們 MQ 集群的穩(wěn)定性,從而影響其他業(yè)務(wù)。

上圖是限流的模型圖,我們把限流功能加在 Topic 之前。通過(guò)限流功能可以設(shè)置 rate limit 和 size limit 等。

其中 rate limit 是通過(guò)令牌桶算法來(lái)實(shí)現(xiàn)的,即每秒往桶里放多少個(gè)令牌,每秒就消費(fèi)多少速度,或者是往 Topic 里寫多少數(shù)據(jù)。以上的兩個(gè)配置是支持動(dòng)態(tài)修改的。

后臺(tái)監(jiān)控

我們還做了一個(gè)監(jiān)控后臺(tái),用于監(jiān)控消息的全鏈路過(guò)程,包括:

  • 消息全鏈路追蹤,覆蓋消息產(chǎn)生、消費(fèi)、過(guò)期整個(gè)生命周期
  • 消息生產(chǎn)、消費(fèi)曲線
  • 消息生產(chǎn)異常報(bào)警
  • 消息堆積報(bào)警,通知哪個(gè) IP 消費(fèi)過(guò)慢

其他功能:

  • HTTP 方式生產(chǎn),消費(fèi)消息
  • Topic 消費(fèi)權(quán)限設(shè)置,Topic 只能被指定 Group 消費(fèi),防止線上錯(cuò)亂訂閱
  • 支持新消費(fèi)組從***位置消費(fèi) (默認(rèn)是從***條開(kāi)始消費(fèi))
  • 廣播模式消費(fèi)進(jìn)度同步 (服務(wù)端顯示進(jìn)度)

以上便是同程藝龍?jiān)谙⑾到y(tǒng)建設(shè)方面的實(shí)踐。

 

責(zé)任編輯:武曉燕 來(lái)源: 阿里巴巴中間件
相關(guān)推薦

2021-01-25 12:25:49

物聯(lián)網(wǎng)智能冰箱IoT

2023-12-21 08:01:41

RocketMQ消息堆積

2018-12-25 09:44:42

2018-10-11 09:33:51

Kafka消息處理

2010-03-16 18:24:44

Java線程模型

2017-07-21 14:22:17

大數(shù)據(jù)大數(shù)據(jù)平臺(tái)數(shù)據(jù)處理

2023-07-31 08:21:22

語(yǔ)法校對(duì)器Pick

2013-12-16 17:17:01

OpenMp數(shù)據(jù)處理

2023-10-05 12:43:48

數(shù)據(jù)處理

2024-01-31 23:22:35

vaexPython庫(kù)

2024-04-01 10:07:47

應(yīng)用程序數(shù)據(jù)數(shù)據(jù)庫(kù)

2013-08-27 10:55:25

數(shù)據(jù)中心建設(shè)支出服務(wù)器

2016-12-13 11:48:05

數(shù)據(jù)處理不平衡數(shù)據(jù)

2020-11-02 15:56:04

大數(shù)據(jù)數(shù)據(jù)庫(kù)技術(shù)

2025-06-16 07:07:03

Java數(shù)據(jù)Jackson

2018-12-07 14:50:35

大數(shù)據(jù)數(shù)據(jù)采集數(shù)據(jù)庫(kù)

2023-11-29 13:56:00

數(shù)據(jù)技巧

2025-01-07 13:58:08

SQL數(shù)據(jù)處理函數(shù)數(shù)據(jù)庫(kù)

2015-06-16 16:49:25

AWSKinesis實(shí)時(shí)數(shù)據(jù)處理

2023-09-27 15:34:48

數(shù)據(jù)編程
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

国产精品久久久久永久免费观看 | 色综合久久久久| 亚洲最新在线| 婷婷激情久久| 欧美草草影院在线视频| 免费黄视频网站| 在线观看精品视频| 精品久久综合| 色偷偷9999www| 日本精品600av| 日本乱人伦一区| 午夜激情影院| 久久久久久久精| 激情成人开心网| 老司机免费视频久久| 欧美日韩1234| 丁香婷婷自拍| 国产精品女上位| 哪个网站能看毛片| 国产精品123| 99re99热| 久久国产剧场电影| 日韩av影视| 手机精品视频在线观看| 国产一区免费观看| 在线国产欧美| 国产乱码精品一区二区三区日韩精品| 99久久综合狠狠综合久久aⅴ| 国产精品xxxxx| 欧美精品系列| 国产一区二中文字幕在线看 | 午夜免费欧美电影| 中文字幕亚洲欧美一区二区三区 | 亚洲精品一区av在线播放| 国产网友自拍视频导航网站在线观看| 日韩欧美999| 精品久久蜜桃| 亚洲最新色图| 亚洲自拍av在线| 怡红院红怡院欧美aⅴ怡春院| 色综合久久中文字幕| a天堂中文在线官网| 午夜私人影院久久久久| 尤物视频免费在线观看| 欧美亚洲免费在线一区| 亚洲成人影院麻豆| 极品少妇一区二区| 免费观看黄色大片| 丁香婷婷综合网| 91免费视频网站在线观看| 国产午夜一区二区三区| 加勒比在线日本| 亚洲无人区一区| 搞黄视频在线观看| 日韩免费一区二区三区在线播放| 永久免费网站在线| 亚洲视频在线视频| 9国产精品午夜| 成人精品一区二区三区| 国产亚洲成人一区| 蜜臀av性久久久久蜜臀av| 久久综合视频网| 精品国产一区二区三区四区阿崩| 91福利视频网站| 黄视频网站在线观看| 欧美成在线视频| 日本暖暖在线视频| 精品国产伦一区二区三区观看方式| 亚洲黄色免费看| 欧美黑人性生活视频| 黄网在线免费| 欧美不卡在线视频| 成人精品在线| 国产乱人伦真实精品视频| 红桃视频欧美| 日韩激情视频一区二区| 一色屋精品亚洲香蕉网站| 国产精品影院在线| 国产一区二区三区视频在线观看| 精品国产影院| 国产高清精品一区二区三区| 久久国产精品美女| 国产精品久久久久久久9999| 国产情侣一区| 成人黄色片视频| 欧美日韩另类在线| 高清在线视频不卡| 欧美在线视频a| 丝袜国产日韩另类美女| 亚洲免费av一区二区三区| 在线影院国内精品| 日本久久一区| 精品免费国产| 国产精品美女久久久久aⅴ国产馆| 黄色国产网站在线播放| 欧美性视频网站| 麻豆成人av在线| 最色在线观看| 日韩中文字幕在线视频播放| 很黄很黄激情成人| 青青青国产在线视频| 日韩欧美精品三级| 日韩成人激情| 国产男女在线观看| 日韩午夜激情av| 欧美色图国产精品| 成人中文字幕在线播放| 欧美一区二区美女| 色偷偷综合网| 国产九九在线视频| 亚洲欧美变态国产另类| 欧美精品午夜| 成人免费淫片95视频观看网站| 亚洲成av人片在线观看香蕉| 禁断一区二区三区在线| 国产资源在线视频| 精品国内二区三区| 女生裸体视频一区二区三区| 三上悠亚在线一区二区| 一区二区三区久久精品| 午夜在线a亚洲v天堂网2018| 成人免费看片网站| 91视频免费看| 老牛影视精品| 久久精品综合一区| 亚洲国产精品视频| 亚洲一级大片| 欧美精品一区二区性色a+v| 欧美亚洲愉拍一区二区| 久久不见久久见免费视频7| 野外做受又硬又粗又大视频√| 91精品久久久久久久99蜜桃| 久久久人成影片免费观看| 成人毛片高清视频观看| yellow中文字幕久久| 精品在线你懂的| 欧美videos极品另类| 91精品在线播放| 亚洲免费在线播放| 久久超级碰碰| 国产精品一区二区小说| 久久国产精品免费视频| av中文字幕不卡| www.日韩| 麻豆传媒网站在线观看| 亚洲高清久久网| 日本伊人午夜精品| 自拍日韩亚洲一区在线| 亚洲成人精品av| 午夜影院日韩| 中文字幕在线播放网址| 欧美午夜精品久久久久免费视| 欧美视频一区二区三区| 黄色成人av网站| av播放在线观看| 国产三级精品在线不卡| 婷婷夜色潮精品综合在线| 色琪琪久久se色| 一不卡在线视频| 99精彩视频在线观看免费| 日本久久电影网| 好吊日精品视频| 18+激情视频在线| 亚洲欧美日韩不卡一区二区三区| 日韩一二三四区| 国产精品亚洲成人| 国产一区二区三区黄网站| 男操女免费网站| 国产精品亚洲精品| 欧美在线视频你懂得| 久久久精品午夜少妇| 性国裸体高清亚洲| 国产特级淫片高清视频| 亚洲 日韩 国产第一| 亚洲高清免费观看高清完整版在线观看| 成人在线免费小视频| av二区在线| 日韩video| 久久久人成影片一区二区三区| 亚洲黄色免费电影| 欧美精品麻豆| 欧美男人天堂| aaa毛片在线观看| 国产精品2018| 欧美高清性hdvideosex| 国产美女精品人人做人人爽| 麻豆精品久久| 在线理论视频| 亚洲欧洲日本国产| 色综合色综合网色综合| 亚洲成人7777| 美女脱光内衣内裤视频久久影院| 2019年精品视频自拍| 97福利电影| 久久99精品久久久久久水蜜桃| 亚洲大尺度美女在线| 国产精品区一区二区三区| 亚洲成人在线| 在线免费观看亚洲| 久草在线新视觉|