您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 >
02 消息訂閱與發布kafka(kafka入門:一個開源的、輕量級、高吞吐、高可用的分布式消息系統)
Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-05-25 04:11:14【】4人已围观
简介如果客戶端沒有指定消費者的id,Kafka會自動為該消費者生成一個全局唯一的id,格式為${groupId}-${hostName}-${timestamp}-${UUID前8位字符}。同一個主題的一
推論: kafka消息是按照消息類型(主題),在一個消費者組中只能消費一次。也就是一個消費者組只消費一類型的消息。如果某個服務要消費一類消息,必須將自己置為不同的消費者組。
Kafka利用ZooKeeper保存相應元數據信息, Kafka元數據信息包括如代理節點信息、Kafka集群信息、舊版消費者信息及其消費偏移量信息、主題信息、分區狀態信息、分區副本分配方案信息、動態配置信息等。 Kafka在啟動或運行過程當中會在ZooKeeper上創建相應節點 來保存元數據信息, Kafka通過監聽機制在這些節點注冊相應監聽器來監聽節點元數據的變化 ,從而由ZooKeeper負責管理維護Kafka集群,同時通過ZooKeeper我們能夠很方便地對Kafka集群進行水平擴展及數據遷移。
消息隊列之zeroMQ、rabbitMQ、kafka
首先消息是網絡通訊的載體,隊列可以理解是一種先進先出的數據結構,消息隊列是存放消息的容器,是分布式系統中的重要組件。消息隊列的優勢在于:解耦、異步、削峰,把相關性不
強的模塊獨立分開視為解耦,異步就是非必要邏輯異步方式處理,加快響應速度,削峰是避免短期高并發導致系統問題進行緩沖隊列處理。消息隊列的缺點在于:加強系統復雜性、系統可用性降低,使
用了消息隊列系統出現問題排查的范圍就變大、需要考慮消息隊列導致的問題。
本文說明主流的消息隊列,針對使用過的zeroMQ和rabbitMQ、Kakfa:
zeroMQ :C語言開發,號稱最快的消息隊列,本著命名zero的含義,中油中間架構使用簡單,表面上是基于socket的封裝套接字API,在多個節點應用場景下非常靈活、架構的可擴展性很強,
實現N到M的協同處理;
zmq的socket模式: req、rep、push、pull、pub、sub、router、dealer。
(1)req和rep:請求回應模型,req和rep都可以請求和回答,不同的只是req是先send再rec,rep是先rec再send。支持N個請求端一個接收端,也支持N個接收端一個請求端。N個接收端采
用rr負載均衡。 哪個是“一”端,哪個就bind端口,“N”端就只能買粉絲nnect,所以,req+rep無論誰bind端口,肯定要有一個是“一”。
(2) router和dealer:隨時可以發送和接收的req和rep,看起來router+dealer跟 req+rep屬于同類功能。因為router和dealer可以隨時發送接收,所以它們可以用來做路由。一個router用來響
應N個req,然后它在響應處理的時候,再通過另一個socket把請求扔出去,接收者是另外的M個rep,這就做到N:M。
(3)pub和sub :訂閱和推送,對應發布者和訂閱者。
(4)push和pull:就是管道,一個只推數據,一個只拉數據。
rabbitMQ :使用erlang語言開發,高并發特點,基于AMQP(即Advanced Message Queuing Proto買粉絲l)的開源高級消費隊列,AMQP的主要特征是面向消息、隊列、路由(包括點對點和發布/
訂閱)、可靠性、安全),企業級適應性和穩定性,并且有WEB管理界面方便用戶查看和管理。以下是rabbitMQ的結構圖:
(1)Procer:數據發送方,一般一個Message有兩個部分:payload(有效載荷)和label(標簽),payload是數據實際載體,label是exchange的名字或者一個tag,決定發給哪個Consumer;
(2)Exchange: 內部 消息交換器,exchange從生產者那收到消息后,一般會指定一個Routing Key,來指定這個消息的路由規則,當然Routing Key需要與Exchange Type及Binding key聯合使用
才能最終生效,根據路由規則,匹配查詢表中的routing key,分發消息到queue中;
(3)binding:即綁定,綁定(Binding)Exchange與Queue的同時,一般會指定一個Binding key,但不一定會生效,依賴于Exchange Type;
(4)Queue:即隊列是rabbitmq內部對象,用于存儲消息,一個message可以被同時拷貝到多個queue中,queue對load balance的處理是完美的。對于多個Consumer來說,RabbitMQ 使用循
環的方式(round-robin)的方式均衡的發送給不同的Consumer;
(5)Connection與Channel: Connection 就是一個TCP的連接,Procer和Consumer都是通過TCP連接到RabbitMQ Server, Channel 是為了節省開銷建立在上述的TCP連接中的接口,大部
分的業務操作是在Channel這個接口中完成的,包括定義Queue、定義Exchange、綁定Queue與Exchange、發布消息等;
(6)Consumer:即數據的接收方,如果有多個消費者同時訂閱同一個Queue中的消息,Queue中的消息會被平攤給多個消費者;
(7)Broker: 即RabbitMQ Server,其作用是維護一條從Procer到Consumer的路線,保證數據能夠按照指定的方式進行傳輸;
(8)Virtual host:即虛擬主機,當多個不同的用戶使用同一個RabbitMQ server提供的服務時,可以劃分出多個vhost,每個用戶在自己的vhost創建exchange/queue;
rabbitMQ消息轉發中的路由轉發是重點,生產者Procer在發送消息時,都需要指定一個RoutingKey和Exchange,Exchange收到消息后可以看到消息中指定的RoutingKey,再根據當前
Exchange的ExchangeType,按一定的規則將消息轉發到相應的queue中去。三種Exchage type:
(1)Direct exchange :直接轉發路由,原理是通過消息中的routing key,與binding 中的binding-key 進行比對,若二者匹配,則將消息發送到這個消息隊列;
比如:消息生成者生成一個message(payload是1,routing key為蘋果),兩個binding(binding key分別為蘋果、香蕉);exchange比對消息的routing key和binding key后,將消息發給了queue1,消息消費者1獲得queue1的消息;
(2)Topic exchange: 通配路由,是direct exchange的通配符模式,
比如:消息生成者生成一個message(payload是1,routing key為quick.orange.rabbit),兩個binding(binding key分別為*.orange. 、 *.*.rabbit);exchange比對消息的routing key和binding key
后,exchange將消息分發給兩個queue,兩個消費者獲得queue的消息;
(3)Fanout exchange: 復制分發路由,原理是不需要routkey,當exchange收到消息后,將消息復制多份轉發給與自己綁定的消息隊列,
比如:消息生成者生成一個message(payload是1,routing key為蘋果),兩個binding(binding key分別為蘋果、香蕉);exchange將消息分發給兩個queue,兩個消費者獲得queue的消息;
rabbiMQ如何保證消息的可靠性?
(1)Message rability:消息持久化,非持久化消息保存在內存中,持久化消息寫入內存同時也寫入磁盤;
(2)Message acknowledgment:消息確認機制,可以要求消費者在消費完消息后發送一個回執給RabbitMQ,RabbitMQ收到消息回執(Message acknowledgment)后才將該消息從Queue中移
除。通過ACK。每個Message都要被acknowledged(確認,ACK)。
(3)生產者消息確認機制:AMQP事務機制、生產者消息確認機制(publisher 買粉絲nfirm)。
最后, 對比一下zeroMQ、rabbitMQ、kafka主流的消息隊列
很赞哦!(5)
相关文章
- 01 貿易凈出口占GDP(中國進出口gdp占比)
- 01 貿易凈額法會計分錄(怎么寫凈額法確認收入的會計分錄)
- tiktok主播提成怎么算(tiktok賣假品牌的主播會怎么樣)
- 01 貿易公司銷售苗木稅率(自2017年7月1日起,苗木、樹苗的銷售、種植和植保服務的增值稅政策)
- tiktok為什么連接不上(tiktok無網絡連接怎么辦)
- tiktok為什么不能用推特登錄(tiktok和推特那個開放)
- 01 貿易公司需要什么人員(商貿公司都有什么職位)
- tiktok為什么拔卡后也用不了(tiktok不拔卡教程)
- 01 貿易公司風險管理體系建設(商貿企業在經營管理中如何進行風險管理)
- 01 貿易公司長期沒有業務怎么處理(我注冊一個公司,如果一直沒有營業額會有什么影響嗎?)
热门文章
站长推荐
tiktok為什么這么厲害(打算加入tiktok行業創業,聽說星達人科技的李鑫老師在這方面的教學很厲害真的嗎?)
tiktok為什么注冊不了(國際版抖音tiktok注冊不了的解決辦法)
01 貿易公司銷售費用占比銷售額(貿易公司要交那些稅)
tiktok為什么無法授權(如我們針對美制裁Tiktok而對微軟同等制裁,誰能替代微軟?)
01 貿易公司領導如何寫工作總結(商務工作總結范文2000字5篇)
tiktok為什么零播放(tiktok富二代經常被問到的問題)
01 貿易公司需要財務人員嗎(如何做好一名貿易公司的財務主管?最重要的是哪些工作)
tiktok為什么卡在注冊(抖音國際版 tiktok如何注冊)