您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 > 

03 redis中的發布與訂閱模式用于(大型的 PHP應用 通常使用什么應用做 消息隊列 的)

Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-06-10 08:32:50【】2人已围观

简介中通過JCA1.5resourceadaptors的配置,可以讓ActiveMQ可以自動的部署到任何兼容J2EE1.4商業服務器上⒌支持多種傳送協議:in-VM,TCP,SSL,NIO,UDP,JGr

中通過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)。

一般應用在大數據日志處理或對實時性(少量延遲),可靠性(少量丟數據)要求稍低的場景使用。

redis主從和哨兵

主從復制:主節點負責寫數據,從節點負責讀數據,主節點定期把數據同步到從節點保證數據的一致性

a,配置主從復制方式一、新增redis6380.買粉絲nf, 加入 slaveof 192.168.152.128 6379, 在6379啟動完后再啟6380,完成配置;

b,配置主從復制方式二、redis-server --slaveof 192.168.152.128 6379 臨時生效

c,查看狀態:info replication

d,斷開主從復制:在slave節點,執行6380:>slaveof no one

e,斷開后再變成主從復制:6380:> slaveof 192.168.152.128 6379

f,數據較重要的節點,主從復制時使用密碼驗證: requirepass

e, 從節點建議用只讀模式slave-read-only=yes, 若從節點修改數據,主從數據不一致

h,傳輸延遲:主從一般部署在不同機器上,復制時存在網絡延時問題,redis提供repl-disable-tcp-nodelay參數決定是否關閉TCP_NODELAY,默認為關閉

參數關閉時:無論大小都會及時發布到從節點,占帶寬,適用于主從網絡好的場景,

參數啟用時:主節點合并所有數據成TCP包節省帶寬,默認為40毫秒發一次,取決于內核,主從的同步延遲40毫秒,適用于網絡環境復雜或帶寬緊張,如跨機房

a)一主一從:用于主節點故障轉移從節點,當主節點的“寫”命令并發高且需要持久化,可以只在從節點開啟AOF(主節點不需要),這樣即保證了數據的安全性,也避免持久化對主節點的影響

b)一主多從:針對“讀”較多的場景,“讀”由多個從節點來分擔,但節點越多,主節點同步到多節點的次數也越多,影響帶寬,也加重主節點的穩定

c)樹狀主從:一主多從的缺點(主節點推送次數多壓力大)可用些方案解決,主節點只推送一次數據到從節點B,再由從節點B推送到C,減輕主節點推送的壓力。

redis 2.8版本以上使用psync命令完成同步,過程分“全量”與“部分”復制

全量復制:一般用于初次復制場景(第一次建立SLAVE后全量)

部分復制:網絡出現問題,從節點再次連接主節點時,主節點補發缺少的數據,每次數據增量同步

心跳:主從有長連接心跳,主節點默認每10S向從節點發ping命令,repl-ping-slave-period控制發送頻率

a)主從復制,若主節點出現問題,則不能提供服務,需要人工修改配置將從變主

b)主從復制主節點的寫能力單機,能力有限

c)單機節點的存儲能力也有限

a)主節點(master)故障,從節點slave-1端執行 slaveof no one后變成新主節點;

b)其它的節點成為新主節點的從節點,并從新節點復制數據;

c)需要人工干預,無法實現高可用。

很赞哦!(6125)

Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款的名片

职业:程序员,设计师

现居:广东广州黄埔区

工作室:小组

Email:[email protected]