zoukankan      html  css  js  c++  java
  • elasticsearch cluster 概述

    在源码概述中我们分析过,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的概述,限于篇幅。下一篇会对其进行详细分析。

  • 相关阅读:
    【转】CUDA5/CentOS6.4
    【转】centos 6.4 samba 安装配置
    【转】Install MATLAB 2013a on CentOS 6.4 x64 with mode silent
    【转】Getting xrdp to work on CentOS 6.4
    【VLFeat】使用matlab版本计算HOG
    Unofficial Windows Binaries for Python Extension Packages
    March 06th, 2018 Week 10th Tuesday
    March 05th, 2018 Week 10th Monday
    March 04th, 2018 Week 10th Sunday
    March 03rd, 2018 Week 9th Saturday
  • 原文地址:https://www.cnblogs.com/zziawanblog/p/6507374.html
Copyright © 2011-2022 走看看