Kafka從首次發布之日起,已經走過了七個年頭。從最開始的大規模消息系統,發展成為功能完善的分布式流式處理平臺,用于發布和訂閱、存儲及實時地處理大規模流數據。來自世界各地的數千家公司在使用Kafka,包括三分之一的500強公司。Kafka以穩健的步伐向前邁進,首先加入了復制功能和無邊界的鍵值數據存儲,接著推出了用于集成外部存儲系統的Connect API,后又推出了為實時應用和事件驅動應用提供原生流式處理能力的Streams API,并于今年春季開始支持僅一次處理語義。如此廣泛的應用和完備的功能以及如此悠久的歷史,無一不在說明Kafka已經成為一款穩定的企業級產品。而更為激動人心的是,Kafka現在正式迎來了1.0.0版本!
Kafka 1.0.0發布的主要內容如下。
0.10.0版本里開始引入的Streams API在1.0.0版本里繼續演進,改進了builder API(KIP-120),新增了用于查看運行時活躍任務的API(KIP-130)和用于聚合分區的cogroupAPI(KIP-150)。增強的print()和writeAsText()方法讓調試變得更容易(KIP-160)。其他更多信息可以參考Streams文檔。改進了Connect的度量指標(KIP-196),新增了大量用于健康監測的度量指標(KIP-188),并提供了集群的GloabalTopicCount和GlobalPartitionCount度量指標(KIP-168)。支持Java 9,實現更快的TLS和CRC32C,加快了加密速度,降低了計算開銷。調整了SASL認證模塊的錯誤處理邏輯(KIP-152),原先的認證錯誤信息現在被清晰地記錄到日志當中。更好地支持磁盤容錯(KIP-112),更優雅地處理磁盤錯誤,單個JBOD上的磁盤錯誤不會導致整個集群崩潰。0.11.0版本中引入的冪等性生產者需要將max.in.flight.requests.per.connection參數設置為1,這對吞吐量造成了一定的限制。而在1.0.0版本里,這個參數最大可以被設置為5(KAFKA-5949),極大提升了吞吐量范圍。
關于新版本更多的變化可以查看發布說明,也可以下載源代碼和二進制包(Scala 2.11、Scala 2.12)。