《Elasticsearch 源码解析与优化实战》勘误表 《Elasticsearch 源码解析与优化实战》勘误表 2018年11月10日 张超 Comments 15 comments 导出为 PDF 格式,请见:https://www.easyice.cn/archives/media/kanwu.pdf 相关文章: 新书上市 -《Elasticsearch 源码解析与优化实战》 (转载请注明作者和出处 easyice.cn ,请勿用于任何商业用途) (2 人打了分, 平均分: 5.00 ) Loading...
市面上没有关于es源码的书,我是冲着源码这两个字来的,个人觉得还是有点失望的,其实es的方法论网上已经挺多了,但是对于源码的梳理非常少。举个例子,第三章的篇幅非常少,才5页,我觉得完全可以在代码层面详细介绍启动过程。 回复
勘误第一章: 1.1基本概念和原理 段2,因此,结论说明es不适合海量数据,前面给出的原因是不适合集群规模规模较大。 段3,基于ES,需描述es为elasticsearch简写。 1.1.1索引结构 段1,并且可能,此处应该是可以不是一种可能 1.1.2分片 段3,主数据是什么概念 段5,ES每次”refresh”,是指缓存刷新吗? 后数段3,删除的docs,这里doc是否和前面文档概念一致。 后数段1,保证单个索引的数据量不会太大,这里是否有多大的指标。 1.1.3动态更新索引 段3,在记录元信息的文件中描述了当前Lucene索引,这里的元信息概念没有说明。 回复
感谢反馈,相关问题回复如下: 1.关于 ES 简写,在前言中有说明,后续将简称 ES 2.关于不适合海量,这句后来去掉了 3.《并且可能》是为了论述一种需求导致的可能性,主要目的不在于叙述他可以支持什么 4.改写为《主分片数据》更为合理 5. refresh 在1.1.5有解释 6.删除的docs,这里doc是否和前面文档概念一致 是的,从出版的角度来说 doc 应该改为文档 7.保证单个索引的数据量不会太大,这里是否有多大的指标 建议单个分片大小不超过50G,20-30G 较好 8.在记录元信息的文件中描述了当前Lucene索引,这里的元信息概念没有说明。 元信息是一个通用的概念,因为是第一章,此处没有说明元信息具体是哪个文件,只是说明一下原理 回复
勘误第二章: 新的版本有一些改动,需要使用java 11以上版本,调试方法参考:https://www.elastic.co/cn/blog/how-to-debug-elasticsearch-source-code-in-intellij-idea 2.2.2 远程调试和2.3 代码书签和断点组仍将试用。 回复
41页 第5章 选主流程 5.5 流程概述 “”” ZenDiscovery的选主过程如下: – 每个节点计算最小的已知节点ID,该节点为临时Master。向该节点发送领导投票。 “”” 发现其他几处对Bully算法的描述,应该是选取节点ID大值: “”” 5.3.1 Bully算法 任何时候当前Leader都是参与集群的最高ID节点。 3.1 选举主节点 第二段 对节点ID排序,取ID值最大的节点作为Master,每个节点都运行这个流程 “”” 结合第5章中排序的代码: return (x<y) ? -1 : ((x==y)?0:1) 看起来应该是选举ID小值?与Bully算法有差异还是笔误? 回复
抱歉,看到堪误表里面有对应内容,之前以为本帖是反馈帖。 另外想确认一下,每个Node会有自己认为的Master,拿到各人认为的Master = activeMaster列表,从这个activeMaster列表中投票得到的是多个node认为的临时Master,临时Master得到足够数量的join时就会认为自己是最终的Master,并且发布集群状态+确认Join请求,这样理解是正确的吗 回复
15 thoughts on “《Elasticsearch 源码解析与优化实战》勘误表”
等着你更新
第22章 关于profile相关元素的解释,我看6.6中很多元素已不包含或有改动 能否以最新版本进行一次讲解
可能会在7版本的时候更新一下,感谢关注!
市面上没有关于es源码的书,我是冲着源码这两个字来的,个人觉得还是有点失望的,其实es的方法论网上已经挺多了,但是对于源码的梳理非常少。举个例子,第三章的篇幅非常少,才5页,我觉得完全可以在代码层面详细介绍启动过程。
第三章是一个整体的流程,他会涉及很多复杂的子流程,因此无法全部展开,作为给读者的初步和全局上的认识,从宏观上大致看一下,所涉及的子流程在后面的章节都介绍了
勘误第一章:
1.1基本概念和原理
段2,因此,结论说明es不适合海量数据,前面给出的原因是不适合集群规模规模较大。
段3,基于ES,需描述es为elasticsearch简写。
1.1.1索引结构
段1,并且可能,此处应该是可以不是一种可能
1.1.2分片
段3,主数据是什么概念
段5,ES每次”refresh”,是指缓存刷新吗?
后数段3,删除的docs,这里doc是否和前面文档概念一致。
后数段1,保证单个索引的数据量不会太大,这里是否有多大的指标。
1.1.3动态更新索引
段3,在记录元信息的文件中描述了当前Lucene索引,这里的元信息概念没有说明。
感谢反馈,相关问题回复如下:
1.关于 ES 简写,在前言中有说明,后续将简称 ES
2.关于不适合海量,这句后来去掉了
3.《并且可能》是为了论述一种需求导致的可能性,主要目的不在于叙述他可以支持什么
4.改写为《主分片数据》更为合理
5. refresh 在1.1.5有解释
6.删除的docs,这里doc是否和前面文档概念一致 是的,从出版的角度来说 doc 应该改为文档
7.保证单个索引的数据量不会太大,这里是否有多大的指标 建议单个分片大小不超过50G,20-30G 较好
8.在记录元信息的文件中描述了当前Lucene索引,这里的元信息概念没有说明。 元信息是一个通用的概念,因为是第一章,此处没有说明元信息具体是哪个文件,只是说明一下原理
勘误第二章:
新的版本有一些改动,需要使用java 11以上版本,调试方法参考:https://www.elastic.co/cn/blog/how-to-debug-elasticsearch-source-code-in-intellij-idea
2.2.2 远程调试和2.3 代码书签和断点组仍将试用。
感谢回复,我最近也在调试7.x,官方的确实可以借鉴一些,不过还是有些简陋
集群启动的时候master选举完之后,选举元信息是指啥?觉得选举过程描述的太粗了
这个需要参考上下文,指集群级别,和索引级别的元信息,具体内容可以参考 cluster 那章对 clusterstate 的解释
41页 第5章 选主流程
5.5 流程概述
“””
ZenDiscovery的选主过程如下:
– 每个节点计算最小的已知节点ID,该节点为临时Master。向该节点发送领导投票。
“””
发现其他几处对Bully算法的描述,应该是选取节点ID大值:
“””
5.3.1 Bully算法
任何时候当前Leader都是参与集群的最高ID节点。
3.1 选举主节点 第二段
对节点ID排序,取ID值最大的节点作为Master,每个节点都运行这个流程
“””
结合第5章中排序的代码:
return (x<y) ? -1 : ((x==y)?0:1)
看起来应该是选举ID小值?与Bully算法有差异还是笔误?
抱歉,看到堪误表里面有对应内容,之前以为本帖是反馈帖。
另外想确认一下,每个Node会有自己认为的Master,拿到各人认为的Master = activeMaster列表,从这个activeMaster列表中投票得到的是多个node认为的临时Master,临时Master得到足够数量的join时就会认为自己是最终的Master,并且发布集群状态+确认Join请求,这样理解是正确的吗
可以这样理解
感谢,书写得很棒