摘要:
elasticsearch nettyTransport 的请求发送及处理过程分析 阅读全文
摘要:
nettytransport的启动过程 阅读全文
摘要:
上一篇通过clusterservice对cluster做了一个简单的概述, 应该能够给大家一个初步认识。本篇将对cluster的代码组成进行详细分析,力求能够对cluster做一个更清晰的描述。cluster作为多个节点的协同工作机制,它需要节点,节点间通信,各个节点的状态及各个节点上的数据(ind 阅读全文
摘要:
在源码概述中我们分析过,elasticsearch源码从功能上可以分为分布式功能和数据功能,接下来这几篇会就分布式功能展开。这里首先会对cluster作简单概述,然后对cluster所涉及的主要功能详细分析。 elasticsearch的集群功能代码在cluster包中,通过ClusterServi 阅读全文
摘要:
elasticsearch的启动过程是根据配置和环境组装需要的模块并启动的过程。这一过程就是通过guice注入各个功能模块并启动这些模块,从而得到一个功能完整的node。正如之前所说elasticsearch的模块化特点,它的各个功能都是独立实现,然后实现通过guice对外提供。首先简单的说一下gu 阅读全文
摘要:
从功能上说,可以分为两部分,分布式功能和数据功能。分布式功能主要是节点集群及集群附属功能如restful借口、集群性能检测功能等,数据功能主要是索引和搜索。代码上这些功能并不是完全独立,而是由相互交叉部分。当然分布式功能是为数据功能服务,数据功能肯定也难以完全独立于分布式功能。 它的源码有以下几个特 阅读全文
摘要:
从2012年开始接触elasticsearch到2013年工作中大规模应用可以说跟它有一段渊源。从14年开始断断续续的把它的源码看过一遍,总体感觉是,初看是云深不知处,渐渐的拨云见日,终于柳暗花明。看完不禁为作者的技术所折服,一个人完成如此系统,能写出如此优雅的代码真的是很不容易。这个系列是我阅读源 阅读全文
摘要:
异常是指阻止当前方法或者作用域继续执行的情况。让不能执行或者不是预期执行的情况尽早被发现。Java异常体系的使用能够降低错误代码发现和处理的复杂程度。 Java异常体系 Java所有的异常都继承自Throwable,具体分为两类,error和exception。Error是程序无法通过自身恢复的情况 阅读全文
摘要:
ConcurrentModificationException是遍历过程中修改list而抛出的错误。就像前面分析的,单线程时这种错误主要是因为使用forEach造成:遍历一个拷贝,修改原始list,造成的。简单的大家都知道,这里要说一种比较隐蔽的出错方式: 运行上面的代码还是会出错,虽然两层循环都用 阅读全文
摘要:
java中的很多容器在遍历的同时进行修改里面的元素都会ConcurrentModificationException,包括多线程情况和单线程的情况。多线程的情况就用说了,单线程出现这个异常一般是遍历(forEach)过程中的修改导致了list中的状态不一致,为了防止不一致带来不可预测的后果所以抛出异 阅读全文