分布式消息總線比較




應用場景:

l分布式組件/系統相互通信 l數據復制、同步 ldelay queue l廣播通知



案例分析:基於消息的分布式架構


對分布式消息系統機制的分析好文:

http://www.infoq.com/cn/articles/message-based-distributed-architecture


http://tech.sina.com.cn/i/2010-11-16/14434871585.shtml

 我們再來看微博的方案,所以我們自己實現了一個多機房同步的方案。就是我們前端應用將數據寫到數據庫,再通過一個消息代理,相當於通過我們自己開發的一個技術,將數據廣播到多個機房。這個不但可以做到兩個機房,而且可以做到三個、四個。具體的方式就是通過消息廣播方式將數據多點分布,就是說我們的數據提交給一個代理,這個代理幫我們把這些數據同步到多個機房,那我們應用不需要關心這個數據是怎么樣同步過去的。

  用這種消息代理方式有什么好處呢?可以看一下Yahoo是怎么來做的?第一個是數據提供之后沒有寫到db之后是不會消失的,我只要把數據提交成功就可以了,不需要關心數據怎么到達機房。第二個特點YMB是一款消息代理的產品,但是它唯一神奇的地方是為廣域網設計的,它可以把多機房應用歸到內部,我們應用不需要關注這個問題。這個原理跟我們目前自己開發的技術相似。


我們看一下推送架構怎么從架構底層做到實時性的。從左上角的一條微博在我們系統發布之后,我們把它放在一個消息隊列里面,然后會有一個消息隊列的處理程序把它拿過來,處理以后放到db里面。假如說我們不做持久化,因為我們推送數據也不能丟失,我們就要寫一個很復雜的程序,將數據異步去存,這樣就會非常復雜,而且系統也會有不穩定的因素。從另外一個角度來說,我們做持久化也是做過測試的。我們推送整個流程可以做到100毫秒和200毫秒之間,就是說我們在這個時間能把數據推送出去。


對於一些商業網站,其需要在上海、北京、美國等多點部署,采用消息總線可以解決數據一致性問題,當發生寫操作時,數據除了被存儲到本地,同時放到消息隊列中,這樣可同步到其他數據中心。





Kafka


Kafka Architecture Design:http://kafka.apache.org/documentation.html#design

 譯文:http://www.oschina.net/translate/kafka-design

http://www.infoq.com/cn/articles/apache-kafka?utm_campaign=infoq_content&utm_source=infoq&utm_medium=feed&utm_term=global

Apache Kafka:下一代分布式消息系統

Kafka是一個消息系統,原本開發自LinkedIn,用作LinkedIn的活動流(activity stream)和運營數據處理管道(pipeline)的基礎。現在它已為多家不同類型的公司 作為多種類型的數據管道(data pipeline)和消息系統使用。

活動流數據是所有站點在對其網站使用情況做報表時要用到的數據中最常規的部分。活動數據包括頁面訪問量(page view)、被查看內容方面的信息以及搜索情況等內容。這種數據通常的處理方式是先把各種活動以日志的形式寫入某種文件,然后周期性地對這些文件進行統計分析。運營數據指的是服務器的性能數據(CPU、IO使用率、請求時間、服務日志等等數據)。運營數據的統計方法種類繁多。

近年來,活動和運營數據處理已經成為了網站軟件產品特性中一個至關重要的組成部分,這就需要一套稍微更加復雜的基礎設施對其提供支持。

 

活動流和運營數據的若干用例

  • "動態匯總(News feed)"功能。將你朋友的各種活動信息廣播給你
  • 相關性以及排序。通過使用計數評級(count rating)、投票(votes)或者點擊率( click-through)判定一組給定的條目中那一項是最相關的.
  • 安全:網站需要屏蔽行為不端的網絡爬蟲(crawler),對API的使用進行速率限制,探測出擴散垃圾信息的企圖,並支撐其它的行為探測和預防體系,以切斷網站的某些不正常活動。
  • 運營監控:大多數網站都需要某種形式的實時且隨機應變的方式,對網站運行效率進行監控並在有問題出現的情況下能觸發警告。
  • 報表和批處理: 將數據裝載到數據倉庫或者Hadoop系統中進行離線分析,然后針對業務行為做出相應的報表,這種做法很普遍。



支持多數據中心,但采用鏡像技術,實時性等各方面會有問題,本質還是各中心獨立







Hedwig

https://cwiki.apache.org/ZOOKEEPER/hedwig.html

http://zookeeper.apache.org/bookkeeper/docs/r4.0.0/hedwigUser.html



RabbitMQ

http://www.imneio.com/2009/10/zeromq_in_dotnet/(負面消息)

ActiveMQ



使用到消息總線的場景:

l分布式事務l數據復制l日志同步ldelay queuel廣播通知

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com