技術背景:
爲何使用分佈式消息隊列:前端
參考:使用消息隊列的 10 個理由
java
幾種常見分佈式消息隊列各有所長,有的性能好,有的數據安全性好,有的社區支持好。web
可是不管使用何種消息隊列,將本身需求進行分析後抽象爲業務接口對成品消息隊列產品進行封裝是一種較好的選擇,既便於消息隊列軟件和本身的業務軟件之間解耦合,也能進行多個不一樣特色消息隊列軟件的同時集成,方便不一樣業務場景調用所須要特色的隊列軟件。cap原則在此也會有必定的做用性,因此根據不一樣業務場景選擇對應特性的消息隊列軟件是一個很好的選擇。而因爲大部分的消息隊列軟件基於非windows平臺,考慮非web形式的服務調用,java以及基於mono的c#是很好的封裝語言載體。
c#
軟件對比:
4 款消息隊列軟件產品大比拼
windows
業務場景應用分析:
從數據操做角度,若是消息對應的操做是數據讀取,一般不存在數據序列化或者去重的問題。可是若是通知消息對應的操做是數據插入、修改或者刪除三種操做,尤爲是所操做的數據和通知消息同時到達。並且一般狀況下,消息通知機制更可能是做用於數據更改操做的,尤爲是數據插入的操做,在高併發狀況下面臨數據重複插入或數據排序的問題。所以在面臨這兩種數據操做時,即便分佈式消息隊列也存在一個瓶頸點-----就是對數據去重和排序的功能點。消息隊列自己的對列排序因爲前端用戶業務服務器響應時長的問題,尤爲是高併發狀況下,消息隊列排序不必定符合業務要求,因此按照業務需求封裝數據去重和排序功能也有至關的必要性。因爲這個功能不必定是必須的,更適用於適配器模式,並經過配置或者客戶端選擇是否調用業務層次的數據去重或者排序。
而這個功能單點特性變爲必須的,而隊列數據也必須可以持久化已支持在進行故障轉移時不會發生丟失。
三重封裝:業務客戶端調用消息隊列、後端服務調用消息隊列、數據去重和排序功能
版權聲明:本文爲博主原創文章,未經博主容許不得轉載。後端