RabbitMQ的實戰(zhàn)應用_第1頁
RabbitMQ的實戰(zhàn)應用_第2頁
RabbitMQ的實戰(zhàn)應用_第3頁
RabbitMQ的實戰(zhàn)應用_第4頁
RabbitMQ的實戰(zhàn)應用_第5頁
已閱讀5頁,還剩26頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、RabbitMQ應用實踐易車二手車 楊偉目錄 Rabbitmq介紹 應用實踐 運維實踐第一部分:Rabbitmq介紹開源AMQP實現(xiàn),Erlang語言編寫,支持多種客戶端分布式、高可用、持久化、可靠、安全支持多協(xié)議:AMQP、STOMP、MQTT、HTTPRabbitmq主要概念對象:生產(chǎn)者、消費者、交換機、隊列業(yè)務解耦:解決多系統(tǒng)、異構(gòu)系統(tǒng)間的數(shù)據(jù)交換,解耦生產(chǎn)者和消費者適用場景:批量數(shù)據(jù)異步處理、并行任務串行化、高負載任務負載均衡簡要介紹AMQP工作原理AMQP,即Advanced Message Queuing Protocol,高級消息隊列協(xié)議幾個核心概念顆粒度:Broker:消息隊列

2、服務器實體vhost:虛擬主機,一個broker里可以開設多個vhostExchange:消息交換機Queue:消息隊列載體消息流轉(zhuǎn):Binding:綁定,根據(jù)路由規(guī)則綁定exchange和queueRouting Key:路由關鍵字Connection:連接channel:消息通道,每個連接可建立多個channel關聯(lián)對象producer:消息生產(chǎn)者consumer:消息消費者交換機類型Direct Exchange 完全匹配的路由Topic Exchange 模式匹配路由Fanout Exchange 廣播模式Headers exchange 鍵值對匹配路由可靠性機制Message ack

3、nowledgment:消息回執(zhí)應答機制下:收到回執(zhí)才刪除消息;未收到回執(zhí)而連接斷開,消息會轉(zhuǎn)給其他消費者應答機制下:忘記回執(zhí)會導致消息堆積,業(yè)務重復處理采用非應答機制可以提升隊列處理效率Message durability:消息持久化可以避免絕大部分的消息丟失,如服務重啟采用非持久化機制可以提升隊列處理效率Prefetch count:每次發(fā)送給消費者消息數(shù)量,默認1,實踐采用2第二部分:部分應用實踐復用connection、復用channel如果需要可靠業(yè)務,需要支持持久化和ack機制兩臺虛擬機集群,QPS 5000次/秒如果希望高吞吐,可以采取非持久化、noack、自動刪除機制兩臺虛擬機

4、集群測試,QPS 20k次/秒穩(wěn)定性保障:生產(chǎn)者異常保障消費者異常保障代碼實現(xiàn)需注意細節(jié)生產(chǎn)者面對exchange,消費者面對queue;一個queue只有一個消費者(可多個副本)進行處理;命名規(guī)劃:exchange:ex_bizobj_usecase, 其中:ex為前綴,bizobj為業(yè)務對象(如Car、Dealer),usecase為某個業(yè)務場景,示例:ex_car_promotion;routekey:對應于event(事件,某個業(yè)務動作),如:置頂(settop)、刷新(refresh)queue:為方便使用,建議對應于event(采用exchange + event),如:qu_bi

5、zobj_usecase_event,其中:ex為前綴,bizobj為業(yè)務對象(如Car、Dealer),usecase為某個業(yè)務場景,示例:qu_car_promotion_settop;串行或并行的業(yè)務方案:并行方案:一個事件發(fā)生后,多個消費者相互間沒有依賴關系,可由exchange分發(fā)消息到多個隊列,由各隊列的消費者并行進行處理;串行方案:一個事件發(fā)生后,多個消費間有先后依賴關系,可以有先執(zhí)行的消費者處理事件,處理完成后再次發(fā)送消息(此時為另外一個event)到exchange,由后續(xù)的隊列進行處理。規(guī)劃根據(jù)不同的業(yè)務顆粒度規(guī)劃 virtual host規(guī)劃:按平臺或系統(tǒng)規(guī)劃 Excha

6、nge規(guī)劃:按系統(tǒng)規(guī)劃 隊列規(guī)劃:按模塊規(guī)劃 MQ消費規(guī)劃:按模塊規(guī)劃規(guī)劃 案例:新車源營銷Site:B端營銷:精準營銷:置頂營銷:刷新營銷:發(fā)車基礎服務:RabbitMQ服務:計費服務服務:ES索引維護api:車源發(fā)布Site:A端車源管理套餐管理規(guī)則管理CRM充值會員管理api:B端api充值Api排期維護api:查詢服務Siite:C端易車二手車易車二手車移動站易車二手車AppSite:D端服務數(shù)據(jù)采集統(tǒng)計ELK日志平臺通知服務日志采集案例:新車源營銷車源營銷置頂:置頂凍結(jié)費用、更新索引曝光判斷計費精準:精準更新索引點擊判斷計費刷新:刷新更新索引、計費發(fā)車:發(fā)車計費、自動審核更新索引案例

7、:ELK日志平臺業(yè)務站點AOP日志攔截IIS日志RabbitMQELK日志系統(tǒng)KibanaElasticSearchLogStash案例:ELK日志平臺案例:通知服務業(yè)務系統(tǒng)消息服務MQ消息發(fā)送分發(fā)消息消息內(nèi)容處理、生成存儲處理消息觸發(fā)通知消息處理服務消息發(fā)送服務案例:通知服務第三部分:部分運維實踐運維實踐安裝配置:服務器配置集群配置高可用集群配置監(jiān)控安裝Erlang環(huán)境、安裝RabbitMQ 啟動rabbitmq,并驗證啟動情況:rabbitmq-server -detached &ps aux |grep rabbitmq 如果啟用了防火墻的話,開啟相關端口4369 (epmd),2567

8、2 (Erlang distribution)5672, 5671 (AMQP 0-9-1 without and with TLS)15672 (if management plugin is enabled)啟用web界面的監(jiān)控插件: rabbitmq-plugins enable rabbitmq_management登錄賬號密碼默認都是 guest添加用戶rabbitmqctl add_user rabbitmq 123456 安裝兩個配置文件:環(huán)境變量的配置文件 rabbitmq-env.conf 設置rabbitmq的數(shù)據(jù)存儲位置RABBITMQ_MNESIA_BASE=/data

9、/rabbitmq/data 設置rabbitmq的日志存儲位置RABBITMQ_LOG_BASE=/data/rabbitmq/log配置信息文件 rabbitmq.config 內(nèi)存閥值,超過時啟動GC vm_memory_high_watermark, 0.6 內(nèi)存閥值,超過閥值時內(nèi)存數(shù)據(jù)寫到磁盤vm_memory_high_watermark_paging_ratio, 0.5 腦裂問題的修復方式: ignore, autoheal, pause_minoritycluster_partition_handling, autoheal 自動加載broker信息rabbitmq_mana

10、gement, load_definitions, /etc/rabbitmq/rabbitmq_broker.json配置:服務配置日志切分:編寫shell文件:/opt/scripts/rabbitmq_split_log.sh定時執(zhí)行執(zhí)行 crontab e,加入定時任務配置:服務配置修改hostname:修改 /etc/sysconfig/network設置.erlang.cookie,基于Erlang的集群來實現(xiàn)cd /var/lib/rabbitmq/ echo -n PXXXXEWPXODAMMALGXXXX .erlang.cookie打開端口: 25672,4369加入集群:

11、sudo rabbitmqctl join_cluster -ram rabbitrabbitmq199檢查集群狀態(tài):rabbitmqctl cluster_status設置鏡像隊列策略從集群中分離在任一節(jié)點執(zhí)行:rabbitmqctl forget_cluster_node rabbitrabbit1在分離節(jié)點執(zhí)行:rabbitmqctl reset配置:集群配置Rabbitmq集群監(jiān)控Rabbitmq集群監(jiān)控配置:高可用集群配置rabbitmq118rabbitmq147haproxy1+keepalived1haproxy2+keepalived2VIPClientrabbitmq148

12、rabbitmq119基于Haproxy+keepalived+rabbitmq實現(xiàn)集群Haproxy配置Haproxy日志配置安裝rsyslog添加haproxy的log配置: vim /etc/rsyslog.d/haproxy.conf編輯/etc/sysconfig/rsyslog創(chuàng)建日志文件并授權(quán) touch haproxy.log配置防火墻端口:9188 用于haproxy的監(jiān)控界面5670 用于rabbimq的負載均衡端口配置haproxy: /etc/haproxy/haproxy.cfg注意:因為要使用tcp的負載,屏蔽掉與http相關的默認配置啟動haproxyhaprox

13、y -f /etc/haproxy/haproxy.cfg停止haproxykillall haproxy配置:高可用集群配置Keepalived配置VRRP:虛擬路由冗余協(xié)議(Virtual Router Redundancy Protocol)配置文件位置:/etc/keepalived/keepalived.conf配置keepalived# 因為當前環(huán)境中VRRP組播有問題,改為使用單播發(fā)送VRRP報文unicast_src_ip 00unicast_peer 99啟動服務:順序啟動啟動haproxy: haproxy -f /etc/haproxy/haproxy.cfg啟動

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論