原本打算給這篇文章起名叫「搭建Kafka消息隊列集羣」,然而,和RabbitMQ不一樣,Kafka並無實現消息隊列的協議(例如AMQP,Advanced Message Queuing Protocol,提供統一消息服務的應用層標準高級消息隊列協議,是應用層協議的一個開放標準,爲面向消息的中間件設計),因此儘管在使用方式上像極了隊列,但並不算是嚴格意義上的消息隊列。最後,我仍是折中一下,將標題改成了「Kafka 分佈式消息系統」。瀏覽器
Kafka最先是由LinkedIn使用Java和Scala語言開發的,並在2011年開源,2012年成爲Apache軟件基金會的頂級項目。2014年,Kafka的幾個建立人,成立了一家新的公司,叫作Confluent,專門從事Kafka相關的工做。安全
Kafka項目的目標是提供一個 統一的、高吞吐、低延遲的,用來處理實時數據的系統平臺。按照官方的定義,Kafka有下面三個主要做用:分佈式
上面的三個做用,第一條就講到,kafka是一個消息系統。那麼什麼是消息系統?它解決了什麼樣的問題? 咱們以時下流行的微服務爲例,假設Web端有Web一、Web二、Web3三個面向終端(weixin公衆號、手機App、瀏覽器)的Web服務(Http協議),內部有App一、App二、App3三個應用服務(遠程過程調用,例如WCF、gRPC等),若是沒有消息系統,採用直連的方式,它們之間的通訊方式多是這樣的:微服務