《RocketMq》五、Client-Producer生產者詳解
Producer的用途大家都很清楚,主要就是生產訊息,那麼分散式模式下與單佇列模式不一樣,如何能夠充分利用分散式的優勢,將生產的訊息分佈到不同的佇列下呢?Rocket-MQ提供了3種不同模式的Producer:
1. NormalProducer
2. OrderProducer
3. TransactionProducer
一、資料結構
1. TopicPublicInfo:僅僅是Producer使用,儲存了messageQueue列表
2.MessageQueue:公用元件,儲存了Queue的標識資訊,<topic、brokerName、queueId>
3.QueueData:包含了Queue的brokerName,queue的讀寫數目等資訊
4.BrokerData:包含了broker的名字,IP,等資訊
二、主要模組
根據<clientId([email protected]), group>每一個DefaultMQProducer有2層的分發:
首先,根據不同的clientId,MQClientManager將給出不同的MQClientInstance;
其次,根據不同的group,MQClientInstance將給出不同的MQProducer和MQConsumer
DefaultMQProducer: 主要儲存了配置資訊,包括clientId,instantName和groupName,以及傳送的網路引數等;
DefaultMQProducerImpl:主要儲存了<topic,TopicPublishInfo>資訊,SendMessageHook、CheckForbiddenHook、RPCHook以及MQClientInstance資訊;
MQClientManager:儲存了<clientId,MQClientInstance>資訊,clientId([email protected]);
MQClientInstance:儲存了producerTable、consumerTable,adminExtTable,NettyClientConfig,<Topic,TopicRouteData>,<brokerName, <brokerId, address>>,RebalanceService, ClientRemotingProcessor, ConsumerStatsManager等資訊;
三、三種處理模式
這三種處理主要是select broker queue的方法不一樣
1. NormalProducer:普通模式;這裡的select呼叫TopicPublishInfo的selectOneMessageQueue,他的機制如下:正常情況下,順序選擇TopicPublishInfo中messageQueueList的queue進行傳送;如果某一個節點發生了超時,則下次選擇queue時,跳過相同的brokerName;
2. OrderProducer:順序模式;假設相同訂單號的支付,退款需要放到同一個佇列,那麼就可以在send的時候,自己實現MessageQueueSelector,根據裡面的arg欄位來選擇queue
3. TransactionProducer:
四、處理邏輯
1. 首先獲取程序pid,將它作為instanceName,系統中所有相同instanceName的Producer和Consumer共用同一個MQClientInstance
2. 將Consumer或者Producer註冊到MQClientInstance
3. 呼叫MQClientInstance.start,啟動如下定時任務
3.1 fetchNameServerAddr:不斷遍歷nameSrv的地址
3.2 updateTopicRouteInfoFromNameServer:從NameSrv遍歷TopicRouteInfo,然後更新producer和consumer的topic資訊
3.3cleanOfflineBroker:清除離線broker相關推薦
《RocketMq》五、Client-Producer生產者詳解
Producer的用途大家都很清楚,主要就是生產訊息,那麼分散式模式下與單佇列模式不一樣,如何能夠充分利用分散式的優勢,將生產的訊息分佈到不同的佇列下呢?Rocket-MQ提供了3種不同模式的Producer:1. NormalProducer2. OrderProducer
FastDFS安裝、配置、部署(三)-Storage配置詳解
1、基本配置# is this config file disabled # false for enabled # true for disabled disabled=false# the name of the group this storage server bel
四、python之函數詳解
list global pan line ice see war -s span 一、函數 1.說白了就是把一組代碼合到一起,可以實現某種功能,需要再用到這種功能的話,直接調用這個函數就行2.函數、方法是一回事3.定義一個函數的格式是:def+函數名+()4.函數必須調用了
js keyup、keypress和keydown事件 詳解
rgs spa 小鍵盤 ansi 使用方法 form 單個 sage ges js keyup、keypress和keydown事件都是有關於鍵盤的事件 當一個按鍵被pressed 或released在每一個現代瀏覽器中,都可能有三種客戶端事件。 keydown even
Linux下用戶組、文件權限詳解
目錄 管理權限 權限不足 日期 查看 add 綜合案例 天然 width 在linux中的每個用戶必須屬於一個組,不能獨立於組外。在linux中每個文件有所有者、所在組、其它組的概念 - 所有者 - 所在組 - 其它組 - 改變用戶所在的組 所有者 一般為文件的創建者,
數學、計算幾何、位運算常見問題詳解
splay nsf let pen ide ont display you size ? 矩陣上的問題(3題) Search a 2D Matrix II public int searchMatrix(int[][] matrix, int target) {
二:mysql安裝配置、主從復制配置詳解
連接 rom con mon 登錄mysql you drop user sysconf type 作者:NiceCui 本文謝絕轉載,如需轉載需征得作者本人同意,謝謝。 本文鏈接:http://www.cnblogs.com/NiceCui/p/8213723.html
python web開發-flask中response、cookies、session對象使用詳解
編程語言 Python Response響應對象:當一個web請求被服務器處理完後,會返回用戶請求的響應,這時候就要用到響應對象,根據響應給用戶的形式不同,響應對象有以下幾種處理方式1. 如果返回的是一個合法的響應對象,它會從視圖直接返回。2. 如果返回的是一個字符串,響應對象會用字符串數據和默認參數
搜索引擎系列八:solr-部署詳解(solr兩種部署模式介紹、獨立服務器模式詳解、SolrCloud分布式集群模式詳解)
nod 為什麽 用途 serve creat 復制 stand 數據 變量名 一、solr兩種部署模式介紹 Standalone Server 獨立服務器模式:適用於數據規模不大的場景 SolrCloud 分布式集群模式:適用於數據規模大,高可靠、高可用、高並發的場景 二
PhantomJS、CasperJS安裝配置圖文詳解
phantom 解壓 tex CA ant lin AS cmd 下載 目前網站主流的加載方式: 一種是同步加載;另一種是異步加載,也即我們常說的用ajax。對於同步加載的網站,普通的爬蟲程序輕松就能搞定。但是對於那種異步請求數據的網站,通常使用selenium+Phant
logback的使用和五分彩源碼搭建詳解
日誌 clas file 用戶 堆棧 開發 分割 jee gin 一、logback的介紹 Logback是由log4j創始人設計的另一個開源日誌組件。 logback-core:其它兩個模塊的基礎模塊:五分彩源碼搭建,企 娥:217 1793 408 logback
PHP isset()、empty()、is_null()的使用區別詳解
erro 警告 說明 variable efi some 布爾值 否則 sse PHP的isset()函數 一般用來檢測變量是否設置 格式:bool isset ( mixed var [, mixed var [, ...]] ) 功能:檢測變量是否設置 返回值: 若變量
Tomcat安裝、配置、優化及負載均衡詳解
error png cache 新的 ip地址 ace ppa 不同步 工作目錄 一、常見JavaWeb服務器 1、WebLogic:是BEA公司的產品、WebSphereAS:是IBM公司的產品、JBossAS:紅帽公司的產品,可以自行了解 2、Tomcat服務器:S
Zookeeper技術:分布式架構詳解、分布式技術詳解、分布式事務
cas 序列號 隔離性 googl 管理系 實現 分布式數據庫 備份 分布式文件系 一、分布式架構詳解 1、分布式發展歷程 1.1 單點集中式 特點:App、DB、FileServer都部署在一臺機器上。並且訪問請求量較少 1.2? 應用服務和數據服務拆分 ?特點:App、
圖的儲存結構(鄰接矩陣、鄰接表、十字連結串列、鄰接多重表)詳解
上篇部落格講到,圖狀結構是非常複雜的結構,圖也是非常複雜的,所以圖的儲存就是一個非常重要的部分,因為我們不僅要表示頂點集,還要表示邊集,如何完整準確的表示圖呢,接下來,給大家講解四種圖的儲存方式。 一、鄰接矩陣法 1、定義 我們用一個二維陣列存放頂點間關係(邊或弧)的資料,這個二維陣
Spring(概念篇):Spring、SpringMVC、SpringBoot以及SpringCloud的概念、關係與區別(詳解)
Spring與Spring MVC Spring Spring是一個一站式的輕量級的Java開發框架 Spring是一個一站式的輕量級的Java開發框架,核心是控制反轉(IOC)和麵向切面(AOP),針對於開發的WEB層(SpringMVC)、業務層(IOC)、持久層(jdbc Te
1105_nginx入門、安裝配置與使用詳解
nginx入門、安裝配置與使用詳解 本文內容: 1. nginx 簡介 2. nginx 安裝配置 3. nginx使用 4.nginx配置location總結及rewrite規則寫法 一、Nginx 的三大功能 1.HTTP伺服器 Nginx
什麽是透明、匿名、高匿代理?詳解!
mar 因此 過程 51cto 大量 .com 數據 示例 應用 隨著大數據的應用越來越廣泛,應用的行業也越來越多,我們每日都可以看到大數據的一些新穎的應用,從而幫助人們從中獲取到真正有用的價值,隨著很多工作的開展,我們需要大量的IP操作,這時為了避免IP被封,使用代理IP
java程式設計師菜鳥進階(五)oracle基礎詳解(五)oracle資料庫體系架構詳解
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
分割槽函式Partition By、帶行號row_number()、排序rank()的用法詳解
partition by關鍵字是分析性函式的一部分,它和聚合函式不同的地方在於它能返回一個分組中的多條記錄,而聚合函式一般只有一條反映統計值的記錄,partition by用於給結果集分組,如果沒有指定那麼它把整個結果集作為一個分組,分割槽函式一般與排名函式一起使用。 準備測試資料: