成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

rocketmq簡(jiǎn)介

chnmagnus / 1305人閱讀

摘要:和之間的關(guān)系通過(guò)來(lái)綁定,來(lái)定義,即相同的,等于表示節(jié)點(diǎn),非表示節(jié)點(diǎn)。所有的節(jié)點(diǎn)與集群的所有節(jié)點(diǎn)保持長(zhǎng)連接,定時(shí)注冊(cè)信息到所有的。對(duì)磁盤的訪問(wèn)串行化,避免磁盤竟?fàn)?,不?huì)因?yàn)殛?duì)列增加導(dǎo)致增高。要保證與完全的一致,增加了編程的復(fù)雜度。

Apache RocketMQ?是一個(gè)開(kāi)源的分布式消息和流數(shù)據(jù)平臺(tái)。

1、既然是消息系統(tǒng),最核心的功能就是要提供消息的發(fā)布與訂閱功能,最簡(jiǎn)單的概念模型如下:

但是rocketmq提供的能力會(huì)比這個(gè)復(fù)雜的多,如一個(gè)生產(chǎn)方發(fā)布消息,需要多個(gè)消費(fèi)方訂閱,也會(huì)存在多個(gè)生產(chǎn)方生產(chǎn)消息,一個(gè)消費(fèi)方消費(fèi)消息,出現(xiàn)一對(duì)多,多對(duì)一的情況。

上圖就是擴(kuò)展了producer、consumer和Topic的概念模型,rocketmq最核心的概念就是Tpoic,producer和consumer都是圍繞Topic展開(kāi),每個(gè)broker下可以有多個(gè)topic,topic下又可以有很對(duì)隊(duì)列messageQueue,相同的topic又可以分布在不同broker節(jié)點(diǎn)下,producer發(fā)送消息會(huì)輪訓(xùn)的發(fā)送到topic的隊(duì)列下;相同consumer分組是負(fù)載均衡訂閱消息,不同的consumer分組之間互不干擾,即使廣播訂閱消息;同一Topic下的每個(gè)隊(duì)列只能被相同分組下的一個(gè)consumer訂閱消費(fèi),但一個(gè)consumer可以消費(fèi)多個(gè)隊(duì)列。

2、整體部署架構(gòu)圖

nameserver是幾乎沒(méi)有狀態(tài)的節(jié)點(diǎn),可以集群部署,節(jié)點(diǎn)之間也沒(méi)有任何數(shù)據(jù)同步。

broker的部署相對(duì)復(fù)雜,是一個(gè)數(shù)據(jù)分散集群,分master和slave,每個(gè)master存儲(chǔ)一部分?jǐn)?shù)據(jù),為了數(shù)據(jù)的高可用,每個(gè)master節(jié)點(diǎn)可以有多個(gè)slave節(jié)點(diǎn),master之間無(wú)數(shù)據(jù)同步,master與slave之間有數(shù)據(jù)同步。master和slave之間的關(guān)系通過(guò)brokerName來(lái)綁定,brokerId來(lái)定義,即相同的brokerName,brokerId等于0表示master節(jié)點(diǎn),非0表示slave節(jié)點(diǎn)。所有的broker節(jié)點(diǎn)與nameserver集群的所有節(jié)點(diǎn)保持長(zhǎng)連接,定時(shí)注冊(cè)Topic信息到所有的nameserver。

producer與nameserver集群中的一臺(tái)(隨機(jī))保持長(zhǎng)連接,定時(shí)獲取Topic路由信息,并且與提供Topic服務(wù)的broker的master節(jié)點(diǎn)保持長(zhǎng)連接,并定時(shí)發(fā)送心跳,producer集群也是無(wú)狀態(tài)的,可以集群部署。

consumer與nameserver集群中的一臺(tái)(隨機(jī))保持長(zhǎng)連接,定時(shí)獲取Topic路由信息,并且向提供Topic的broker的master和slave節(jié)點(diǎn)都保持長(zhǎng)連接,并定時(shí)發(fā)送心跳,Consumer既可以從 Master 訂閱消息,也可以從 Slave 訂閱消息,訂閱規(guī)則由 Broker 配置決定,consumer也是集群的部署的,負(fù)載均衡的消費(fèi)Topic的消息。

3、消息的存儲(chǔ)模型

rocketmq的消息存儲(chǔ)與消費(fèi)隊(duì)列是分開(kāi)的,消息被存儲(chǔ)在commitLog下,然后再異步構(gòu)建消費(fèi)隊(duì)列messageQueue,消費(fèi)隊(duì)列并不存儲(chǔ)真正的消息內(nèi)容,只是存儲(chǔ)消息在commitLog下的偏移量、消息的長(zhǎng)度和消息的tag的hashcode。如圖所示:

所有數(shù)據(jù)多帶帶存儲(chǔ)到一個(gè) Commit Log,完全順序?qū)?,隨機(jī)讀。

對(duì)最終用戶展現(xiàn)的隊(duì)列實(shí)際只存儲(chǔ)消息在 Commit Log 的位置信息,并且串行方式刷盤。

這樣設(shè)計(jì)有以下優(yōu)勢(shì):

隊(duì)列輕量化,單個(gè)隊(duì)列數(shù)據(jù)量非常少。

對(duì)磁盤的訪問(wèn)串行化,避免磁盤竟?fàn)?,不?huì)因?yàn)殛?duì)列增加導(dǎo)致 IOWAIT 增高。

但也存在以下缺點(diǎn):

寫(xiě)雖然完全是順序?qū)?,但是讀卻變成了完全的隨機(jī)讀。

讀一條消息,會(huì)先讀 Consume Queue,再讀 Commit Log,增加了開(kāi)銷。

要保證 Commit Log 與 Consume Queue 完全的一致,增加了編程的復(fù)雜度。

4、rocketmq具有以下特點(diǎn)

能夠保證嚴(yán)格的消息順序

提供豐富的消息拉取模式

高效的訂閱者水平擴(kuò)展能力

實(shí)時(shí)的消息訂閱機(jī)制

億級(jí)消息堆積能力

與其他消息隊(duì)列系統(tǒng)的一個(gè)對(duì)比如下:

消息產(chǎn)品 支持客戶端 協(xié)議和規(guī)范 順序消息 定時(shí)消息 批量消息 廣播消息 消息過(guò)濾 消息回溯 消息優(yōu)先級(jí) 高可用和故障切換 消息追蹤 配置 管理和操作工具 Server Triggered Redelivery 消息存儲(chǔ)
ActiveMQ java,c++,php,net 推模型,支持 OpenWire, STOMP, AMQP, MQTT, JMS 獨(dú)占消費(fèi)和消息分組支持順序 支持 不支持 支持 支持 支持 支持 支持,leveldb+zookeeper 不支持 默認(rèn)配置是低級(jí)別的,用戶需要優(yōu)化配置參數(shù) 支持 不支持 支持JDBC,leveldb,kahadb
Kafka java,scala 拉模型, 支持TCP 分區(qū)內(nèi)消息有順序 不支持 支持異步生產(chǎn)者 不支持 支持 支持 不支持 支持,依賴zookeeper 不支持 Kafka使用鍵值對(duì)格式進(jìn)行配置。這些值可以通過(guò)文件提供,也可以通過(guò)編程方式提供 支持,使用命令行 不支持 高性能文件存儲(chǔ)
RocketMQ java,c++,go 拉模型, 支持TCP, JMS, OpenMessaging 確保消息的嚴(yán)格順序,并可以優(yōu)雅地?cái)U(kuò)展 支持 支持同步模式,以避免消息丟失 支持 支持 支持按時(shí)間和偏移量 不支持 支持主從模式 支持 開(kāi)箱即用,用戶只需注意一些配置 支持,命令行和web客戶端 支持 高性能和低延遲的文件存儲(chǔ)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/77214.html

相關(guān)文章

  • RocketMQ架構(gòu)簡(jiǎn)介

    摘要:每個(gè)記錄完整的路由信息,提供相應(yīng)的讀寫(xiě)服務(wù),并支持快速存儲(chǔ)擴(kuò)展。此外,提供災(zāi)難恢復(fù),豐富的指標(biāo)統(tǒng)計(jì)數(shù)據(jù)和警報(bào)機(jī)制,而傳統(tǒng)的消息傳遞系統(tǒng)都缺乏這些機(jī)制。發(fā)送過(guò)程支持并具有低延遲。 概覽 Apache RocketMQ是一款具有低延遲,高性能和可靠性,數(shù)十億容量和靈活可擴(kuò)展性的分布式消息傳遞和流媒體平臺(tái)。它由四部分組成:Name Servers,brokers,producers和cons...

    williamwen1986 評(píng)論0 收藏0
  • 新手也能看懂,消息隊(duì)列其實(shí)很簡(jiǎn)單

    摘要:通過(guò)以上分析我們可以得出消息隊(duì)列具有很好的削峰作用的功能即通過(guò)異步處理,將短時(shí)間高并發(fā)產(chǎn)生的事務(wù)消息存儲(chǔ)在消息隊(duì)列中,從而削平高峰期的并發(fā)事務(wù)。 該文已加入開(kāi)源項(xiàng)目:JavaGuide(一份涵蓋大部分Java程序員所需要掌握的核心知識(shí)的文檔類項(xiàng)目,Star 數(shù)接近 16k)。地址:https://github.com/Snailclimb... 本文內(nèi)容思維導(dǎo)圖:showImg(ht...

    Clect 評(píng)論0 收藏0
  • 說(shuō)說(shuō)我為什么看好Spring Cloud Alibaba

    摘要:最近對(duì)基礎(chǔ)教程系列的催更比較多,說(shuō)一下最近的近況因?yàn)榇蛩阋黄鸶隆T俅?,?duì)于中國(guó)用戶來(lái)說(shuō),還有一個(gè)非常特殊的意義它將曾經(jīng)紅極一時(shí)的,以及阿里巴巴的強(qiáng)力消息中間件融入體系。 最近對(duì)《Spring Cloud Alibaba基礎(chǔ)教程》系列的催更比較多,說(shuō)一下最近的近況:因?yàn)榇蛩鉙pring Boot 2.x一起更新。所以一直在改博客Spring Boot專題頁(yè)和Git倉(cāng)庫(kù)的組織。由于前端技...

    yhaolpz 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<