給予一個技術書籍作者最好的贊賞莫過於這句話——“如果在一開始接觸這門技術時能看到這本書就好了”。在開始寫這本書的時候,我們就是以這句話作為寫作目標。我們開發Kafka,在生產環境運行 Kafka,幫助很多公司構建基於 Kafka 的繫統,幫助他們管理數據管道,積累了很多經驗,但也困惑:“應該把哪些東西分享給 Kafka 新用戶,讓他們從新手變成專家?”這本書就是我們日常工作最好的寫照:運行 Kafka 並幫助其他人更好地使用 Kafka。
我們相信,書中提供的這些內容能夠幫助 Kafka 用戶在生產環境運行 Kafka 以及基於Kafka 構建健壯的高性能應用程序。我們列舉了一些非常流行的應用場景:用於事件驅動微服務繫統的消息總線、流式應用和大規模數據管道。這本書通俗易懂,能夠幫助每一個Kafka 用戶在任意的架構或應用場景裡使用好 Kafka。書中介紹了如何安裝和配置 Kafka、如何使用 Kafka API、Kafka 的設計原則和可靠性保證,以及 Kafka 的一些架構細節,如復制協議、控制器和存儲層。我們相信,Kafka 的設計原理和內部架構不僅會成為分布式繫統構建者的興趣所在,對於那些在生產環境部署 Kafka 或使用 Kafka 構建應用程序的人來說也是非常有用的。越是了解 Kafka,就越是能夠更好地作出權衡。
在軟件工程裡,條條道路通羅馬,每一個問題都有多種解決方案。Kafka 為專家級別的用戶提供了巨大的靈活性,而新手則需要克服陡峭的學習曲線纔能成為專家。Kafka 通常會告訴你如何使用某個功能特性,但不會告訴你為什麼要用它或者為什麼不該用它。我們會盡可能地解釋我們的設計決策和權衡背後的緣由,以及用戶在哪些情況下應該或不應該使用 Kafka 提供的特性。
讀者對像
這本書是為使用 Kafka API 開發應用程序的工程師和在生產環境安裝、配置、調優、監控Kafka 的運維工程師(也可以叫作 SRE、運維人員或繫統管理員)而寫的。我們也考慮到了數據架構師和數據工程師,他們負責設計和構建整個組織的數據基礎架構。某些章節(特別是第 3 章、第 4 章和第 11 章)主要面向 Java 開發人員,並假設讀者已經熟悉基本的Java 語言編程,比如異常處理和並發編程。其他章節(特別是第 2 章、第 8 章、第 9 章和第 10 章)則假設讀者在 Linux 的運行、存儲和網絡配置方面有一定的經驗。本書的其餘部分則討論了一般性的軟件架構,不要求讀者具備特定的知識。
另一類可能對本書感興趣的人是那些經理或架構師,他們不直接使用 Kafka,但會與使用Kafka 的工程師打交道。他們有必要了解 Kafka 所能提供的保證機制,以及他們的同事在構建基於 Kafka 的繫統時所作出的權衡。這本書可以成為企業管理人員的利器,確保他們的工程師在 Kafka 方面訓練有素,讓他們的團隊了解他們本該知道的知識。
排版約定
本書使用了下列排版約定。
? 黑體
表示新術語或重點強調的內容。
? 等寬字體(constant width)
表示程序片段,以及正文中出現的變量、函數名、數據庫、數據類型、環境變量、語句和關鍵字等。
? 加粗等寬字體(constant width bold)
表示應該由用戶輸入的命令或其他文本。
? 等寬斜體(constant width italic)
表示應該由用戶輸入的值或根據上下文確定的值替換的文本。
使用代碼示例
本書是要幫你完成工作的。一般來說,如果本書提供了示例代碼,你可以把它用在你的程序或文檔中。除非你使用了很大一部分代碼,否則無需聯繫我們獲得許可。比如,用本書的幾個代碼片段寫一個程序就無需獲得許可,銷售或分發 O’Reilly 圖書的示例光盤則需要獲得許可;引用本書中的示例代碼回答問題無需獲得許可,將書中大量的代碼放到你的產品文檔中則需要獲得許可。
我們很希望但並不強制要求你在引用本書內容時加上引用說明。引用說明一般包括書名、作者、出版社和 ISBN。例如“Kafka 權威指南,作者 Neha Narkhede、Gwen Shapira 和 Todd Palino(O’Reilly),版權歸 Neha Narkhede、Gwen Shapira 和 Todd Palino 所有,978-1-4919-3616-0”。
如果你覺得自己對示例代碼的用法超出了上述許可的範圍,歡迎你通過 permissions@ oreilly.com 與我們聯繫。
O’Reilly Safari
Safari(原來叫 Safari Books Online)是面向企業、政府、教育從業者和個人的會員制培訓和參考咨詢平臺。
些資源來自 250 多家出版機構,其中包括 O’Reilly Media、Harvard Business Review、 Prentice Hall Professional、Addison-Wesley Professional、Microsoft Press、Sams、Que、 Peachpit Press、Adobe、Focal Press、Cisco Press、John Wiley & Sons、Syngress、Morgan Kaufmann、IBM Redbooks、Packt、Adobe Press、FT Press、Apress、Manning、New Riders、McGraw-Hill、Jones & Bartlett 和 Course Technology。
更多信息,請訪問 http://oreilly.com/safari。
聯繫我們
請把對本書的評價和問題發給出版社。
美國:
O’Reilly Media, Inc.
1005 Gravenstein Highway North Sebastopol, CA 95472
中國:
北京市西城區西直門南大街 2 號成銘大廈 C 座 807 室(100035)奧萊利技術咨詢(北京)有限公司
O’Reilly 的每一本書都有專屬網頁,你可以在那兒找到本書的相關信息,包括勘誤表、示例代碼以及其他信息。本書的網站地址是 http://oreil.ly/2tVmYjk。
對於本書的評論和技術性問題,請發送電子郵件到:bookquestions@oreilly.com
要了解更多 O’Reilly 圖書、培訓課程、會議和新聞的信息,請訪問以下網站:
http://www.oreilly.com
我們在 Facebook 的地址如下:http://facebook.com/oreilly
請關注我們的 Twitter 動態:http://twitter.com/oreillymedia
我們的 YouTube 視頻地址如下:http://www.youtube.com/oreillymedia
致謝
我們想感謝眾多為 Kafka 和它的生態繫統做出貢獻的人。如果沒有他們艱辛的工作,就不會有這本書的問世。特別感謝 Jay Kreps、Neha Narkhede 和 Jun Rao,以及他們在 LinkedIn的同事和領導,他們創造了 Kafka,並把它捐獻給了 Apache 軟件基金會。
很多人在早前為本書提供了很多有價值的反饋,我們非常感激他們為此付出的時間,也很欽佩他們的專業能力,這些人包括:Apurva Mehta、Arseniy Tashoyan、Dylan Scott、 Ewen Cheslack-Postava、Grant Henke、Ismael Juma、James Cheng、Jason Gustafson、Jeff Holoman、Joel Koshy、Jonathan Seidman、Matthias Sax、Michael Noll、Paolo Castagna。我們還想感謝眾多在網站上留下評論和反饋的讀者。
很多審稿人提供了有價值的意見,極大改進了本書的質量。書中的遺留錯誤理應由我們作者負責。
我們要感謝 O’Reilly 編輯 Shannon Cutt 的鼓勵、耐心和深謀遠慮。對於一個作者來說,與O’Reilly 一起合作是一段非凡的經歷——他們所提供的支持,從工具到簽名售書,都是無可匹敵的。我們感謝每一個參與本書相關工作的人,很感激他們願意與我們一起工作。
另外,我們也想感謝我們的領導和同事,感謝他們在我們寫作這本書的過程中給予的幫助和鼓勵。
Gwen 要感謝她的丈夫 Omer Shapira,在她寫書的幾個月時間裡,他一直給予她支持和耐心。還有她的父親 Lior Shapira,讓她學會了如何在困難面前不輕言放棄,盡管這種生活哲學總是讓她麻煩不斷。
Todd 要感謝他的妻子 Marcy 和女兒 Bella 及 Kaylee,她們一直在背後默默地支持他。因為有了她們的支持,他纔有更多的時間寫作,纔能釐清思路,堅持到最後。