在源码概述中我们分析过,elasticsearch源码从功能上可以分为分布式功能和数据功能,接下来这几篇会就分布式功能展开。这里首先会对cluster作简单概述,然后对cluster所涉及的主要功能详细分析。

elasticsearch的集群功能代码在cluster包中,通过ClusterService接口对外暴露。cluster主要包括以下功能:发现(Discovery),路由(routing),传送功能(transport),集群状态(clusterstates)等。发现功能功能主要用于节点启动后发现集群,master向所有节点发布集群状态,选举master节点并引发集群节点变得事件;routing记录了集群中各个shard的位置,为节点提供数据信息;transport是节点间交流的主要通道,elasticsearch应用了netty框架实现了功能强大的transport功能;集群状态(clusterstates)实现了一些集群状态,同时提供了一些方法,在集群每次变得时,master节点都会重新构建clusterstates,并将集群状态发送给每个节点。节点根据cluster状态来确定某些操作是否能执行。

下图是显示了clusterstate的主要Fields

clusterstate的version是clusterstate的版本每次被更新它都会增加,routingTables包含了集群中所有索引的位置信息,nodes是当前集群中的所有节点,metaData是索引的一些元数据,blocks包含了集群的阻塞状态,集群一共有三种阻塞级别:read,write和matedata;status集群的状态有四种:unknown,RECEIVED,BEING_APPLIED,APPLIED。

集群功能的接口clusterservice的继承关系如下所示:

所有实现都在InternalClusterService中,它同时继承了AutoCloseAble接口和LifecycleComponent接口。

上图为clusterservice的方法,这些方法包括集群的启动与关闭,集群状态修改和发布及节点间ping通信等,这些方法只是从从内部看集群是不存在实体的,它的功能是由一个个节点实现的。因此对于集群的操作最终还是对每个节点的操作。单有些操作只能由master来进行,有些则是所有节点都需要进行的操作。每个加入集群后就会增加clusterstatelistener及localmasterlisener,但是clusterstate的发布则只能由master节点来实现。

以上就是对clusterservice的概述,限于篇幅。下一篇会对其进行详细分析。

最新文章

  1. glibc 各版本发布时间以及内核默认glibc版本
  2. Ubuntu菜鸟入门(六)—— 有道词典安装
  3. Maven中的DependencyManagement和Dependencies
  4. [No00002B]知乎精选:如果兔子都在拼命奔跑,乌龟该如何前进
  5. SQL基础之select
  6. java中获取日期和时间的方法总结
  7. 专题:mdadm Raid & LVM
  8. 使用struts dojo ajax源码案例
  9. python - socket练习(输入系统命令)
  10. [置顶] Ajax 初步学习总结
  11. 【Linux操作系统分析】设备驱动处理流程
  12. UWP: 体验应用内购新接口——StoreContext类
  13. 别只用hive写sql -- hive的更多技能
  14. 关于<Servlet>定义
  15. 原生node路由操作以及注意事项
  16. [leetcode] 329. Longest Increasing Path in a Matrix My Submissions Question
  17. Flightphp了解一下
  18. Spring IOC学习
  19. C++ Primer Plus学习:第六章
  20. 前端代码编辑器ace 语法提示 代码提示

热门文章

  1. BZOJ 3781 莫队
  2. 洛谷P3807 【模板】卢卡斯定理exgcd
  3. 路径+DataRow+SqlPara防止sql注入
  4. Vuejs2.0构建一个彩票查询WebAPP(3)
  5. scrollWidth到底是什么???
  6. idea和Pycharm 等系列产品激活激活方法和激活码
  7. tensorflow学习之路-----简单卷积神经网路
  8. 五十个UI设计资源网站
  9. ognl.OgnlException: target is null for setProperty(null,"XXXX"...)
  10. occActiveX - ActiveX with OpenCASCADE