分布式系統的那些事兒(四)-MQ時代的通信
之前在講RPC通信的各種好處,特別好用,但是RPC並不是萬能的,也並不是適用於各種場景的,因為他是同步的;現如今很多場景下的調用都是非同步的,系統A調用B後,並不需要知道B的結果,而且對B的結果無所謂,甚至你B掛了都無所謂,那麼這個時候使用消息隊列是十分OK的。
最簡單的場景就是發送簡訊和email,主機不需要知道是否發送成功與否,就算失敗了,哪怕再發一次也無所謂。
常見的MQ主要有JMS,RabbitMQ,ActiveMQ,Kafka以及RocketMQ,值得一提的是RocketMQ是阿里出的開源消息隊列,很好用噢。
簡單來說MQ可以支持點對點,點對多,訂閱模式的各種消息,非常使用。舉個非常我們自己使用過的例子,我們每周一三五的凌晨會有運維人員手動來執行一些數據操作,每個操作的實際大約20分鐘,任務有先後順序,執行完後需要查看上一個操作是否完畢再進行下一個操作,這樣導致運維人員會很累,所以後來採用MQ來做這些任務,定時任務開始運行後,那麼每個任務完成後只要調用對應的MQ就能達到人工的效果。一舉兩得。
關於消息隊列的一些文章在之前都有寫過,具體可以參考以下鏈接:
分布式系統的數據一致性(在這裡先不講事務的一致性,後面會講)
當數據被分在多地存儲的時候,那麼數據被讀取的時候的一致性對用戶是需要做保障的。這裡分為強一致性和弱一致性
強一致性:保證用戶不論何時何地,在華北還是華南,中國還是美國,同一時間訪問到的數據是一致的,並不會出現差異性,這樣的做法其實不多,消耗代價十分絕大,對運維團隊的考驗也十分嚴格。
弱一致性:保證用戶訪問數據的速度是OK的,但是數據內容可能隨著時間的不同地點的不同會有差異。比如我在公司VPN環境下訪問到的一些電商數據基本是實時的,更新速度很快。而我在下班以後在家訪問卻發現白天發布的數據並沒有更新,需要在凌晨訪問的時候數據才會更新過來,這樣的做法就是數據的持續更新,服務端不會在乎客戶訪問的內容如何,雖然有時間地點的偏差,但是保證你能夠訪問到即可。
點擊展開全文
※分布式系統的那些事兒(三)-系統與系統之間的調用
※有意思的冒泡排序法,我竟然全部都看完了!
※分布式系統的那些事兒(二)-線程與進程
※薪資18-22K,Java方向,坐標上海
※網站平台架構演變史(三)-資料庫表的查詢優化
TAG:BeJavaGod |
※IPFS:下一代分散式文件系統
※IBM專利:為AR-VR系統研發實時視頻審查系統,實時打碼
※我給小米、OPPO、vivo刷上了剛發布的安卓 P 系統
※《PUBG》宣布暫時關閉個人交易系統
※VR/AR內容實時打碼 ——IBM的專利系統!
※滾打時代:DOS中文系統有4明星
※AMD和微軟發布針對Spectre漏洞的微代碼和操作系統更新程序
※擇業的煩惱:系統式的時代與App式的我們
※分散式系統中的監工:Overseer
※NVIDIA宣布正式放棄32位系統:驅動程序消失
※通過補丁比對分析發現HPE IMC系統代碼執行漏洞
※平板電腦只有IOS和安卓兩種系統?首款Chrome系統平板發布!
※萬物理論(四)——戰勝ALS,霍金的發聲系統其三
※號稱新一代CAR T的SUPRA CAR系統是如何設計的?
※一種配電SCADA通信安全防護系統的設計
※蘋果官方公布iOS 11系統數據,網友表示:iOS系統已經過時!
※WiMAX、LTE和WLAN技術對軍用寬頻無線通信系統的適用性研究
※Windows 系統重裝前的文檔、驅動和聊天信息備份
※Envoy和類似的系統比較
※SPARC系統在基於GaN的塊體和納米結構LED研究中的應用