版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、RabbitMQ應(yīng)用實(shí)踐易車二手車 楊偉目錄 Rabbitmq介紹 應(yīng)用實(shí)踐 運(yùn)維實(shí)踐第一部分:Rabbitmq介紹開(kāi)源AMQP實(shí)現(xiàn),Erlang語(yǔ)言編寫,支持多種客戶端分布式、高可用、持久化、可靠、安全支持多協(xié)議:AMQP、STOMP、MQTT、HTTPRabbitmq主要概念對(duì)象:生產(chǎn)者、消費(fèi)者、交換機(jī)、隊(duì)列業(yè)務(wù)解耦:解決多系統(tǒng)、異構(gòu)系統(tǒng)間的數(shù)據(jù)交換,解耦生產(chǎn)者和消費(fèi)者適用場(chǎng)景:批量數(shù)據(jù)異步處理、并行任務(wù)串行化、高負(fù)載任務(wù)負(fù)載均衡簡(jiǎn)要介紹AMQP工作原理AMQP,即Advanced Message Queuing Protocol,高級(jí)消息隊(duì)列協(xié)議幾個(gè)核心概念顆粒度:Broker:消息隊(duì)列
2、服務(wù)器實(shí)體vhost:虛擬主機(jī),一個(gè)broker里可以開(kāi)設(shè)多個(gè)vhostExchange:消息交換機(jī)Queue:消息隊(duì)列載體消息流轉(zhuǎn):Binding:綁定,根據(jù)路由規(guī)則綁定exchange和queueRouting Key:路由關(guān)鍵字Connection:連接channel:消息通道,每個(gè)連接可建立多個(gè)channel關(guān)聯(lián)對(duì)象producer:消息生產(chǎn)者consumer:消息消費(fèi)者交換機(jī)類型Direct Exchange 完全匹配的路由Topic Exchange 模式匹配路由Fanout Exchange 廣播模式Headers exchange 鍵值對(duì)匹配路由可靠性機(jī)制Message ack
3、nowledgment:消息回執(zhí)應(yīng)答機(jī)制下:收到回執(zhí)才刪除消息;未收到回執(zhí)而連接斷開(kāi),消息會(huì)轉(zhuǎn)給其他消費(fèi)者應(yīng)答機(jī)制下:忘記回執(zhí)會(huì)導(dǎo)致消息堆積,業(yè)務(wù)重復(fù)處理采用非應(yīng)答機(jī)制可以提升隊(duì)列處理效率Message durability:消息持久化可以避免絕大部分的消息丟失,如服務(wù)重啟采用非持久化機(jī)制可以提升隊(duì)列處理效率Prefetch count:每次發(fā)送給消費(fèi)者消息數(shù)量,默認(rèn)1,實(shí)踐采用2第二部分:部分應(yīng)用實(shí)踐復(fù)用connection、復(fù)用channel如果需要可靠業(yè)務(wù),需要支持持久化和ack機(jī)制兩臺(tái)虛擬機(jī)集群,QPS 5000次/秒如果希望高吞吐,可以采取非持久化、noack、自動(dòng)刪除機(jī)制兩臺(tái)虛擬機(jī)
4、集群測(cè)試,QPS 20k次/秒穩(wěn)定性保障:生產(chǎn)者異常保障消費(fèi)者異常保障代碼實(shí)現(xiàn)需注意細(xì)節(jié)生產(chǎn)者面對(duì)exchange,消費(fèi)者面對(duì)queue;一個(gè)queue只有一個(gè)消費(fèi)者(可多個(gè)副本)進(jìn)行處理;命名規(guī)劃:exchange:ex_bizobj_usecase, 其中:ex為前綴,bizobj為業(yè)務(wù)對(duì)象(如Car、Dealer),usecase為某個(gè)業(yè)務(wù)場(chǎng)景,示例:ex_car_promotion;routekey:對(duì)應(yīng)于event(事件,某個(gè)業(yè)務(wù)動(dòng)作),如:置頂(settop)、刷新(refresh)queue:為方便使用,建議對(duì)應(yīng)于event(采用exchange + event),如:qu_bi
5、zobj_usecase_event,其中:ex為前綴,bizobj為業(yè)務(wù)對(duì)象(如Car、Dealer),usecase為某個(gè)業(yè)務(wù)場(chǎng)景,示例:qu_car_promotion_settop;串行或并行的業(yè)務(wù)方案:并行方案:一個(gè)事件發(fā)生后,多個(gè)消費(fèi)者相互間沒(méi)有依賴關(guān)系,可由exchange分發(fā)消息到多個(gè)隊(duì)列,由各隊(duì)列的消費(fèi)者并行進(jìn)行處理;串行方案:一個(gè)事件發(fā)生后,多個(gè)消費(fèi)間有先后依賴關(guān)系,可以有先執(zhí)行的消費(fèi)者處理事件,處理完成后再次發(fā)送消息(此時(shí)為另外一個(gè)event)到exchange,由后續(xù)的隊(duì)列進(jìn)行處理。規(guī)劃根據(jù)不同的業(yè)務(wù)顆粒度規(guī)劃 virtual host規(guī)劃:按平臺(tái)或系統(tǒng)規(guī)劃 Excha
6、nge規(guī)劃:按系統(tǒng)規(guī)劃 隊(duì)列規(guī)劃:按模塊規(guī)劃 MQ消費(fèi)規(guī)劃:按模塊規(guī)劃規(guī)劃 案例:新車源營(yíng)銷Site:B端營(yíng)銷:精準(zhǔn)營(yíng)銷:置頂營(yíng)銷:刷新?tīng)I(yíng)銷:發(fā)車基礎(chǔ)服務(wù):RabbitMQ服務(wù):計(jì)費(fèi)服務(wù)服務(wù):ES索引維護(hù)api:車源發(fā)布Site:A端車源管理套餐管理規(guī)則管理CRM充值會(huì)員管理api:B端api充值A(chǔ)pi排期維護(hù)api:查詢服務(wù)Siite:C端易車二手車易車二手車移動(dòng)站易車二手車AppSite:D端服務(wù)數(shù)據(jù)采集統(tǒng)計(jì)ELK日志平臺(tái)通知服務(wù)日志采集案例:新車源營(yíng)銷車源營(yíng)銷置頂:置頂凍結(jié)費(fèi)用、更新索引曝光判斷計(jì)費(fèi)精準(zhǔn):精準(zhǔn)更新索引點(diǎn)擊判斷計(jì)費(fèi)刷新:刷新更新索引、計(jì)費(fèi)發(fā)車:發(fā)車計(jì)費(fèi)、自動(dòng)審核更新索引案例
7、:ELK日志平臺(tái)業(yè)務(wù)站點(diǎn)AOP日志攔截IIS日志RabbitMQELK日志系統(tǒng)KibanaElasticSearchLogStash案例:ELK日志平臺(tái)案例:通知服務(wù)業(yè)務(wù)系統(tǒng)消息服務(wù)MQ消息發(fā)送分發(fā)消息消息內(nèi)容處理、生成存儲(chǔ)處理消息觸發(fā)通知消息處理服務(wù)消息發(fā)送服務(wù)案例:通知服務(wù)第三部分:部分運(yùn)維實(shí)踐運(yùn)維實(shí)踐安裝配置:服務(wù)器配置集群配置高可用集群配置監(jiān)控安裝Erlang環(huán)境、安裝RabbitMQ 啟動(dòng)rabbitmq,并驗(yàn)證啟動(dòng)情況:rabbitmq-server -detached &ps aux |grep rabbitmq 如果啟用了防火墻的話,開(kāi)啟相關(guān)端口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登錄賬號(hào)密碼默認(rèn)都是 guest添加用戶rabbitmqctl add_user rabbitmq 123456 安裝兩個(gè)配置文件:環(huán)境變量的配置文件 rabbitmq-env.conf 設(shè)置rabbitmq的數(shù)據(jù)存儲(chǔ)位置RABBITMQ_MNESIA_BASE=/data
9、/rabbitmq/data 設(shè)置rabbitmq的日志存儲(chǔ)位置RABBITMQ_LOG_BASE=/data/rabbitmq/log配置信息文件 rabbitmq.config 內(nèi)存閥值,超過(guò)時(shí)啟動(dòng)GC vm_memory_high_watermark, 0.6 內(nèi)存閥值,超過(guò)閥值時(shí)內(nèi)存數(shù)據(jù)寫到磁盤vm_memory_high_watermark_paging_ratio, 0.5 腦裂問(wèn)題的修復(fù)方式: ignore, autoheal, pause_minoritycluster_partition_handling, autoheal 自動(dòng)加載broker信息rabbitmq_mana
10、gement, load_definitions, /etc/rabbitmq/rabbitmq_broker.json配置:服務(wù)配置日志切分:編寫shell文件:/opt/scripts/rabbitmq_split_log.sh定時(shí)執(zhí)行執(zhí)行 crontab e,加入定時(shí)任務(wù)配置:服務(wù)配置修改hostname:修改 /etc/sysconfig/network設(shè)置.erlang.cookie,基于Erlang的集群來(lái)實(shí)現(xiàn)cd /var/lib/rabbitmq/ echo -n PXXXXEWPXODAMMALGXXXX .erlang.cookie打開(kāi)端口: 25672,4369加入集群:
11、sudo rabbitmqctl join_cluster -ram rabbitrabbitmq199檢查集群狀態(tài):rabbitmqctl cluster_status設(shè)置鏡像隊(duì)列策略從集群中分離在任一節(jié)點(diǎn)執(zhí)行:rabbitmqctl forget_cluster_node rabbitrabbit1在分離節(jié)點(diǎn)執(zhí)行:rabbitmqctl reset配置:集群配置Rabbitmq集群監(jiān)控Rabbitmq集群監(jiān)控配置:高可用集群配置rabbitmq118rabbitmq147haproxy1+keepalived1haproxy2+keepalived2VIPClientrabbitmq148
12、rabbitmq119基于Haproxy+keepalived+rabbitmq實(shí)現(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的負(fù)載均衡端口配置haproxy: /etc/haproxy/haproxy.cfg注意:因?yàn)橐褂胻cp的負(fù)載,屏蔽掉與http相關(guān)的默認(rèn)配置啟動(dòng)haproxyhaprox
13、y -f /etc/haproxy/haproxy.cfg停止haproxykillall haproxy配置:高可用集群配置Keepalived配置VRRP:虛擬路由冗余協(xié)議(Virtual Router Redundancy Protocol)配置文件位置:/etc/keepalived/keepalived.conf配置keepalived# 因?yàn)楫?dāng)前環(huán)境中VRRP組播有問(wèn)題,改為使用單播發(fā)送VRRP報(bào)文unicast_src_ip 00unicast_peer 99啟動(dòng)服務(wù):順序啟動(dòng)啟動(dòng)haproxy: haproxy -f /etc/haproxy/haproxy.cfg啟動(dòng)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 民法責(zé)任合同范本
- 別墅工程合同范本
- 微生物學(xué)檢驗(yàn)技術(shù) 課件 9項(xiàng)目九:常用培養(yǎng)基制備
- 失敗廣告案例分析
- 防止違約合同范本
- 簡(jiǎn)約大氣家長(zhǎng)會(huì)
- 火災(zāi)逃生演練教育活動(dòng)
- 工廠入股合同范本
- 商業(yè)用房買賣網(wǎng)簽合同范本
- 場(chǎng)地種植合同范本
- 可隨意編輯【封面+自薦信+簡(jiǎn)歷】百年樹(shù)人寓意求職個(gè)人簡(jiǎn)歷
- 中國(guó)審美文化史第四講唐代課件
- 中醫(yī)經(jīng)穴推拿模板課件
- 《三只小豬的真實(shí)故事》課件
- 遼寧省火力發(fā)電企業(yè)名錄2017年158家
- “美麗醫(yī)院”建設(shè)工作匯報(bào)材料
- 鉆孔灌注樁鉆進(jìn)成孔原始記錄表
- 中石油氣集團(tuán)公司 會(huì)計(jì)核算辦法
- 小學(xué)綜合實(shí)踐二年級(jí)上冊(cè)第1單元《主題活動(dòng)一:交通標(biāo)志我會(huì)認(rèn)》教案
- 壓力是否有利于成長(zhǎng)辯論稿
- 思想道德與法治教案第四章:明確價(jià)值要求踐行價(jià)值準(zhǔn)則
評(píng)論
0/150
提交評(píng)論