精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

MQ的那些破事兒,你不好奇嗎?

開發 開發工具
最近mq越來越火,很多公司在用,很多人在用,其重要性不言而喻。本篇從三個方面講解關于mq的相關知識。

[[397434]]

前言

最近mq越來越火,很多公司在用,很多人在用,其重要性不言而喻。但是如果我讓你回答下面的這些問題:

  1. 我們為什么要用mq?
  2. 引入mq會多哪些問題?
  3. 如何解決這些問題?

你心中是否有答案了呢?本文將會一一為你解答,這些看似平常卻很有意義的問題。

1 傳統模式有哪些痛點?

1.1 痛點1

有些復雜的業務系統,一次用戶請求可能會同步調用N個系統的接口,需要等待所有的接口都返回了,才能真正的獲取執行結果。

這種同步接口調用的方式總耗時比較長,非常影響用戶的體驗,特別是在網絡不穩定的情況下,極容易出現接口超時問題。

1.2 痛點2

很多復雜的業務系統,一般都會拆分成多個子系統。我們在這里以用戶下單為例,請求會先通過訂單系統,然后分別調用:支付系統、庫存系統、積分系統 和 物流系統。

系統之間耦合性太高,如果調用的任何一個子系統出現異常,整個請求都會異常,對系統的穩定性非常不利。

1.3 痛點3

有時候為了吸引用戶,我們會搞一些活動,比如秒殺等。

如果用戶少還好,不會影響系統的穩定性。但如果用戶突增,一時間所有的請求都到數據庫,可能會導致數據庫無法承受這么大的壓力,響應變慢或者直接掛掉。

對于這種突然出現的請求峰值,無法保證系統的穩定性。

2 為什么要用mq?

對于上面傳統模式的三類問題,我們使用mq就能輕松解決。

2.1 異步

對于痛點1:同步接口調用導致響應時間長的問題,使用mq之后,將同步調用改成異步,能夠顯著減少系統響應時間。

系統A作為消息的生產者,在完成本職工作后,就能直接返回結果了。而無需等待消息消費者的返回,它們最終會獨立完成所有的業務功能。

這樣能避免總耗時比較長,從而影響用戶的體驗的問題。

2.2 解耦

對于痛點2:子系統間耦合性太大的問題,使用mq之后,我們只需要依賴于mq,避免了各個子系統間的強依賴問題。

訂單系統作為消息生產者,保證它自己沒有異常即可,不會受到支付系統等業務子系統的異常影響,并且各個消費者業務子系統之間,也互不影響。

這樣就把之前復雜的業務子系統的依賴關系,轉換為只依賴于mq的簡單依賴,從而顯著的降低了系統間的耦合度。

2.3 消峰

對于痛點3:由于突然出現的請求峰值,導致系統不穩定的問題。使用mq后,能夠起到消峰的作用。

訂單系統接收到用戶請求之后,將請求直接發送到mq,然后訂單消費者從mq中消費消息,做寫庫操作。如果出現請求峰值的情況,由于消費者的消費能力有限,會按照自己的節奏來消費消息,多的請求不處理,保留在mq的隊列中,不會對系統的穩定性造成影響。

3 引入mq會多哪些問題?

引入mq后讓我們子系統間耦合性降低了,異步處理機制減少了系統的響應時間,同時能夠有效的應對請求峰值問題,提升系統的穩定性。

但是,引入mq同時也會帶來一些問題。

3.1 重復消息

問題重復消費問題可以說是mq中普遍存在的問題,不管你用哪種mq都無法避免。

有哪些場景會出現重復的消息呢?

  1. 消息生產者產生了重復的消息
  2. kafka和rocketmq的offset被回調了
  3. 消息消費者確認失敗
  4. 消息消費者確認時超時了
  5. 業務系統主動發起重試

如果重復消息不做正確的處理,會對業務造成很大的影響,產生重復的數據,或者導致數據異常,比如會員系統多開通了一個月的會員。

3.2 數據一致性問題

很多時候,如果mq的消費者業務處理異常的話,就會出現數據一致性問題。比如:一個完整的業務流程是,下單成功之后,送100個積分。下單寫庫了,但是消息消費者在送積分的時候失敗了,就會造成數據不一致的情況,即該業務流程的部分數據寫庫了,另外一部分沒有寫庫。

 

如果下單和送積分在同一個事務中,要么同時成功,要么同時失敗,是不會出現數據一致性問題的。

但由于跨系統調用,為了性能考慮,一般不會使用強一致性的方案,而改成達成最終一致性即可。

3.3 消息丟失問題

同樣消息丟失問題,也是mq中普遍存在的問題,不管你用哪種mq都無法避免。

有哪些場景會出現消息丟失問題呢?

  1. 消息生產者發生消息時,由于網絡原因,發生到mq失敗了。
  2. mq服務器持久化時,磁盤出現異常
  3. kafka和rocketmq的offset被回調時,略過了很多消息。
  4. 消息消費者剛讀取消息,已經ack確認了,但業務還沒處理完,服務就被重啟了。

導致消息丟失問題的原因挺多的,生產者、mq服務器、消費者 都有可能產生問題,我在這里就不一一列舉了。最終的結果會導致消費者無法正確的處理消息,而導致數據不一致的情況。

3.4 消息順序問題

有些業務數據是有狀態的,比如訂單有:下單、支付、完成、退貨等狀態,如果訂單數據作為消息體,就會涉及順序問題了。如果消費者收到同一個訂單的兩條消息,第一條消息的狀態是下單,第二條消息的狀態是支付,這是沒問題的。但如果第一條消息的狀態是支付,第二條消息的狀態是下單就會有問題了,沒有下單就先支付了?

消息順序問題是一個非常棘手的問題,比如:

  • kafka同一個partition中能保證順序,但是不同的partition無法保證順序。
  • rabbitmq的同一個queue能夠保證順序,但是如果多個消費者同一個queue也會有順序問題。

如果消費者使用多線程消費消息,也無法保證順序。

如果消費消息時同一個訂單的多條消息中,中間的一條消息出現異常情況,順序將會被打亂。

還有如果生產者發送到mq中的路由規則,跟消費者不一樣,也無法保證順序。

3.5 消息堆積

如果消息消費者讀取消息的速度,能夠跟上消息生產者的節奏,那么整套mq機制就能發揮最大作用。但是很多時候,由于某些批處理,或者其他原因,導致消息消費的速度小于生產的速度。這樣會直接導致消息堆積問題,從而影響業務功能。

 

這里以下單開通會員為例,如果消息出現堆積,會導致用戶下單之后,很久之后才能變成會員,這種情況肯定會引起大量用戶投訴。

3.6 系統復雜度提升

這里說的系統復雜度和系統耦合性是不一樣的,比如以前只有:系統A、系統B和系統C 這三個系統,現在引入mq之后,你除了需要關注前面三個系統之外,還需要關注mq服務,需要關注的點越多,系統的復雜度越高。

mq的機制需要:生產者、mq服務器、消費者。

有一定的學習成本,需要額外部署mq服務器,而且有些mq比如:rocketmq,功能非常強大,用法有點復雜,如果使用不好,會出現很多問題。有些問題,不像接口調用那么容易排查,從而導致系統的復雜度提升了。

4 如何解決這些問題?

mq是一種趨勢,總體來說對我們的系統是利大于弊的,難道因為它會出現一些問題,我們就不用它了?

那么我們要如何解決這些問題呢?

4.1 重復消息問題

不管是由于生產者產生的重復消息,還是由于消費者導致的重復消息,我們都可以在消費者中這個問題。

這就要求消費者在做業務處理時,要做冪等設計,如果有不知道如何設計的朋友,可以參考《高并發下如何保證接口的冪等性?》,里面介紹得非常詳情。

在這里我推薦增加一張消費消息表,來解決mq的這類問題。消費消息表中,使用messageId做唯一索引,在處理業務邏輯之前,先根據messageId查詢一下該消息有沒有處理過,如果已經處理過了則直接返回成功,如果沒有處理過,則繼續做業務處理。

4.2 數據一致性問題

我們都知道數據一致性分為:

  • 強一致性
  • 弱一致性
  • 最終一致性

而mq為了性能考慮使用的是最終一致性,那么必定會出現數據不一致的問題。這類問題大概率是因為消費者讀取消息后,業務邏輯處理失敗導致的,這時候可以增加重試機制。

重試分為:同步重試 和 異步重試。

有些消息量比較小的業務場景,可以采用同步重試,在消費消息時如果處理失敗,立刻重試3-5次,如何還是失敗,則寫入到記錄表中。但如果消息量比較大,則不建議使用這種方式,因為如果出現網絡異常,可能會導致大量的消息不斷重試,影響消息讀取速度,造成消息堆積。

而消息量比較大的業務場景,建議采用異步重試,在消費者處理失敗之后,立刻寫入重試表,有個job專門定時重試。

還有一種做法是,如果消費失敗,自己給同一個topic發一條消息,在后面的某個時間點,自己又會消費到那條消息,起到了重試的效果。如果對消息順序要求不高的場景,可以使用這種方式。

4.3 消息丟失問題

不管你是否承認有時候消息真的會丟,即使這種概率非常小,也會對業務有影響。生產者、mq服務器、消費者都有可能會導致消息丟失的問題。

為了解決這個問題,我們可以增加一張消息發送表,當生產者發完消息之后,會往該表中寫入一條數據,狀態status標記為待確認。如果消費者讀取消息之后,調用生產者的api更新該消息的status為已確認。有個job,每隔一段時間檢查一次消息發送表,如果5分鐘(這個時間可以根據實際情況來定)后還有狀態是待確認的消息,則認為該消息已經丟失了,重新發條消息。

這樣不管是由于生產者、mq服務器、還是消費者導致的消息丟失問題,job都會重新發消息。

4.4 消息順序問題

消息順序問題是我們非常常見的問題,我們以kafka消費訂單消息為例。訂單有:下單、支付、完成、退貨等狀態,這些狀態是有先后順序的,如果順序錯了會導致業務異常。

解決這類問題之前,我們先確認一下,消費者是否真的需要知道中間狀態,只知道最終狀態行不行?

其實很多時候,我真的需要知道的是最終狀態,這時可以把流程優化一下:

這種方式可以解決大部分的消息順序問題。

但如果真的有需要保證消息順序的需求。訂單號路由到不同的partition,同一個訂單號的消息,每次到發到同一個partition。

 

4.5 消息堆積

如果消費者消費消息的速度小于生產者生產消息的速度,將會出現消息堆積問題。其實這類問題產生的原因很多,如果你想進一步了解,可以看看我的另一篇文章《我用kafka兩年踩過的一些非比尋常的坑》。

那么消息堆積問題該如何解決呢?

這個要看消息是否需要保證順序。

如果不需要保證順序,可以讀取消息之后用多線程處理業務邏輯。

這樣就能增加業務邏輯處理速度,解決消息堆積問題。但是線程池的核心線程數和最大線程數需要合理配置,不然可能會浪費系統資源。

如果需要保證順序,可以讀取消息之后,將消息按照一定的規則分發到多個隊列中,然后在隊列中用單線程處理。

好了,今天先分享到這來,下期再見。我在這里只是拋磚引玉,其實mq相關的內容還有很多,比如:定時發送、延遲發送、私信隊列、事務問題等等。

 

責任編輯:姜華 來源: 蘇三說技術
相關推薦

2020-12-29 08:47:45

緩沖SQL磁盤

2014-05-30 10:23:15

樂跑手環智能手環運動手環

2022-05-27 08:55:15

工具自動化軟件

2020-11-10 08:41:51

CPU執行任務內存

2020-12-22 10:48:22

Linux網絡包網絡模型

2015-01-06 14:39:41

云計算云存儲數據遷移

2014-03-12 09:23:06

DevOps團隊合作

2022-05-10 09:16:50

MQ內存消費者

2018-11-25 10:08:44

阿里巴巴技術開源

2021-08-16 05:39:33

云計算云計算環境信創云

2021-03-18 09:01:53

軟件開發軟件選型

2023-04-11 07:34:40

分布式系統算法

2024-02-06 08:33:54

文件系統SSD

2014-10-20 10:23:37

2011-03-22 10:49:53

2011-02-25 14:35:00

2022-02-08 17:39:04

MySQL服務器存儲

2018-09-26 06:50:19

2021-06-02 08:33:31

TPCTPC-H系統

2021-06-09 13:28:40

密碼安全身份認證數據安全
點贊
收藏

51CTO技術棧公眾號

久久久午夜精品理论片中文字幕| 欧美色综合网| 这里只有精品免费| 欧美国产视频日韩| 久久久伊人日本| 韩国三级hd两男一女| 亚洲精品福利电影| 日韩美女视频一区二区 | av一级亚洲| 欧美综合一区二区| 欧美无砖专区免费| av中文在线| 永久免费精品视频| 日韩人在线观看| 国产不卡一区二区在线观看| 无码人妻丰满熟妇精品| 美日韩黄色大片| 欧美日韩视频在线第一区| 日本一区网站| 免费国产精品视频| 在线国产日韩| xxxxx91麻豆| 国产全是老熟女太爽了| 综合激情网...| 欧美日韩国产一区二区三区地区| 日本福利视频在线| 日韩激情av| 中文字幕日韩av资源站| 日韩在线三区| 欧美在线一卡| 不卡电影一区二区三区| 欧美性在线观看| 亚洲第一成人网站| 爱高潮www亚洲精品| 4438成人网| 亚州精品一二三区| 欧美日韩精品免费观看视完整| 国产午夜三级一区二区三| 风间由美一区二区三区| 国产精品一品二区三区的使用体验| 欧美亚洲国产一区| 日韩精品在线影院| 加勒比精品视频| 老司机凹凸av亚洲导航| 亚洲国产美女久久久久| 精人妻一区二区三区| 国产一区二区视频免费| 欧美videos极品另类| 久久久综合精品| 看高清中日韩色视频| 天天干天天舔天天射| 成人h精品动漫一区二区三区| 99se婷婷在线视频观看| 亚洲AV无码一区二区三区性| 国产成人在线视频免费播放| 99热在线播放| 色哟哟中文字幕| 99精品久久久久久| 久久综合九色综合久99| 九九热视频在线观看| 久久久久久久久久久黄色| 欧洲一区二区日韩在线视频观看免费 | 最新中文字幕av| 欧美日韩激情| 久久精品国产精品亚洲| 99热精品免费| 亚洲电影在线| 奇米成人av国产一区二区三区| 三级网站在线播放| 日本不卡一区二区三区高清视频| 国产精品直播网红| 天天操天天操天天操天天操天天操| 日韩一级毛片| 欧美成人高清视频| 91精品国产高潮对白| 免费在线亚洲欧美| 国产精品入口免费视| 国产偷拍一区二区| www.久久精品| 四虎影院一区二区三区 | 国产最新视频在线观看| 中文字幕中文乱码欧美一区二区| 一二三在线视频| 性欧美18xxxhd| 欧美日韩日日摸| www.四虎精品| 精品理论电影| 亚洲精品大片www| 亚洲精品一区二区在线| 先锋资源av在线| 青青草综合网| 欧美激情精品久久久久久免费印度 | 精品视频在线免费观看| 国产成人强伦免费视频网站| 欧美电影免费网站| 日韩一区二区三区xxxx| 日本一区二区三区四区五区| 日本免费在线视频不卡一不卡二| 97视频热人人精品| 久草视频视频在线播放| 亚洲猫色日本管| 国产黄色特级片| 伊人久久大香线蕉av超碰| 国产亚洲福利一区| 久久久久久av无码免费网站| 青娱乐精品视频在线| 国产乱人伦精品一区二区| av男人的天堂在线| 黄色成人在线播放| 亚洲成人手机在线观看| 欧美伦理在线视频| 91国产精品电影| 精品国产av鲁一鲁一区| 国产精品三级久久久久三级| 成人av一级片| 亚洲综合影院| 正在播放亚洲1区| 中文字幕亚洲精品在线| 国产成人99久久亚洲综合精品| 日韩欧美亚洲精品| 国内激情视频在线观看| 欧美大胆人体bbbb| 在线成人精品视频| 欧美日韩中文一区二区| 国产69精品久久久久久| 亚洲精品综合久久| 亚洲日本电影在线| 亚洲欧美视频二区| 精品视频网站| 国产精品高潮呻吟久久av无限| 欧洲av在线播放| 亚洲综合色噜噜狠狠| 在线成人精品视频| 91伦理视频在线观看| 日本va欧美va欧美va精品| 国产视频不卡| 99热99re6国产在线播放| 日韩一二三四区| 中文字幕亚洲欧美日韩| 精品在线亚洲视频| 中文字幕久精品免| 亚洲成a人片777777久久| 色伦专区97中文字幕| 亚洲图片小说视频| 中文字幕亚洲一区二区va在线| 欧美日韩在线观看不卡| 日韩成人三级| 国产欧美一区二区| 欧洲不卡av| 欧美一区二区三区播放老司机| 欧美黄色aaa| 国产一区二区视频在线| 大陆极品少妇内射aaaaaa| 日韩成人在线观看视频| 久久99热精品这里久久精品| 亚洲精品中文字幕成人片| 亚洲第一久久影院| 中国av免费看| 可以看av的网站久久看| 日韩欧美99| 粉嫩av国产一区二区三区| 久久av红桃一区二区小说| 色播视频在线播放| 成人av在线播放网址| 亚洲熟妇国产熟妇肥婆| 国产成人三级| 国产日韩精品入口| 午夜羞羞小视频在线观看| 亚洲国产精彩中文乱码av在线播放 | 91视频在线观看| 欧美日韩成人综合| 麻豆疯狂做受xxxx高潮视频| 丝袜美腿成人在线| 亚洲亚洲精品三区日韩精品在线视频 | 女人天堂亚洲aⅴ在线观看| 国产成人女人毛片视频在线| 性国裸体高清亚洲| 日韩中文字幕精品| 亚洲爆乳无码一区二区三区| 岛国精品视频在线播放| 秋霞午夜鲁丝一区二区| 亚洲国产一区二区三区a毛片| 欧洲一区二区日韩在线视频观看免费| 午夜不卡一区| 韩剧1988在线观看免费完整版| 国产小视频在线| 在线播放日韩导航| 中国一级免费毛片| 椎名由奈av一区二区三区| a视频免费观看| 亚洲激情精品| 亚洲精品国产精品国自产| 男人最爱成人网| 久久精品国产精品亚洲| 深夜视频在线免费| 精品日本高清在线播放| 四季av中文字幕| 成人av网址在线| 男女视频在线看| 一区二区三区国产盗摄| 视频一区二区视频| 国产一区二区精品福利地址| 成人女人免费毛片| 久久久久久久性潮| 91精品国产91久久| 18视频在线观看网站| 精品少妇一区二区三区在线视频| 91人妻一区二区三区蜜臀| 99精品视频中文字幕| 精产国品一二三区| 秋霞成人午夜伦在线观看| 国产精品视频一区二区三区四区五区| 久久男人av| 亚洲一区二区三区乱码aⅴ| 欧美日韩激情电影| 亚洲精品国产精品自产a区红杏吧| 免费看毛片的网站| 美女视频网站久久| 国模无码视频一区二区三区| 欧美fxxxxxx另类| 亚洲欧洲日韩精品| 免费精品国产| 国产区一区二区| 国产欧美视频在线| 国产中文字幕日韩| 欧美色片在线观看| 青草青草久热精品视频在线网站 | 天堂中文视频在线| 亚洲麻豆一区| 免费看欧美黑人毛片| 免费看a级黄色片| 欧美激情在线| 一区二区视频在线免费| 久久综合亚洲| 欧美日韩久久一区二区| 影音先锋亚洲天堂| 精品福利视频导航| 日韩av在线播| 午夜精彩视频在线观看不卡| 国产性70yerg老太| 亚洲综合资源| 91国产一区在线| 黑人极品ⅴideos精品欧美棵| 久久成人av网站| 国产在线激情视频| 久久综合色影院| 综合久久2o19| 欧美黑人巨大xxx极品| 欧美人动性xxxxz0oz| 久久久久久综合网天天| 91豆花视频在线播放| 97国产精品人人爽人人做| 97在线视频免费观看完整版| 国产做受高潮69| 人狥杂交一区欧美二区| 欧美一级电影网站| 国产福利小视频| 色老汉av一区二区三区| www.国产一区二区| 欧美伊人精品成人久久综合97| 最新黄色网址在线观看| 欧美日韩一级黄| 91午夜交换视频| 亚洲一二三专区| 久热这里只有精品在线| 精品av在线播放| 精人妻无码一区二区三区| 欧美日韩精品欧美日韩精品| 国产情侣自拍小视频| 亚洲精品一区二区三区福利| 欧美新色视频| 日韩视频在线一区| 日本无删减在线| 国产91在线播放精品91| japanese色国产在线看视频| 热久久免费国产视频| 成人国产网站| 青青青国产精品一区二区| 欧美不卡高清一区二区三区| 91亚洲va在线va天堂va国| 国产精品男女| 午夜精品一区二区在线观看的 | 国模无码大尺度一区二区三区| 又大又长粗又爽又黄少妇视频| 99精品国产一区二区三区不卡| 日韩精品电影一区二区三区| 亚洲亚洲人成综合网络| 欧美一级黄视频| 欧美va亚洲va香蕉在线| 黄色av网址在线免费观看| 久久成人一区二区| 欧美三级网站| 3d动漫啪啪精品一区二区免费| 亚洲精品亚洲人成在线| 国产一级黄色录像片| 久久亚洲一区| 日本精品一二三区| 国产精品麻豆视频| 一级免费在线观看| 91精品国模一区二区三区| 蜜桃成人在线视频| 久久久久国产精品www| 日韩成人在线电影| 免费av在线一区二区| 欧美激情性爽国产精品17p| 亚洲色图 在线视频| xfplay精品久久| 免费在线看黄网址| 7777精品伊人久久久大香线蕉完整版| 无码国产精品一区二区色情男同 | 牛牛精品一区二区| 亚洲a区在线视频| 欧美特黄一级大片| 97xxxxx| 国产精品一区久久久久| 国产精品久久免费观看| 日本久久精品电影| 色屁屁草草影院ccyycom| 欧美猛交ⅹxxx乱大交视频| 男人天堂久久| 手机看片福利永久国产日韩| 免费在线亚洲| 精品黑人一区二区三区观看时间| 亚洲一区二区三区免费视频| 精品人妻一区二区三区三区四区| 日韩在线观看你懂的| av在线一区不卡| 欧美一区2区三区4区公司二百| 1024日韩| 性欧美18—19sex性高清| 亚洲精品成人天堂一二三| 国产精品无码在线播放| 日韩在线不卡视频| 日韩毛片网站| 亚洲在线欧美| 精品一区二区久久| 在线免费看av网站| 91精品综合久久久久久| 菠萝菠萝蜜在线观看| 亚洲一区亚洲二区| 亚洲精品极品少妇16p| 丁香色欲久久久久久综合网| 国产一二精品视频| 欧美日韩免费一区二区| 欧美变态tickling挠脚心| 日本伦理一区二区| 国产精品一区二区av| 99在线观看免费视频精品观看| 在线精品一区二区三区| 欧美日韩国产区| 国产中文在线观看| 国产精品美腿一区在线看| 欧美国产美女| 久久久久亚洲av片无码v| 亚洲最新视频在线观看| 黄色一级a毛片| 51精品在线观看| 欧美久久综合网| 亚洲精品视频三区| 亚洲国产精品影院| 偷拍自拍在线视频| 国产精品高清在线观看| 中文不卡在线| xfplay5566色资源网站| 色综合久久久久久久久| 91社区在线| 成人在线视频网址| 亚洲一区二区免费看| 国精产品视频一二二区| 日韩欧美一级二级三级久久久| 免费看男女www网站入口在线| 日本在线播放一区| 国产精品伊人色| 人人爽人人爽人人片av| 日韩一区二区精品视频| 国产精东传媒成人av电影| 91蝌蚪视频在线观看| 亚洲色图欧美在线| 亚洲 另类 春色 国产| 国产日本欧美一区| 亚洲黄色av| 成人免费视频入口| 精品国一区二区三区| 日本成人三级电影| 91传媒免费视频| 久久精品网站免费观看| 亚洲福利在线观看视频| 欧美与欧洲交xxxx免费观看| 亚洲啊v在线观看| 亚洲欧美色图视频| 日韩一区二区在线观看视频| 欧美一区国产| 久草视频这里只有精品| 国产精品青草久久| 天堂中文在线看| 亚洲aaa激情| 日韩精品亚洲一区二区三区免费| 久久久久久久久久久久国产| 中文字幕精品—区二区| 国产精品色呦|