摘要:
为了提高系统的吞吐量,很多环节下对于数据库的写入是多线程,甚至是多进程的。为了保证写入成功,在很多情况下需要多次重试。这就会带来一个问题,数据重复,同一条数据会被记录多次。有些情况下数据重复无伤大雅,但是很多情况系统是无法容忍数据重复的。因此这个问题需要解决。我个人觉得解决这一问题有两个方向:第一, 阅读全文
摘要:
虽然在刚开始源码概述时把代码分为分布式和数据两部分,但是它们的界限并不明显。之前这几篇可以说是这两部分的衔接。我们在快速接近数据(index)部分。本篇分析一下之前分析cluster遗留下的问题:Metadata与routing,虽然这两部分的代码在cluster中,但是却直接和index相关。 m 阅读全文
摘要:
Action这一部分主要是数据(索引)的操作和部分集群信息操作。 所有的请求通过client转发到对应的action上然后再由对应的TransportAction来执行相关请求。如果请求能在本机上执行则在本机上执行,否则使用Transport进行转发到对应的节点。action support部分是对 阅读全文
摘要:
上一篇从结构上分析了action的,本篇将以index action为例仔分析一下action的实现方式。 再概括一下action的作用:对于每种功能(如index)action都会包括两个基本的类*action(IndexAction)和Transport*action(TransportInde 阅读全文
摘要:
上一篇介绍了elasticsearch的client结构,client只是一个门面,在每个方法后面都有一个action来承接相应的功能。但是action也并非是真正的功能实现者,它只是一个代理,它的真正实现者是transportAction.本篇就对action及transportAction的实现 阅读全文
摘要:
elasticsearch通过构造一个client对外提供了一套丰富的java调用接口。总体来说client分为两类cluster信息方面的client及数据(index)方面的client。这两个大类由可以分为通用操作和admin操作两类。以下是client的继承关系(1.5版本,其它版本可能不一 阅读全文
摘要:
上一篇通过 ElectMasterService源码,分析了master选举的原理的大部分内容:master候选节点ID排序保证选举一致性及通过设置最小可见候选节点数目避免brain split。节点排序后选举只能保证局部一致性,如果发生节点接收到了错误的集群状态就会选举出错误的master,因此必 阅读全文
摘要:
master作为cluster的灵魂必须要有,还必须要唯一,否则集群就出大问题了。因此master选举在cluster分析中尤为重要。对于这个问题我将分两篇来分析。第一篇也就是本篇,首先会简单说一说mater选举的一些算法,及elasticsearch的选举原理。第二篇也就是下一篇,会结合zenDi 阅读全文
摘要:
ping是集群发现的基本手段,通过在网络上广播或者指定ping某些节点获取集群信息,从而可以找到集群的master加入集群。zenDiscovery实现了两种凭机制:广播与单播。本篇将详细分析一些这MulticastZenPing机制的实现为后面的集群发现和master选举做好铺垫。 首先看一下广播 阅读全文
摘要:
elasticsearch cluster实现了自己发现机制zen。Discovery功能主要包括以下几部分内容:master选举,master错误探测,集群中其它节点探测,单播多播ping。本篇会首先概述以下Discovery这一部分的功能,然后介绍节点检测。其它内容会在接下来介绍。 discov 阅读全文