注冊(cè) | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)Elasticsearch源碼解析與優(yōu)化實(shí)戰(zhàn)

Elasticsearch源碼解析與優(yōu)化實(shí)戰(zhàn)

Elasticsearch源碼解析與優(yōu)化實(shí)戰(zhàn)

定 價(jià):¥89.00

作 者: 張超 著
出版社: 電子工業(yè)出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

ISBN: 9787121352164 出版時(shí)間: 2018-11-01 包裝: 平裝
開本: 16開 頁數(shù): 360 字?jǐn)?shù):  

內(nèi)容簡介

  本書介紹了Elasticsearch的系統(tǒng)原理,旨在幫助讀者了解其內(nèi)部原理、設(shè)計(jì)思想,以及在生產(chǎn)環(huán)境中如何正確地部署、優(yōu)化系統(tǒng)。系統(tǒng)原理分兩方面介紹,一方面詳細(xì)介紹主要流程,例如啟動(dòng)流程、選主流程、恢復(fù)流程;另一方面介紹各重要模塊的實(shí)現(xiàn),以及模塊之間的關(guān)系,例如gateway模塊、allocation模塊等。本書的最后一部分介紹如何優(yōu)化寫入速度、搜索速度等大家關(guān)心的實(shí)際問題,并提供了一些診斷問題的方法和工具供讀者參考。 本書適合對(duì)Elasticsearch進(jìn)行改進(jìn)的研發(fā)人員、平臺(tái)運(yùn)維人員,對(duì)分布式搜索感興趣的朋友,以及在使用Elasticsearch過程中遇到問題的人們。

作者簡介

  長期從事服務(wù)端和基礎(chǔ)架構(gòu)等研發(fā)工作,對(duì)搜索、分布式系統(tǒng)、高性能網(wǎng)絡(luò)服務(wù)有濃厚的興趣,喜歡探究技術(shù)本質(zhì),喜歡分析有深度的問題。目前就職于360企業(yè)安全集團(tuán)基礎(chǔ)大數(shù)據(jù)團(tuán)隊(duì),負(fù)責(zé)平臺(tái)內(nèi)核研發(fā)工作。

圖書目錄

第1章 走進(jìn)Elasticsearch
1.1 基本概念和原理
1.1.1 索引結(jié)構(gòu)
1.1.2 分片(shard)
1.1.3 動(dòng)態(tài)更新索引
1.1.4 近實(shí)時(shí)搜索
1.1.5 段合并
1.2 集群內(nèi)部原理
1.2.1 集群節(jié)點(diǎn)角色
1.2.2 集群健康狀態(tài)
1.2.3 集群狀態(tài)
1.2.4 集群擴(kuò)容
1.3 客戶端API
1.4 主要內(nèi)部模塊簡介
1.4.1 模塊結(jié)構(gòu)
1.4.2 模塊管理
第2章 準(zhǔn)備編譯和調(diào)試環(huán)境
2.1 編譯源碼
2.1.1 準(zhǔn)備JDK和Gradle
2.1.2 下載源代碼
2.1.3 編譯項(xiàng)目,打包
2.1.4 將工程導(dǎo)入IntelliJ IDEA
2.2 調(diào)試Elasticsearch
2.2.1 本地運(yùn)行、調(diào)試項(xiàng)目
2.2.2 遠(yuǎn)程調(diào)試
2.3 代碼書簽和斷點(diǎn)組
第3章 集群啟動(dòng)流程
3.1 選舉主節(jié)點(diǎn)
3.2 選舉集群元信息
3.3 allocation過程
3.4 index recovery
3.5 集群啟動(dòng)日志
3.6 小結(jié)
第4章 節(jié)點(diǎn)的啟動(dòng)和關(guān)閉
4.1 啟動(dòng)流程做了什么
4.2 啟動(dòng)流程分析
4.2.1 啟動(dòng)腳本
4.2.2 解析命令行參數(shù)和配置文件
4.2.3 加載安全配置
4.2.4 檢查內(nèi)部環(huán)境
4.2.5 檢測(cè)外部環(huán)境
4.2.6 啟動(dòng)內(nèi)部模塊
4.2.7 啟動(dòng)keepalive線程
4.3 節(jié)點(diǎn)關(guān)閉流程
4.4 關(guān)閉流程分析
4.5 分片讀寫過程中執(zhí)行關(guān)閉
4.6 主節(jié)點(diǎn)被關(guān)閉
4.7 小結(jié)
第5章 選主流程
5.1 設(shè)計(jì)思想
5.2 為什么使用主從模式
5.3 選舉算法
5.4 相關(guān)配置
5.5 流程概述
5.6 流程分析
5.6.1 選舉臨時(shí)Master
5.6.2 投票與得票的實(shí)現(xiàn)
5.6.3 確立Master或加入集群
5.7 節(jié)點(diǎn)失效檢測(cè)
5.7.1 NodesFaultDetection事件處理
5.7.2 MasterFaultDetection事件處理
5.8 小結(jié)
第6章 數(shù)據(jù)模型
6.1 PacificA算法
6.1.1 數(shù)據(jù)副本策略
6.1.2 配置管理
6.1.3 錯(cuò)誤檢測(cè)
6.2 ES的數(shù)據(jù)副本模型
6.2.1 基本寫入模型
6.2.2 寫故障處理
6.2.3 基本讀取模型
6.2.4 讀故障處理
6.2.5 引申的含義
6.2.6 系統(tǒng)異常
6.3 Allocation IDs
6.3.1 安全地分配主分片
6.3.2 將分配標(biāo)記為陳舊
6.2.3 一個(gè)例子
6.3.4 不會(huì)丟失全部
6.4 Sequence IDs
6.4.1 Primary Terms和Sequence Numbers
6.4.2 本地及全局檢查點(diǎn)
6.4.3 用于快速恢復(fù)(Recovery)
6.5 _version
第7章 寫流程
7.1 文檔操作的定義
7.2 可選參數(shù)
7.3 Index/Bulk基本流程
7.4 Index/Bulk詳細(xì)流程
7.4.1 協(xié)調(diào)節(jié)點(diǎn)流程
7.4.2 主分片節(jié)點(diǎn)流程
7.4.3 副分片節(jié)點(diǎn)流程
7.5 I/O異常處理
7.5.1 Engine關(guān)閉過程
7.5.2 Master的對(duì)應(yīng)處理
7.5.3 異常流程總結(jié)
7.6 系統(tǒng)特性
7.7 思考
第8章 GET流程
8.1 可選參數(shù)
8.2 GET基本流程
8.3 GET詳細(xì)分析
8.3.1 協(xié)調(diào)節(jié)點(diǎn)
8.3.2 數(shù)據(jù)節(jié)點(diǎn)
8.4 MGET流程分析
8.5 思考
第9章 Search流程
9.1 索引和搜索
9.1.1 建立索引
9.1.2 執(zhí)行搜索
9.2 search type
9.3 分布式搜索過程
9.3.1 協(xié)調(diào)節(jié)點(diǎn)流程
9.3.2 執(zhí)行搜索的數(shù)據(jù)節(jié)點(diǎn)流程
9.4 小結(jié)
第10章 索引恢復(fù)流程分析
10.1 相關(guān)配置
10.2 流程概述
10.3 主分片恢復(fù)流程
10.4 副分片恢復(fù)流程
10.4.1 流程概述
10.4.2 synced flush機(jī)制
10.4.3 副分片節(jié)點(diǎn)處理過程
10.4.4 主分片節(jié)點(diǎn)處理過程
10.5 recovery速度優(yōu)化
10.6 如何保證副分片和主分片一致
10.7 recovery相關(guān)監(jiān)控命令
10.8 小結(jié)
第11章 gateway模塊分析
11.1 元數(shù)據(jù)
11.2 元數(shù)據(jù)的持久化
11.3 元數(shù)據(jù)的恢復(fù)
11.4 元數(shù)據(jù)恢復(fù)流程分析
11.4.1 選舉集群級(jí)和索引級(jí)別的元數(shù)據(jù)
11.4.2 觸發(fā)allocation
11.5 思考
第12章 allocation模塊分析
12.1 什么是allocation
12.2 觸發(fā)時(shí)機(jī)
12.3 allocation模塊結(jié)構(gòu)概述
12.4 allocators
12.5 deciders
12.5.1 負(fù)載均衡類
12.5.2 并發(fā)控制類
12.5.3 條件限制類
12.6 核心reroute實(shí)現(xiàn)
12.6.1 集群啟動(dòng)時(shí)reroute的觸發(fā)時(shí)機(jī)
12.6.2 流程分析
12.6.3 gatewayAllocator
12.6.4 shardsAllocator
12.7 從gateway到allocation流程的轉(zhuǎn)換
12.8 從allocation流程到recovery流程的轉(zhuǎn)換
12.9 思考
第13章 Snapshot模塊分析
13.1 倉庫
13.2 快照
13.2.1 創(chuàng)建快照
13.2.2 獲取快照信息
13.2.3 快照status
13.2.4 取消、刪除快照和恢復(fù)操作
13.3 從快照恢復(fù)
13.3.1 部分恢復(fù)
13.3.2 恢復(fù)過程中更改索引設(shè)置
13.3.3 監(jiān)控恢復(fù)進(jìn)度
13.4 創(chuàng)建快照的實(shí)現(xiàn)原理
13.4.1 Lucene文件格式簡介
13.4.2 協(xié)調(diào)節(jié)點(diǎn)流程
13.4.3 主節(jié)點(diǎn)流程
13.4.4 數(shù)據(jù)節(jié)點(diǎn)流程
13.5 刪除快照實(shí)現(xiàn)原理
13.5.1 協(xié)調(diào)節(jié)點(diǎn)流程
13.5.2 主節(jié)點(diǎn)流程
13.6 思考與總結(jié)
第14章 Cluster模塊分析
14.1 集群狀態(tài)
14.2 內(nèi)部封裝和實(shí)現(xiàn)
14.2.1 MasterService
14.2.2 ClusterApplierService
14.2.3 線程池
14.3 提交集群任務(wù)
14.3.1 內(nèi)部模塊如何提交任務(wù)
14.3.2 任務(wù)提交過程實(shí)現(xiàn)
14.4 集群任務(wù)的執(zhí)行過程
14.5 集群狀態(tài)的發(fā)布過程
14.5.1 增量發(fā)布的實(shí)現(xiàn)原理
14.5.2 二段提交總流程
14.5.3 發(fā)布過程
14.5.4 提交過程
14.5.5 異常處理
14.6 應(yīng)用集群狀態(tài)
14.7 查看等待執(zhí)行的集群任務(wù)
14.8 任務(wù)管理API
14.8.1 列出運(yùn)行中的任務(wù)
14.8.2 取消任務(wù)
14.9 思考與總結(jié)
第15章 Transport模塊分析
15.1 配置信息
15.1.1 傳輸模塊配置
15.1.2 通用網(wǎng)絡(luò)配置
15.2 Transport總體架構(gòu)
15.2.1 網(wǎng)絡(luò)層
15.2.2 服務(wù)層
15.3 REST解析和處理
15.4 RPC實(shí)現(xiàn)
15.4.1 RPC的注冊(cè)和映射
15.4.2 根據(jù)Action獲取處理類
15.5 思考與總結(jié)
第16章 ThreadPool模塊分析
16.1 線程池類型
16.1.1 fixed
16.1.2 scaling
16.1.3 direct
16.1.4 fixed_auto_queue_size
16.2 處理器設(shè)置
16.3 查看線程池
16.3.1 cat thread pool
16.3.2 nodes info
16.3.3 nodes stats
16.3.4 nodes hot threads
16.3.5 Java的線程池結(jié)構(gòu)
16.4 ES的線程池實(shí)現(xiàn)
16.4.1 ThreadPool類結(jié)構(gòu)與初始化
16.4.2 fixed類型線程池構(gòu)建過程
16.4.3 scaling類型線程池構(gòu)建過程
16.4.4 direct類型線程池構(gòu)建過程
16.4.5 fixed_auto_queue_size類型線程池構(gòu)建過程
16.5 其他線程池
16.6 思考與總結(jié)
第17章 Shrink原理分析
17.1 準(zhǔn)備源索引
17.2 縮小索引
17.3 Shrink的工作原理
17.3.1 創(chuàng)建新索引
17.3.2 創(chuàng)建硬鏈接
17.3.3 硬鏈接過程源碼分析
第18章 寫入速度優(yōu)化
18.1 translog flush間隔調(diào)整
18.2 索引刷新間隔refresh_interval
18.3 段合并優(yōu)化
18.4 indexing buffer
18.5 使用bulk請(qǐng)求
18.5.1 bulk線程池和隊(duì)列
18.5.2 并發(fā)執(zhí)行bulk請(qǐng)求
18.6 磁盤間的任務(wù)均衡
18.7 節(jié)點(diǎn)間的任務(wù)均衡
18.8 索引過程調(diào)整和優(yōu)化
18.8.1 自動(dòng)生成doc ID
18.8.2 調(diào)整字段Mappings
18.8.3 調(diào)整_source字段
18.8.4 禁用_all字段
18.8.5 對(duì)Analyzed的字段禁用Norms
18.8.6 index_options 設(shè)置
18.9 參考配置
18.10 思考與總結(jié)
第19章 搜索速度的優(yōu)化
19.1 為文件系統(tǒng)cache預(yù)留足夠的內(nèi)存
19.2 使用更快的硬件
19.3 文檔模型
19.4 預(yù)索引數(shù)據(jù)
19.5 字段映射
19.6 避免使用腳本
19.7 優(yōu)化日期搜索
19.8 為只讀索引執(zhí)行force-merge
19.9 預(yù)熱全局序號(hào)(global ordinals)
19.10 execution hint
19.11 預(yù)熱文件系統(tǒng)cache
19.12 轉(zhuǎn)換查詢表達(dá)式
19.13 調(diào)節(jié)搜索請(qǐng)求中的batched_reduce_size
19.14 使用近似聚合
19.15 深度優(yōu)先還是廣度優(yōu)先
19.16 限制搜索請(qǐng)求的分片數(shù)
19.17 利用自適應(yīng)副本選擇(ARS)提升ES響應(yīng)速度
第20章 磁盤使用量優(yōu)化
20.1 預(yù)備知識(shí)
20.1.1 元數(shù)據(jù)字段
20.1.2 索引映射參數(shù)
20.2 優(yōu)化措施
20.2.1 禁用對(duì)你來說不需要的特性
20.2.2 禁用doc values
20.2.3 不要使用默認(rèn)的動(dòng)態(tài)字符串映射
20.2.4 觀察分片大小
20.2.5 禁用_source
20.2.6 使用best_compression
20.2.7 Fource Merge
20.2.8 Shrink Index
20.2.9 數(shù)值類型長度夠用就好
20.2.10 使用索引排序來排列類似的文檔
20.2.11 在文檔中以相同的順序放置字段
20.3 測(cè)試數(shù)據(jù)
第21章 綜合應(yīng)用實(shí)踐
21.1 集群層
21.1.1 規(guī)劃集群規(guī)模
21.1.2 單節(jié)點(diǎn)還是多節(jié)點(diǎn)部署
21.1.3 移除節(jié)點(diǎn)
21.1.4 獨(dú)立部署主節(jié)點(diǎn)
21.2 節(jié)點(diǎn)層
21.2.1 控制線程池的隊(duì)列大小
21.2.2 為系統(tǒng)cache保留一半物理內(nèi)存
21.3 系統(tǒng)層
21.3.1 關(guān)閉swap
21.3.2 配置Linux OOM Killer
21.3.3 優(yōu)化內(nèi)核參數(shù)
21.4 索引層
21.4.1 使用全局模板
21.4.2 索引輪轉(zhuǎn)
21.4.3 避免熱索引分片不均
21.4.4 副本數(shù)選擇
21.4.5 Force Merge
21.4.6 Shrink Index
21.4.7 close索引
21.4.8 延遲分配分片
21.4.9 小心地使用fielddata
21.5 客戶端
21.5.1 使用REST API而非Java API
21.5.2 注意429狀態(tài)碼
21.5.3 curl的HEAD請(qǐng)求
21.5.4 了解你的搜索計(jì)劃
21.5.5 為讀寫請(qǐng)求設(shè)置比較長的超時(shí)時(shí)間
21.6 讀寫
21.6.1 避免搜索操作返回巨大的結(jié)果集
21.6.2 避免索引巨大的文檔
21.6.3 避免使用多個(gè)_type
21.6.4 避免使用_all字段
21.6.5 避免將請(qǐng)求發(fā)送到同一個(gè)協(xié)調(diào)節(jié)點(diǎn)
21.7 控制相關(guān)度
第22章 故障診斷
22.1 使用Profile API定位慢查詢
22.2 使用Explain API分析未分配的分片(Unassigned Shards)
22.2.1 診斷未分配的主分片
22.2.2 診斷未分配的副分片
22.2.3 診斷已分配的分片
22.3 節(jié)點(diǎn)CPU使用率高
22.4 節(jié)點(diǎn)內(nèi)存使用率高
22.5 Slow Logs
22.6 分析工具
22.6.1 I/O信息
22.6.2 內(nèi)存
22.6.3 CPU信息
22.6.4 網(wǎng)絡(luò)連接和流量
22.7 小結(jié)
附錄A 重大版本變化

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) www.autoforsalebyowners.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)