java編程——Kafka,Mq和Redis作爲消息隊列使用時的差異有哪些

java編程——Kafka,Mq和Redis作為消息隊列使用時的差異有哪些

Kafka

java編程——Kafka,Mq和Redis作為消息隊列使用時的差異有哪些

kafka是個日誌處理緩衝組件,在大數據信息處理中使用。和傳統的消息隊列相比較簡化了隊列結構和功能,以流形式處理存儲(持久化)消息(主要是日誌)。日誌數據量巨大,處理組件一般會處理不過來,所以作為緩衝曾的kafka,支持巨大吞吐量。為了防止信息都是,其消息被消防後不直接丟棄,要多存儲一段時間,等過期時間過了才丟棄。這是mq和redis不能具備的。

主要特點入下:

巨型存儲量: 支持TB甚至PB級別數據。

高吞吐,高IO:一般配置的服務器能實現單機每秒100K條以上消息的傳輸。

消息分區,分佈式消費:能保消息順序傳輸。 支持離線數據處理和實時數據處理。

Scale out:支持在線水平擴展,以支持更大數據處理量。

redis

java編程——Kafka,Mq和Redis作為消息隊列使用時的差異有哪些

redis只是提供一個高性能的、原子操作內存鍵值隊,具有高速訪問能力,可用做消息隊列的存儲,但是不具備消息隊列的任何功能和邏輯,要作做為消息隊列來實現的話,功能和邏輯要通過上層應用自己實現。

MQ,消息隊列。

java編程——Kafka,Mq和Redis作為消息隊列使用時的差異有哪些

我們以是RabbitMQ為例介紹。它是用Erlang語言開發的開源的消息隊列,支持多種協議,包括AMQP,XMPP, SMTP, STOMP。適合於企業級的開發。

MQ支持Broker構架,消息發送給客戶端時需要在中心隊列排隊。對路由,負載均衡或者數據持久化都有很好的支持。

其他更多消息隊列

java編程——Kafka,Mq和Redis作為消息隊列使用時的差異有哪些

還有ActiveMq,ZeroMq等。功能基本上大同小異。專門測結果,併發吞吐TPS比較,ZeroMq 最好,RabbitMq 次之, ActiveMq 最差。

關注我 私信回覆【架構】或【java】獲取整個java體系的學習視頻和資料以及免費的解答還會有職業生涯規劃以及面試指導


分享到:


相關文章: