生產者均衡圖解 如何設計一個MQ消息隊列?
如何設計一個MQ消息隊列?1.先上圖,明確一個消息發送和消費的流程2.消息消息首先需要定義消息協議,比如ActiveMQ,Stomp,XMPP等3.消息協議定義好了,明確消息隊列需要滿足什么場景是否需
如何設計一個MQ消息隊列?
1.先上圖,明確一個消息發送和消費的流程
2.消息消息首先需要定義消息協議,比如ActiveMQ,Stomp,XMPP等
3.消息協議定義好了,明確消息隊列需要滿足什么場景
是否需要保證消息可靠性,如果需要就要做存儲的高可用
是否需要支持同步和異步消息
是否需要保證消息的順序
是否需要支持延時消息
具體可以參照很多開源實現的特性,比如RocketMQ就是高可靠的,Kafka就是高吞吐量的,但是不是高可靠的。
日志采集系統flume和kafka有什么區別及聯系?
Flume和Kafka有一部分功能是相同的,但是整體來看,兩者的差別還是很大的;它們使用的場景有所不同,但是可以相互配合使用。
Flume
簡單的說,Flume是分布式日志收集系統,它把各個服務器上的日志收集起來,傳送到制定的地方,比如傳送到HDFS中。
Kafka
Kafka的定位是分布式消息中間件,自帶存儲,提供push和pull存取數據功能。
使用場景
在實際應用中,系統實時產生的日志需要最后進入HDFS,但是生產上的日志數量會有波動,比如由于訪問量的增加,導致突然之間產生大量的日志,這時候可能會導致日志寫入HDFS失敗,所以這時候可以先把日志數據寫入到Kafka中,再由Kafka導入到HDFS中。
總結:在日志采集系統中,把Kafka當做日志緩存更加合適,Flume做數據采集,因為它可以定制很多數據源,減少開發量,所以Flume和Kafka可以配合起來一起工作。
整體的流程是這樣的:
服務器上的日志<--Flume-->Kafka-->HDFS-->離線計算
服務器上的日志<--Flume-->Kafka-->Storm
希望我的回答能夠幫助到你!