成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

面試官:如果讓你設計一個高并發的消息中間件,你會怎么做?

開發 架構
相信很多小伙伴對于生產者和消費者模型都比較了解了,簡單的說:就是消息中間件能夠使其他應用來生產消息,也能夠使其他應用來消費相應的消息。

[[375758]]

作者個人研發的在高并發場景下,提供的簡單、穩定、可擴展的延遲消息隊列框架,具有精準的定時任務和延遲隊列處理功能。自開源半年多以來,已成功為十幾家中小型企業提供了精準定時調度方案,經受住了生產環境的考驗。為使更多童鞋受益,現給出開源框架地址:https://github.com/sunshinelyz/mykit-delay

寫在前面

很多小伙伴去大廠面試,幾乎都會遇到一些開放式的題目,這些開放式的題目沒有固定的答案,但是它能夠實實在在的體現面試者較為真實的系統設計能力和技術功底。如果你回答的比較完美,那么,通過這種開放式題目,就能夠讓你從眾多的面試者中脫穎而出。今天,我們就一起來聊聊,去大廠面試時,一個較為常見的開放式題目:如果讓你設計一個高并發的消息中間件,你會怎么做?

消息中間件涉及的知識點

要想設計一個具有高并發的消息中間件,那么首先就要了解下消息中間件涉及哪些具體的知識點。通常,設計一個良好的消息中間件最少需要滿足如下條件:

  • 生產者、消費者模型。
  • 支持分布式架構。
  • 數據的高可用。
  • 消息數據不丟失。

接下來,我們就針對消息中間件來分別談談這些技術點。

生產者消費者模型

相信很多小伙伴對于生產者和消費者模型都比較了解了,簡單的說:就是消息中間件能夠使其他應用來生產消息,也能夠使其他應用來消費相應的消息。

對于生產者和消費者模型,我們需要考慮的問題點就比較多了。接下來,我就一步步來引導大家進行思考。

首先,我們來思考這樣一個問題:如果生產者生產了消息,那么消息中間件應該怎樣存儲相應的數據呢?存儲在內存? 存儲在磁盤?還是同時存儲在內存和磁盤中呢?

如果是將消息數據同時存儲在內存和磁盤中,我們又該如何處理這些數據呢?是生產者將消息投遞到消息中間件之后,我們就立刻將數據寫入磁盤?還是說數據先駐留到內存,然后每隔一段時間刷到磁盤上?如果是每隔一段時間刷到磁盤上,那我們又要考慮磁盤文件的切分問題,也就是說,需要將消息數據分成多少個磁盤文件?(總不能把所有的數據放到一個磁盤文件中吧)。如果是需要切分成多個磁盤文件,那切分的規則又是什么呢?

上面這些問題都是我們在設計一個消息中間件時需要考慮的問題。然而,這還只是一小部分問題。如果想在面試時脫穎而出,那就還需要繼續往下看,還有一些重要的問題點需要注意。

如果文件按照一定的規則切分到多個磁盤文件中了,那是不是還需要管理元數據來標識數據的具體消息(就像是Hadoop中的NameNode節點中存儲著DataNode的元數據信息,NameNode節點通過這些元數據信息就能夠更好的管理DataNode節點)?這些元數據可以包括:消息數據的偏移量、也可以是消息數據的唯一ID。

考慮完數據的存儲問題,我們還需要考慮的是:消息中間件是如何將數據投遞到對應的消費者的?

在設計生產者和消費者時,還一個很重要的問題需要我們考慮:我們在設計消息中間件時,采用的消費模式是什么?會不會將數據均勻的分配給消費者?還是會通過一些其他的規則將數據投遞到消費者?

支持分布式架構

如果我們設計的消息中間件,每天會承載TB級別的數據高并發和高吞吐量的寫入操作。這里,我們就需要考慮將消息中間件設計成分布式架構。

在設計分布式架構時,我們還需要考慮將存儲的比較大的數據,做成分片存儲,對數據進行分片等操作。

除了這些,我們還需要考慮另外一個核心問題:對于消息中間件來說,需要支持自動擴容操作。

還有就是是否支持數據分片,如何實現數據分片的擴容和自動數據負載均衡遷移等。

數據的高可用

一般互聯網應用的高可用,是通過本地堆內存,分布式緩存,和一份數據在不同的服務器上都搞一個副本來實現的。此時,任何一個存儲節點宕機,都不會影響整體的高可用。我們在設計消息中間件時也可以參考這個思路。

消息數據不丟失

此時,我們就需要提供手動ACK的機制,也就是說:當消費者真正消費消息完畢后,向消息中間件返回“ 處理完成” 的標識,消息中間件刪除相應的已處理的消息。

但是,細化的話,這里,我們就需要兩套ACK機制:

  • 一種ACK對應的是生產端。如果一直沒有接收到ACK消息,則需要通過生產者來重新發送一條消息來保證生產消息成功。
  • 另一種ACK對應的是消費端。一旦一條消息消費并處理成功,必須返回一個ack給消息中間件,然后消息中間件才能刪除這條消息。否則一旦消費者宕機,就必須重發這條消息給其他的消費者實例,保證消息一定會被處理成功。

今天,我們沒有聊具體的業務點,而是從整體上考慮:如果實現一個消息中間件,需要我們注意的各項知識點和專業技能!好了,今天就到這兒吧。

 本文轉載自微信公眾號「冰河技術」,可以通過以下二維碼關注。轉載本文請聯系冰河技術公眾號。 

 

責任編輯:武曉燕 來源: 冰河技術
相關推薦

2024-08-28 08:38:51

2022-09-19 18:14:58

分布式架構中間件

2022-09-03 18:00:05

消息中間件MQ

2025-04-29 02:00:00

高并發系統場景

2023-01-15 17:57:12

緩存技術kafka磁盤

2023-01-13 18:04:03

面試題消息中間件

2021-08-02 17:21:08

設計模式訂閱

2021-12-16 08:21:31

高并發消息中間件

2021-07-09 10:11:34

Redis云數據技術

2021-06-15 10:01:02

應用系統軟件

2021-06-29 11:05:25

MySQLCPU數據庫

2025-06-04 03:15:00

高并發短鏈系統

2017-11-27 06:01:37

數據庫中間件中間層

2023-12-22 09:03:31

2017-11-30 08:56:14

數據庫中間件架構師

2022-11-06 18:17:43

Java核心系統鏈路

2022-02-17 08:57:18

內存設計進程

2024-07-11 11:17:00

消息隊列Java

2023-08-28 08:52:49

監聽頁面用戶

2015-08-13 10:29:12

面試面試官
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一区二区三区免费 | 99久久久国产精品免费消防器 | 国产一区二区中文字幕 | 亚洲一区二区在线视频 | 亚洲狠狠爱 | 免费视频二区 | 亚洲成人一区 | 国产精品色 | av在线一区二区三区 | 亚洲协和影视 | 日韩美女在线看免费观看 | 亚洲欧美日本国产 | 97免费视频在线观看 | 免费在线一区二区 | 8x国产精品视频一区二区 | 99久久婷婷 | www.97zyz.com | 一级中国毛片 | 91秦先生艺校小琴 | 91香蕉视频在线观看 | 一区二区三区视频在线免费观看 | 久久美女网 | 亚洲一二三视频 | 天天色天天色 | 成人在线观看亚洲 | 瑟瑟激情| 欧美精品一二三 | 第一av| 国产精品1区 | av免费网址 | 欧美成人手机在线 | 国产人成精品一区二区三 | 欧美在线视频一区二区 | 成人在线视频网址 | 影音先锋中文字幕在线观看 | 在线观看日本网站 | www.日本精品 | 黄色一级大片在线免费看产 | 狠狠干美女 | 国产精品二区三区在线观看 | 国产精品久久久久久久久久久免费看 |