您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 >
02 redis消息推送跟訂閱應用場景(大型的 PHP應用 通常使用什么應用做 消息隊列 的)
Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-07-17 17:53:51【】1人已围观
简介消息生產者的方法(send或publish方法)發送消息。(6)消息消費者消息消費者由Session創建,用于接收被發送到Destination的消息。兩種類型:QueueReceiver和Topic
(6) 消息消費者
消息消費者由Session創建,用于接收被發送到Destination的消息。兩種類型:QueueReceiver和TopicSubscriber。可分別通過session的createReceiver(Queue)或createSubscriber(Topic)來創建。當然,也可以session的creatDurableSubscriber方法來創建持久化的訂閱者。
(7) MessageListener
消息監聽器。如果注冊了消息監聽器,一旦消息到達,將自動調用監聽器的onMessage方法。EJB中的MDB(Message-Driven Bean)就是一種MessageListener。
深入學習JMS對掌握JAVA架構,EJB架構有很好的幫助,消息中間件也是大型分布式系統必須的組件。本次分享主要做全局性介紹,具體的深入需要大家學習,實踐,總結,領會。
五、常用消息隊列
一般商用的容器,比如WebLogic,JBoss,都支持JMS標準,開發上很方便。但免費的比如Tomcat,Jetty等則需要使用第三方的消息中間件。本部分內容介紹常用的消息中間件(Active MQ,Rabbit MQ,Zero MQ,Kafka)以及他們的特點。
5.1 ActiveMQ
ActiveMQ 是Apache出品,最流行的,能力強勁的開源消息總線。ActiveMQ 是一個完全支持JMS1.1和J2EE 1.4規范的 JMS Provider實現,盡管JMS規范出臺已經是很久的事情了,但是JMS在當今的J2EE應用中間仍然扮演著特殊的地位。
ActiveMQ特性如下:
⒈ 多種語言和協議編寫客戶端。語言: Java,C,C++,C#,Ruby,Perl,Python,PHP。應用協議: OpenWire,Stomp REST,WS Notification,XMPP,AMQP
⒉ 完全支持JMS1.1和J2EE 1.4規范 (持久化,XA消息,事務)
⒊ 對spring的支持,ActiveMQ可以很容易內嵌到使用Spring的系統里面去,而且也支持Spring2.0的特性
⒋ 通過了常見J2EE服務器(如 Geronimo,JBoss 4,GlassFish,WebLogic)的測試,其中通過JCA 1.5 resource adaptors的配置,可以讓ActiveMQ可以自動的部署到任何兼容J2EE 1.4 商業服務器上
⒌ 支持多種傳送協議:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA
⒍ 支持通過JDBC和journal提供高速的消息持久化
⒎ 從設計上保證了高性能的集群,客戶端-服務器,點對點
⒏ 支持Ajax
⒐ 支持與Axis的整合
⒑ 可以很容易得調用內嵌JMS provider,進行測試
5.2 RabbitMQ
RabbitMQ是流行的開源消息隊列系統,用erlang語言開發。RabbitMQ是AMQP(高級消息隊列協議)的標準實現。支持多種客戶端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX,持久化。用于在分布式系統中存儲轉發消息,在易用性、擴展性、高可用性等方面表現不俗。
幾個重要概念:
Broker:簡單來說就是消息隊列服務器實體。
Exchange:消息交換機,它指定消息按什么規則,路由到哪個隊列。
Queue:消息隊列載體,每個消息都會被投入到一個或多個隊列。
Binding:綁定,它的作用就是把exchange和queue按照路由規則綁定起來。
Routing Key:路由關鍵字,exchange根據這個關鍵字進行消息投遞。
vhost:虛擬主機,一個broker里可以開設多個vhost,用作不同用戶的權限分離。
procer:消息生產者,就是投遞消息的程序。
買粉絲nsumer:消息消費者,就是接受消息的程序。
channel:消息通道,在客戶端的每個連接里,可建立多個channel,每個channel代表一個會話任務。
消息隊列的使用過程,如下:
(1)客戶端連接到消息隊列服務器,打開一個channel。
(2)客戶端聲明一個exchange,并設置相關屬性。
(3)客戶端聲明一個queue,并設置相關屬性。
(4)客戶端使用routing key,在exchange和queue之間建立好綁定關系。
(5)客戶端投遞消息到exchange。
exchange接收到消息后,就根據消息的key和已經設置的binding,進行消息路由,將消息投遞到一個或多個隊列里。
5.3 ZeroMQ
號稱史上最快的消息隊列,它實際類似于Socket的一系列接口,他跟Socket的區別是:普通的socket是端到端的(1:1的關系),而ZMQ卻是可以N:M 的關系,人們對BSD套接字的了解較多的是點對點的連接,點對點連接需要顯式地建立連接、銷毀連接、選擇協議(TCP/UDP)和處理錯誤等,而ZMQ屏蔽了這些細節,讓你的網絡編程更為簡單。ZMQ用于node與node間的通信,node可以是主機或者是進程。
引用官方的說法: “ZMQ(以下ZeroMQ簡稱ZMQ)是一個簡單好用的傳輸層,像框架一樣的一個socket library,他使得Socket編程更加簡單、簡潔和性能更高。是一個消息處理隊列庫,可在多個線程、內核和主機盒之間彈性伸縮。ZMQ的明確目標是“成為標準網絡協議棧的一部分,之后進入Linux內核”。現在還未看到它們的成功。但是,它無疑是極具前景的、并且是人們更加需要的“傳統”BSD套接字之上的一 層封裝。ZMQ讓編寫高性能網絡應用程序極為簡單和有趣。”
特點是:
高性能,非持久化;
跨平臺:支持Linux、Windows、OS X等。
多語言支持; C、C++、Java、.NET、Python等30多種開發語言。
可單獨部署或集成到應用中使用;
可作為Socket通信庫使用。
與RabbitMQ相比,ZMQ并不像是一個傳統意義上的消息隊列服務器,事實上,它也根本不是一個服務器,更像一個底層的網絡通訊庫,在Socket API之上做了一層封裝,將網絡通訊、進程通訊和線程通訊抽象為統一的API接口。支持“Request-Reply “,”Publisher-Subscriber“,”Parallel Pipeline”三種基本模型和擴展模型。
ZeroMQ高性能設計要點:
1、無鎖的隊列模型
對于跨線程間的交互(用戶端和session)之間的數據交換通道pipe,采用無鎖的隊列算法CAS;在pipe兩端注冊有異步事件,在讀或者寫消息到pipe的時,會自動觸發讀寫事件。
2、批量處理的算法
對于傳統的消息處理,每個消息在發送和接收的時候,都需要系統的調用,這樣對于大量的消息,系統的開銷比較大,zeroMQ對于批量的消息,進行了適應性的優化,可以批量的接收和發送消息。
3、多核下的線程綁定,無須CPU切換
區別于傳統的多線程并發模式,信號量或者臨界區, zeroMQ充分利用多核的優勢,每個核綁定運行一個工作者線程,避免多線程之間的CPU切換開銷。
5.4 Kafka
Kafka是一種高吞吐量的分布式發布訂閱消息系統,它可以處理消費者規模的網站中的所有動作流數據。 這種動作(網頁瀏覽,搜索和其他用戶的行動)是在現代網絡上的許多社會功能的一個關鍵因素。 這些數據通常是由于吞吐量的要求而通過處理日志和日志聚合來解決。 對于像Hadoop的一樣的日志數據和離線分析系統,但又要求實時處理的限制,這是一個可行的解決方案。Kafka的目的是通過Hadoop的并行加載機制來統一線上和離線的消息處理,也是為了通過集群機來提供實時的消費。
Kafka是一種高吞吐量的分布式發布訂閱消息系統,有如下特性:
通過O(1)的磁盤數據結構提供消息的持久化,這種結構對于即使數以TB的消息存儲也能夠保持長時間的穩定性能。(文件追加的方式寫入數據,過期的數據定期刪除)
高吞吐量:即使是非常普通的硬件Kafka也可以支持每秒數百萬的消息。
支持通過Kafka服務器和消費機集群來分區消息。
支持Hadoop并行數據加載。
Kafka相關概念
Broker
Kafka集群包含一個或多個服務器,這種服務器被稱為broker[5]
Topic
每條發布到Kafka集群的消息都有一個類別,這個類別被稱為Topic。(物理上不同Topic的消息分開存儲,邏輯上一個Topic的消息雖然保存于一個或多個broker上但用戶只需指定消息的Topic即可生產或消費數據而不必關心數據存于何處)
Partition
Parition是物理上的概念,每個Topic包含一個或多個Partition.
Procer
負責發布消息到Kafka broker
Consumer
消息消費者,向Kafka broker讀取消息的客戶端。
Consumer Group
每個Consumer屬于一個特定的Consumer Group(可為每個Consumer指定group name,若不指定group name則屬于默認的group)。
一般應用在大數據日志處理或對實時性(少量延遲),可靠性(少量丟數據)要求稍低的場景使用。
如何實現支持數億用戶的長連消息系統
此文是根據周洋在【高可用架構群】中的分享內容整理而成,轉發請注明出處。
周洋,360手機助手技術經理及架構師,負責360長連接消息系統,360手機助手架構的開發與維護。
不知道咱們群名什么時候改為“Python高可用架構群”了,所以不得不說,很榮幸能在接下來的一個小時里在Python群里討論golang....
360消息系統介紹
360消息系統更確切的說是長連接push系統,目前服務于360內部多個產品,開發平臺數千款app,也支持部分聊天業務場景,單通道多app復用,支持上行數據,提供接入方不同粒度的上行數據和用戶狀態回調服務。
目前整個系統按不同業務分成9個功能完整的集群,部署在多個idc上(每個集群覆蓋不同的idc),實時在線數億量級。通常情況下,pc,手機,甚至是智能硬件上的360產品的push消息,基本上是從我們系統發出的。
關于push系統對比與性能指標的討論
很多同行比較關心go語言在實現push系統上的性能問題,單機性能究竟如何,能否和其他語言實現的類似系統做對比么?甚至問如果是創業,第三方云推送平臺,推薦哪個?
很赞哦!(58)
相关文章
- 04 ins怎么看誰來過我主頁(賈斯丁比伯開通微博,他關注的國內第一個明星會是誰?)
- 04 ins超火背景圖藍色系電腦(賽博朋克風格插畫-新年海報都有哪些風格)
- 01 下列不屬于短視頻媒體社交渠道的是什么(網絡營銷具體包括哪些內容)
- 01 上海鶴佑國際貿易有限公司(杭州有哪些上市公司)
- 01 下載youtube電腦版軟件怎么不在(在國外用什么軟件聽歌 聽歌用哪個app嗎?)
- 01 下列什么是國際貿易方式之一(十萬火急的國際貿易試題,滿意的回答考完試后會追加懸賞。!!!!!!)
- 01 上海高鐵站到外灘有多遠啊(上海虹橋高鐵站到外灘多遠)
- 04 Kafka發布訂閱示例(大數據Kafka是什么呢?)
- 04 my mix youtube songs(尋一個聽歌的網站)
- 01 上海龍核國際貿易有限公司(上海有哪些知名獵頭公司?)
Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款的名片
职业:程序员,设计师
现居:黑龙江省伊春友好区
工作室:小组
Email:[email protected]
热门文章
站长推荐
04 ins風高級感文案 傷感(ins高級感文案秋天的句子(精選60句))
01 下載instagram視頻(ins視頻怎么保存到手機 ins視頻保存到手機的方法有哪些)
04 mp3 download youtube apk download app(android sync.h 在哪個目錄下)
01 下載youtube電腦版軟件商店360(求 XSplit Broadcaster Studio免費版下載)
01 下載ins視頻在線(ins上怎么才能下載別人的視頻?)
04 kane brown 買粉絲untry music song(請問鄉村音樂和民謠的區別)
04 mp3 download youtube apk下載安裝(安卓系統/system/lib/目錄下libcutils.so這個文件有什么作用)
04 mp3 download youtube apk下載中文(大拇指的手機)