明人不說暗話,跟著阿笨一起玩NET。今天我們要解決的一個實際工作中的業(yè)務(wù)需求場景問題:如何將M條的消息或者任務(wù),盡可能的保證平均分發(fā)給N個消費者進行處理。業(yè)務(wù)上要求保證盡可能的消息的平均分布,同時消息隊列中的同一條消息,必須保證只能給一個消費者進行消費處理,即不允許被重復(fù)進行消費。通俗一點就是我們要解決ji蛋與籃子的存放數(shù)學(xué)問題:如何將10(M)個ji蛋放在5(N)個籃子中呢?
市中ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!
1.1、本次分享課程適合人群如下
1)、有一定的.NET Core開發(fā)基礎(chǔ)。
2)、有一定的Docker和RabbitMQ基礎(chǔ)知識。
3)、學(xué)習(xí)和了解.Net Core跨平臺開發(fā)技術(shù)。
1.2、一句話總結(jié)今天我們要學(xué)習(xí)的目標(biāo)?
如何基于RabbitMQ消息隊列來實現(xiàn)海量消息任務(wù)分發(fā)。
如果您同樣對本次分享《ASP.NET Core基于RabbitMQ實現(xiàn)海量任務(wù)消息隊列分發(fā)實戰(zhàn)演練》課程感興趣的話,那么請跟著阿笨一起學(xué)習(xí)吧。廢話不多說,直接上干貨,我們不生產(chǎn)干貨,我們只是干貨的搬運工。
為什么要使用Docker,Docker的好處是什么?
可以認(rèn)為Docker是一個通用安裝程序。簡單來說,利用Docker容器,可以將任何一個或者多個程序封裝起來,并提供標(biāo)準(zhǔn)的管理接口。因為使用了容器,所以可以很方便的把生產(chǎn)環(huán)境和開發(fā)環(huán)境分開,互不影響,這樣,開發(fā)人員負(fù)責(zé)維護內(nèi)容,并使用Docker進行封裝,系統(tǒng)管理人員利用Docker的標(biāo)準(zhǔn)接口進行部署和管理。
Docker最近很火,所以就打算使用。大家根據(jù)自身情況,如果是剛開始學(xué)習(xí)的RabbitMQ話,這里還是建議大家先安裝在Windows系統(tǒng)或者是Linux系統(tǒng)上。docker run -d --name aben-rabbitmq -p 15672:15672 -p 5671:5671 -p 5672:5672 rabbitmq:management此時,我們可以訪問如下地址來訪問自帶的Web管理頁面:
?http://192.168.137.237:15672/
?默認(rèn)賬號/密碼:guest/guest
1、盡可能的公平的分發(fā)消息到不同的隊列中去,保證其平均分發(fā)、平均分布。
答:可以采用取模算法和簡單的輪詢算法。
2、如何盡可能的保證公平分發(fā)機制,避免消息被重復(fù)消費。
答:每一個消費者只訂閱自己所屬編號的消息隊列即可。
假如現(xiàn)在每個客戶端的消息處理能力不同,那么如何根據(jù)客戶端的消息處理能力的高低來實現(xiàn)消息的分批呢?簡單一點說就是實現(xiàn)多勞多得,能者多勞。
答案:可以采用加權(quán)平均算法,從而可以實現(xiàn)消息的分批根據(jù)每個客戶端的權(quán)重來分發(fā)任務(wù)。
我們學(xué)習(xí)一門技術(shù),最好先弄明白該技術(shù)解決的業(yè)務(wù)場景是什么,然后帶著需求問題去學(xué)習(xí)和實踐。
希望本次分享課程能夠讓大家有所收獲!最后送大家一句話:希望大家在.NET Core的學(xué)習(xí)道路上一直跟著阿笨堅持下去。