自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

用了MQ消息中間件后,我開(kāi)始后悔了

開(kāi)發(fā) 架構(gòu)
在面試中要答好這個(gè)問(wèn)題,首先一定要熟悉MQ這個(gè)技術(shù)的優(yōu)缺點(diǎn)。了解清楚把他引入系統(tǒng)是為了解決哪些問(wèn)題的,但是他自身又會(huì)帶來(lái)哪些問(wèn)題。

一、 前情回顧

上篇文章《??為什么要使用MQ消息中間件?這幾個(gè)問(wèn)題必須拿下!??》,給大家講了講消息中間件引入系統(tǒng)架構(gòu)的作用,主要是解決哪些問(wèn)題的。

其比較常見(jiàn)的實(shí)踐場(chǎng)景是:

  • 復(fù)雜系統(tǒng)的解耦
  • 復(fù)雜鏈路的異步調(diào)用
  • 瞬時(shí)高峰的削峰處理

二、 正式開(kāi)始

這篇文章給大家講講,如果你在系統(tǒng)架構(gòu)里引入了消息中間件之后,會(huì)有哪些缺點(diǎn)?

1.系統(tǒng)可用性降低

首先是你的系統(tǒng)整體可用性絕對(duì)會(huì)降低,給你舉個(gè)例子,我們就拿之前的一幅圖來(lái)說(shuō)明。

比如說(shuō)一個(gè)核心鏈路里面,系統(tǒng)A -> 系統(tǒng)B -> 系統(tǒng)C,然后系統(tǒng)C是通過(guò)MQ異步調(diào)用系統(tǒng)D的。

用了MQ消息中間件后,我開(kāi)始后悔了

看起來(lái)很好,你用這個(gè)MQ異步化的手段解決了一個(gè)核心鏈路執(zhí)行性能過(guò)差的問(wèn)題。

但是你有沒(méi)有考慮另外一個(gè)問(wèn)題,就是萬(wàn)一你依賴(lài)的那個(gè)MQ中間件突然掛掉了怎么辦?這個(gè)還真的不是異想天開(kāi),MQ、Redis、MySQL這些組件都有可能會(huì)掛掉。

一旦你的MQ掛了,就導(dǎo)致你的系統(tǒng)的核心業(yè)務(wù)流程中斷了。本來(lái)你要是不引入MQ中間件,那其實(shí)就是一些系統(tǒng)之間的調(diào)用,但是現(xiàn)在你引入了MQ,就導(dǎo)致你多了一個(gè)依賴(lài)。一旦多了一個(gè)依賴(lài),就會(huì)導(dǎo)致你的可用性降低。

因此,一旦引入了MQ中間件,你就必須去考慮這個(gè)MQ是如何部署的,如何保證高可用性。

甚至在復(fù)雜的高可用的場(chǎng)景下,你還要考慮如果MQ一旦掛了以后,你的系統(tǒng)有沒(méi)有備用兜底的技術(shù)方案,可以保證系統(tǒng)繼續(xù)運(yùn)行下去。

之前寫(xiě)過(guò)一篇文章,涉及到了MQ掛掉之后的高可用保障方案。

大伙如果感興趣,可以參考一下:

《??用RocketMQ實(shí)現(xiàn)可靠消息最終一致性方案,yyds!??》

通過(guò)這篇文章,具體看看我們?cè)诟鞣N場(chǎng)景下遇到MQ故障采取的高可用降級(jí)方案。

2.系統(tǒng)穩(wěn)定性降低

還是上面那張圖,大家再來(lái)看一下。

用了MQ消息中間件后,我開(kāi)始后悔了

不知道大家有沒(méi)有發(fā)現(xiàn)一個(gè)問(wèn)題,這個(gè)鏈路除了MQ中間件掛掉這個(gè)可能存在的隱患之外,可能還有一些其他的技術(shù)問(wèn)題。

比如說(shuō),莫名其妙的,系統(tǒng)C發(fā)了一個(gè)消息到MQ,結(jié)果那個(gè)消息因?yàn)榫W(wǎng)絡(luò)故障等問(wèn)題,就丟失了。這就導(dǎo)致系統(tǒng)D沒(méi)有收到那條消息。

這可就慘了,這樣會(huì)導(dǎo)致系統(tǒng)D沒(méi)完成自己該做的任務(wù),此時(shí)可能整個(gè)系統(tǒng)會(huì)出現(xiàn)業(yè)務(wù)錯(cuò)亂,數(shù)據(jù)丟失,嚴(yán)重的bug,用戶(hù)體驗(yàn)很差等各種問(wèn)題。

這還只是其中之一,萬(wàn)一說(shuō)系統(tǒng)C給MQ發(fā)送消息,不小心一抽風(fēng)重復(fù)發(fā)了一條一模一樣的,導(dǎo)致消息重復(fù)了,這個(gè)時(shí)候該怎么辦?

可能會(huì)導(dǎo)致系統(tǒng)D一下子把一條數(shù)據(jù)插入了兩次,導(dǎo)致數(shù)據(jù)錯(cuò)誤,臟數(shù)據(jù)的產(chǎn)生,最后一樣會(huì)導(dǎo)致各種問(wèn)題。

或者說(shuō)如果系統(tǒng)D突然宕機(jī)了幾個(gè)小時(shí),導(dǎo)致無(wú)法消費(fèi)消息,結(jié)果大量的消息在MQ中間件里積壓了很久,這個(gè)時(shí)候怎么辦?

即使系統(tǒng)D恢復(fù)了,也需要慢慢的消費(fèi)數(shù)據(jù)來(lái)進(jìn)行處理。

所以這就是引入MQ中間件的第二個(gè)大問(wèn)題,系統(tǒng)穩(wěn)定性可能會(huì)下降,故障會(huì)增多,各種各樣亂七八糟的問(wèn)題都可能產(chǎn)生。

而且一旦產(chǎn)生了一個(gè)問(wèn)題,就會(huì)導(dǎo)致系統(tǒng)整體出問(wèn)題。就需要為了解決各種MQ引發(fā)的技術(shù)問(wèn)題,采取很多的技術(shù)方案。

關(guān)于這個(gè),我們后面會(huì)用專(zhuān)門(mén)的文章聊聊MQ中間件的這些問(wèn)題的解決方案,包括:

  • 消息高可靠傳遞(0丟失)
  • 消息冪等性傳遞(絕對(duì)不重復(fù))
  • 百萬(wàn)消息積壓的線上故障處理

3.分布式一致性問(wèn)題

引入消息中間件,還有分布式一致性的問(wèn)題。

舉個(gè)例子,比如說(shuō)系統(tǒng)C現(xiàn)在處理自己本地?cái)?shù)據(jù)庫(kù)成功了,然后發(fā)送了一個(gè)消息給MQ,系統(tǒng)D也確實(shí)是消費(fèi)到了。

但是結(jié)果不幸的是,系統(tǒng)D操作自己本地?cái)?shù)據(jù)庫(kù)失敗了,那這個(gè)時(shí)候咋辦?

系統(tǒng)C成功了,系統(tǒng)D失敗了,會(huì)導(dǎo)致系統(tǒng)整體數(shù)據(jù)不一致了啊。

所以此時(shí)又需要使用可靠消息最終一致性的分布式事務(wù)方案來(lái)保障。

關(guān)于這個(gè),可以參考之前的一篇文章:

《??用RocketMQ實(shí)現(xiàn)可靠消息最終一致性方案,yyds!??》

我們?cè)诶锩嬖敿?xì)闡述了系統(tǒng)之間異步調(diào)用場(chǎng)景下,如何采用分布式事務(wù)方案保證其數(shù)據(jù)一致性。

三、總結(jié)

最后,我們來(lái)做一個(gè)簡(jiǎn)單的小結(jié)。

在面試中要答好這個(gè)問(wèn)題,首先一定要熟悉MQ這個(gè)技術(shù)的優(yōu)缺點(diǎn)。了解清楚把他引入系統(tǒng)是為了解決哪些問(wèn)題的,但是他自身又會(huì)帶來(lái)哪些問(wèn)題。

此外,對(duì)于引入MQ以后,是否對(duì)他自身可能引發(fā)的問(wèn)題有一些方案的設(shè)計(jì),來(lái)保證你的系統(tǒng)高可用、高可靠的運(yùn)行,保證數(shù)據(jù)的一致性。這個(gè)也有做好相應(yīng)的準(zhǔn)備。?

責(zé)任編輯:武曉燕 來(lái)源: 今日頭條
相關(guān)推薦

2023-06-29 10:10:06

Rocket MQ消息中間件

2023-10-24 07:50:18

消息中間件MQ

2022-12-15 17:13:22

MQRocketMQ架構(gòu)

2016-09-12 18:01:05

IBM

2015-08-11 11:16:36

淘寶中間件

2022-11-02 10:08:46

分布式高并發(fā)消息中間件

2021-12-14 10:39:12

中間件ActiveMQRabbitMQ

2022-08-09 08:31:29

RocketMQ消息中間件

2023-05-08 08:09:26

路由元信息謂詞

2022-07-25 06:46:24

MQ中間件消息中間件

2024-01-24 08:19:02

Stream應(yīng)用場(chǎng)景注解

2022-02-13 23:04:28

RedisRabbitMQKafka

2022-10-21 10:48:17

消息中間件互聯(lián)網(wǎng)應(yīng)用協(xié)議

2019-07-19 07:56:13

消息隊(duì)列消息代理消息中間件

2023-10-16 12:25:48

2024-07-11 11:17:00

消息隊(duì)列Java

2019-11-18 09:58:11

中間件投遞模式

2022-09-21 16:09:28

消息中間件

2022-12-27 17:56:40

ack機(jī)制RocketMQ

2019-12-13 10:32:56

開(kāi)源消息中間件
點(diǎn)贊
收藏

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