图书介绍

Elasticsearch源码解析与优化实战PDF|Epub|txt|kindle电子书版本网盘下载

Elasticsearch源码解析与优化实战
  • 张超著 著
  • 出版社: 北京:电子工业出版社
  • ISBN:9787121352164
  • 出版时间:2018
  • 标注页数:343页
  • 文件大小:33MB
  • 文件页数:361页
  • 主题词:搜索引擎-程序设计

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

Elasticsearch源码解析与优化实战PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第1章 走进Elasticsearch1

1.1 基本概念和原理1

1.1.1 索引结构2

1.1.2 分片(shard )2

1.1.3 动态更新索引4

1.1.4 近实时搜索5

1.1.5 段合并5

1.2 集群内部原理6

1.2.1 集群节点角色6

1.2.2 集群健康状态8

1.2.3 集群状态8

1.2.4 集群扩容8

1.3 客户端API9

1.4 主要内部模块简介10

1.4.1 模块结构11

1.4.2 模块管理12

第2章 准备编译和调试环境13

2.1 编译源码13

2.1.1 准备JDK和Gradle13

2.1.2 下载源代码13

2.1.3 编译项目,打包14

2.1.4 将工程导入IntelliJ IDEA14

2.2 调试Elasticsearch16

2.2.1 本地运行、调试项目16

2.2.2 远程调试18

2.3 代码书签和断点组19

第3章 集群启动流程21

3.1 选举主节点22

3.2 选举集群元信息22

3.3 allocation过程23

3.4 index recovery24

3.5 集群启动日志25

3.6 小结26

第4章 节点的启动和关闭28

4.1 启动流程做了什么28

4.2 启动流程分析28

4.2.1 启动脚本28

4.2.2 解析命令行参数和配置文件29

4.2.3 加载安全配置30

4.2.4 检查内部环境30

4.2.5 检测外部环境30

4.2.6 启动内部模块33

4.2.7 启动keepalive线程33

4.3 节点关闭流程34

4.4 关闭流程分析34

4.5 分片读写过程中执行关闭36

4.6 主节点被关闭36

4.7 小结36

第5章 选主流程38

5.1 设计思想38

5.2 为什么使用主从模式38

5.3 选举算法39

5.4 相关配置39

5.5 流程概述41

5.6 流程分析41

5.6.1 选举临时Master42

5.6.2 投票与得票的实现46

5.6.3 确立Master或加入集群46

5.7 节点失效检测47

5.7.1 NodesFaultDetection事件处理47

5.7.2 MasterFaultDetection事件处理48

5.8 小结49

第6章 数据模型50

6.1 PacificA算法50

6.1.1 数据副本策略51

6.1.2 配置管理52

6.1.3 错误检测52

6.2 ES的数据副本模型53

6.2.1 基本写入模型53

6.2.2 写故障处理54

6.2.3 基本读取模型54

6.2.4 读故障处理55

6.2.5 引申的含义55

6.2.6 系统异常56

6.3 Allocation IDs56

6.3.1 安全地分配主分片56

6.3.2 将分配标记为陈旧57

6.2.3 一个例子58

6.3.4 不会丢失全部63

6.4 Sequence IDs64

6.4.1 Primary Terms和Sequence Numbers64

6.4.2 本地及全局检查点66

6.4.3 用于快速恢复(Recovery)68

6.5 version69

第7章 写流程71

7.1 文档操作的定义71

7.2 可选参数72

7.3 Index/Bulk基本流程72

7.4 Index/Bulk详细流程73

7.4.1 协调节点流程74

7.4.2 主分片节点流程79

7.4.3 副分片节点流程82

7.5 I/O异常处理82

7.5.1 Engine关闭过程83

7.5.2 Master的对应处理84

7.5.3 异常流程总结84

7.6 系统特性84

7.7 思考85

第8章 GET流程86

8.1 可选参数87

8.2 GET基本流程87

8.3 GET详细分析88

8.3.1 协调节点89

8.3.2 数据节点91

8.4 MGET流程分析93

8.5 思考94

第9章 Search流程95

9.1 索引和搜索96

9.1.1 建立索引97

9.1.2 执行搜索97

9.2 search type98

9.3 分布式搜索过程98

9.3.1 协调节点流程99

9.3.2 执行搜索的数据节点流程106

9.4 小结108

第10章 索引恢复流程分析110

10.1 相关配置111

10.2 流程概述111

10.3 主分片恢复流程112

10.4 副分片恢复流程116

10.4.1 流程概述116

10.4.2 synced flush机制118

10.4.3 副分片节点处理过程118

10.4.4 主分片节点处理过程123

10.5 recovery速度优化127

10.6 如何保证副分片和主分片一致128

10.7 recovery相关监控命令131

10.8 小结133

第11章 gateway模块分析134

11.1 元数据134

11.2 元数据的持久化135

11.3 元数据的恢复136

11.4 元数据恢复流程分析137

11.4.1 选举集群级和索引级别的元数据138

11.4.2 触发allocation140

11.5 思考140

第12章 allocation模块分析141

12.1 什么是allocation141

12.2 触发时机142

12.3 allocation模块结构概述142

12.4 allocators142

12.5 deciders143

12.5.1 负载均衡类144

12.5.2 并发控制类145

12.5.3 条件限制类145

12.6 核心reroute实现146

12.6.1 集群启动时reroute的触发时机147

12.6.2 流程分析147

12.6.3 gatewayAllocator147

12.6.4 shardsAllocator154

12.7 从gateway到allocation流程的转换154

12.8 从allocation流程到recovery流程的转换155

12.9 思考156

第13章 Snapshot模块分析157

13.1 仓库158

13.2 快照160

13.2.1 创建快照160

13.2.2 获取快照信息161

13.2.3 快照status163

13.2.4 取消、删除快照和恢复操作163

13.3 从快照恢复164

13.3.1 部分恢复165

13.3.2 恢复过程中更改索引设置165

13.3.3 监控恢复进度165

13.4 创建快照的实现原理166

13.4.1 Lucene文件格式简介167

13.4.2 协调节点流程168

13.4.3 主节点流程170

13.4.4 数据节点流程173

13.5 删除快照实现原理184

13.5.1 协调节点流程184

13.5.2 主节点流程185

13.6 思考与总结192

第14章 Cluster模块分析194

14.1 集群状态194

14.2 内部封装和实现198

14.2.1 MasterService198

14.2.2 ClusterApplierService199

14.2.3 线程池201

14.3 提交集群任务202

14.3.1 内部模块如何提交任务203

14.3.2 任务提交过程实现205

14.4 集群任务的执行过程209

14.5 集群状态的发布过程211

14.5.1 增量发布的实现原理213

14.5.2 二段提交总流程214

14.5.3 发布过程215

14.5.4 提交过程216

14.5.5 异常处理217

14.6 应用集群状态217

14.7 查看等待执行的集群任务219

14.8 任务管理API220

14.8.1 列出运行中的任务221

14.8.2 取消任务222

14.9 思考与总结222

第15章 Transport模块分析223

15.1 配置信息223

15.1.1 传输模块配置223

15.1.2 通用网络配置225

15.2 Transport总体架构227

15.2.1 网络层227

15.2.2 服务层229

15.3 REST解析和处理234

15.4 RPC实现235

15.4.1 RPC的注册和映射236

15.4.2 根据Action获取处理类240

15.5 思考与总结241

第16章 ThreadPool模块分析242

16.1 线程池类型243

16.1.1 fixed244

16.1.2 scaling244

16.1.3 direct245

16.1.4 fixed_ auto_ queue_ size245

16.2 处理器设置245

16.3 查看线程池246

16.3.1 cat thread pool246

16.3.2 nodes info247

16.3.3 nodes stats248

16.3.4 nodes hot threads248

16.3.5 Java的线程池结构250

16.4 ES的线程池实现252

16.4.1 ThreadPool类结构与初始化253

16.4.2 fixed类型线程池构建过程255

16.4.3 scaling类型线程池构建过程256

16.4.4 direct类型线程池构建过程256

16.4.5 fixed_ auto_queue_ size类型线程池构建过程257

16.5 其他线程池258

16.6 思考与总结258

第17章 Shrink原理分析259

17.1 准备源索引259

17.2 缩小索引260

17.3 Shrink的工作原理260

17.3.1 创建新索引261

17.3.2 创建硬链接261

17.3.3 硬链接过程源码分析262

第18章 写入速度优化264

18.1 translog flush间隔调整264

18.2 索引刷新间隔refresh_ interval265

18.3 段合并优化265

18.4 indexing buffer266

18.5 使用bulk请求267

18.5.1 bulk线程池和队列267

18.5.2 并发执行bulk请求267

18.6 磁盘间的任务均衡268

18.7 节点间的任务均衡268

18.8 索引过程调整和优化269

18.8.1 自动生成doc ID269

18.8.2 调整字段Mappings269

18.8.3 调整_source字段269

18.8.4 禁用_all字段270

18.8.5 对Analyzed的字段禁用Norms271

18.8.6 index_ options设置271

18.9 参考配置271

18.10 思考与总结272

第19章 搜索速度的优化273

19.1 为文件系统cache预留足够的内存273

19.2 使用更快的硬件273

19.3 文档模型274

19.4 预索引数据274

19.5 字段映射276

19.6 避免使用脚本276

19.7 优化日期搜索276

19.8 为只读索引执行force-merge278

19.9 预热全局序号(global ordinals)279

19.10 execution hint279

19.11 预热文件系统cache280

19.12 转换查询表达式280

19.13 调节搜索请求中的batched reduce size281

19.14 使用近似聚合281

19.15 深度优先还是广度优先281

19.16 限制搜索请求的分片数281

19.17 利用自适应副本选择(ARS)提升ES响应速度282

第20章 磁盘使用量优化285

20.1 预备知识285

20.1.1 元数据字段285

20.1.2 索引映射参数286

20.2 优化措施287

20.2.1 禁用对你来说不需要的特性287

20.2.2 禁用doc values290

20.2.3 不要使用默认的动态字符串映射290

20.2.4 观察分片大小291

20.2.5 禁用source291

20.2.6 使用best_compression291

20.2.7 Fource Merge292

20.2.8 Shrink Index292

20.2.9 数值类型长度够用就好292

20.2.10 使用索引排序来排列类似的文档292

20.2.11 在文档中以相同的顺序放置字段292

20.3 测试数据293

第21章 综合应用实践294

21.1 集群层294

21.1.1 规划集群规模294

21.1.2 单节点还是多节点部署295

21.1.3 移除节点295

21.1.4 独立部署主节点296

21.2 节点层296

21.2.1 控制线程池的队列大小296

21.2.2 为系统cache保留一半物理内存297

21.3 系统层297

21.3.1 关闭swap297

21.3.2 配置Linux OOM Killer297

21.3.3 优化内核参数298

21.4 索引层304

21.4.1 使用全局模板304

21.4.2 索引轮转304

21.4.3 避免热索引分片不均305

21.4.4 副本数选择306

21.4.5 Force Merge306

21.4.6 Shrink Index306

21.4.7 close索引307

21.4.8 延迟分配分片307

21.4.9 小心地使用fielddata307

21.5 客户端308

21.5.1 使用REST API而非Java API308

21.5.2 注意429状态码308

21.5.3 curl的HEAD请求308

21.5.4 了解你的搜索计划309

21.5.5 为读写请求设置比较长的超时时间309

21.6 读写309

21.6.1 避免搜索操作返回巨大的结果集309

21.6.2 避免索引巨大的文档309

21.6.3 避免使用多个type310

21.6.4 避免使用all字段310

21.6.5 避免将请求发送到同一个协调节点310

21.7 控制相关度311

第22章 故障诊断316

22.1 使用Profile API定位慢查询317

22.2 使用Explain API分析未分配的分片(Unassigned Shards)320

22.2.1 诊断未分配的主分片320

22.2.2 诊断未分配的副分片324

22.2.3 诊断已分配的分片326

22.3 节点CPU使用率高328

22.4 节点内存使用率高330

22.5 Slow Logs333

22.6 分析工具334

22.6.1 I/O信息334

22.6.2 内存335

22.6.3 CPU信息337

22.6.4 网络连接和流量339

22.7 小结341

附录A 重大版本变化342

热门推荐