文章地址 文章地址 拓展閱讀: RabbitMQ + PHP (一)入門與安裝 RabbitMQ + PHP (二)AMQP拓展安裝 RabbitMQ + PHP (三)案例演示 RabbitMQ + PHP (一)入門與安裝 RabbitMQ + PHP (二)AMQP拓展安裝 RabbitMQ ...
文章地址 拓展閱讀:
RabbitMQ + PHP (一)入門與安裝 RabbitMQ + PHP (二)AMQP拓展安裝 RabbitMQ + PHP (三)案例演示 1. 一些辭彙和技術
1)Zookeeper註冊中心 Storm集群 2. 核心思想
1)【概述】 消息隊列中間件是分散式系統中重要的組件,主要解決應用耦合,非同步消息,流量削鋒等問題。實現高性能,高可用,可伸縮和最終一致性架構。是大型分散式系統不可缺少的中間件。 目前在生產環境,使用較多的消息隊列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ等 2)【應用場景】 非同步處理,應用解耦,流量削鋒和消息通訊四個場景。 3)【消息中間件示例】 電商系統 日誌收集系統 4)【日誌系統】 ELK Static(新浪kafka日誌處理應用案例) -- Kafka:接收用戶日誌的消息隊列。 -- Logstash:做日誌解析,統一成JSON輸出給Elasticsearch。 -- Elasticsearch:實時日誌分析服務的核心技術,一個schemaless,實時的數據存儲服務,通過index組織數據,兼具強大的搜索和統計功能。 -- Kibana:基於Elasticsearch的數據可視化組件,超強的數據可視化能力是眾多公司選擇ELK stack的重要原因。 5)【Zookeeper】 Zookeeper 分散式服務框架是 Apache Hadoop 的一個子項目,它主要是用來解決分散式應用中經常遇到的一些數據管理問題,如:統一命名服務、狀態同步服務、集群管理、分散式應用配置項的管理等 6)【storm】 是一種 實現一個實時計算系統
7)【兩種消息模式】
-- 點對點(P2P模式) :
a)每個消息只有一個消費者(Consumer)(即一旦被消費,消息就不再在消息隊列中)
b)發送者和接收者之間在時間上沒有依賴性,也就是說當發送者發送了消息之後,不管接收者有沒有正在運行,它不會影響到消息被髮送到隊列
c)接收者在成功接收消息之後需向隊列應答成功
-- 發佈訂閱(Pub/sub模式)
a)每個消息可以有多個消費者
b)發佈者和訂閱者之間有時間上的依賴性。針對某個主題(Topic)的訂閱者,它必須創建一個訂閱者之後,才能消費發佈者的消息。
c)為了消費消息,訂閱者必須保持運行的狀態。
3. 常見消息隊列中間件
1)【ActiveMQ 】 ActiveMQ 是Apache出品,最流行的,能力強勁的開源消息匯流排,對JAVA支持好 2)【RabbitMQ】 -- RabbitMQ是流行的開源消息隊列系統,用erlang語言開發。RabbitMQ是AMQP(高級消息隊列協議)的標準實現。支持多種客戶端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX,持久化。用於在分散式系統中存儲轉發消息,在易用性、擴展性、高可用性等方面表現不俗 -- RabbitMQ的安裝 3)【ZeroMQ】 號稱史上最快的消息隊列,它實際類似於Socket的一系列介面,他跟Socket的區別是:普通的socket是端到端的(1:1的關係),而ZMQ卻是可以N:M 的關係,人們對BSD套接字的瞭解較多的是點對點的連接,點對點連接需要顯式地建立連接、銷毀連接、選擇協議(TCP/UDP)和處理錯誤等,而ZMQ屏蔽了這些細節,讓你的網路編程更為簡單。ZMQ用於node與node間的通信,node可以是主機或者是進程。 4)【Kafka】 Kafka是一種高吞吐量的分散式發佈訂閱消息系統,它可以處理消費者規模的網站中的所有動作流數據。 這種動作(網頁瀏覽,搜索和其他用戶的行動)是在現代網路上的許多社會功能的一個關鍵因素。 這些數據通常是由於吞吐量的要求而通過處理日誌和日誌聚合來解決。 對於像Hadoop的一樣的日誌數據和離線分析系統,但又要求實時處理的限制,這是一個可行的解決方案。Kafka的目的是通過Hadoop的並行載入機制來統一線上和離線的消息處理,也是為了通過集群機來提供實時的消費。 參考文檔: RabbitMQ + PHP (一)入門與安裝 RabbitMQ + PHP (二)AMQP拓展安裝 RabbitMQ + PHP (三)案例演示