天天看點

《Elasticsearch源碼解析與優化實戰》| 每日讀本書

編輯推薦

Elasticsearch 是一個開源的全文搜尋引擎,很多使用者對于大規模叢集應用時遇到的各種問題難以分析處理,或者知其然而不知其是以然。本書分析 Elasticsearch 中重要子產品及其實作原理和機制,讓使用者深入了解相關重要配置項意義,應對系統故障時不再迷茫。另外,本書提供實際應用場景中一些常見問題的優化建議,這些建議都是作者經過大規模測試及應用驗證過的。

《Elasticsearch源碼解析與優化實戰》| 每日讀本書

張超 著

内容提要

《Elasticsearch源碼解析與優化實戰》介紹了Elasticsearch的系統原理,旨在幫助讀者了解其内部原理、設計思想,以及在生産環境中如何正确地部署、優化系統。系統原理分兩方面介紹,一方面詳細介紹主要流程,例如啟動流程、選主流程、恢複流程;另一方面介紹各重要子產品的實作,以及子產品之間的關系,例如gateway子產品、allocation子產品等。本書的最後一部分介紹如何優化寫入速度、搜尋速度等大家關心的實際問題,并提供了一些診斷問題的方法和工具供讀者參考。

《Elasticsearch源碼解析與優化實戰》适合對Elasticsearch進行改進的研發人員、平台運維人員,對分布式搜尋感興趣的朋友,以及在使用Elasticsearch過程中遇到問題的人們。

精彩導讀

前言

我們可以在不關心原理的情況下使用Elasticsearch(以下簡稱ES),但要想用好ES,就必須熟知其内部原理。

為什麼要閱讀代碼?在傳統軟體行業,技術文檔非常豐富。當開展一個項目時,從需求分析,到概要設計、詳細設計,每個步驟都有相應的文檔,從項目的整體架構、技術方案選型,到流程圖、類圖,細化到每個接口及參數。在這種情況下,想要搞清楚系統原理,并不需要閱讀代碼,文檔上什麼都有。但是網際網路産品疊代快,技術文檔不全,想要搞清楚原理,隻能閱讀代碼,相當于從代碼中逆向了解設計思想。

通過分析源碼,我們可以有以下收獲:

了解設計思想 當我們面臨要解決的問題或實作的目标時,往往有多種方案可以選擇。無論表面上看起來多麼簡單的架構,其背後都經過了深思熟慮。思考一下為什麼使用現在的方案?有沒有更好的解決方案?

探究内部機制的原理 某個技術點是怎麼實作的?

搞明白執行流程 某個過程是什麼樣的,都做了什麼?有幾步?先做什麼,後做什麼?

熟悉代碼結構 如果需要進行二次開發,則給出代碼入口和調用關系,有時候找到某個邏輯的代碼實作要花很多時間。

學以緻用 借鑒其設計理念,掌握其解決問題的方式和方法,将來面對類似的問題時可以參考。

本書結構

本書由四部分組成,第一部分為基礎知識和環境準備(第1~2章);第二部分介紹ES的主要流程(第3~10章),包括叢集啟動流程、節點啟動/關閉流程、選主流程、讀寫流程、搜尋流程和索引恢複流程;第三部分主要介紹重要内部子產品(第11~17章),包括gateway子產品、allocation子產品、Snapshot子產品、Cluster子產品、Transport子產品和ThreadPool子產品等;第四部分介紹優化和診斷方法(第18~22章),包括寫入速度優化、搜尋速度優化、磁盤使用量優化,以及在生産環境中的實際應用建議,第22章介紹常用的問題診斷方法,排查叢集遇到的問題。

繼續閱讀