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

elasticsearch cluster 概述的更多相关文章

  1. elasticsearch cluster 详解

    上一篇通过clusterservice对cluster做了一个简单的概述, 应该能够给大家一个初步认识.本篇将对cluster的代码组成进行详细分析,力求能够对cluster做一个更清晰的描述.clu ...

  2. SearchServer Elasticsearch Cluster / kibana

    S 使用nginx代理kibana并设置身份验证 https://blog.csdn.net/wyl9527/article/details/72598112 使用nginx代理kibana并设置身份 ...

  3. Elasticsearch cluster health: yellow unassigned shards

    查看ES各个分片的状态 $ curl -XGET http://127.0.0.1:9200/_cluster/health?pretty { "cluster_name" : & ...

  4. ProxySQL Cluster 概述

    文章转载自:https://blog.csdn.net/n88Lpo/article/details/79608639 前言 在ProxySQL 1.4.2 之前,ProxySQL 单点的解决方法有配 ...

  5. cluster discovery概述及FaultDetection分析

    elasticsearch cluster实现了自己发现机制zen.Discovery功能主要包括以下几部分内容:master选举,master错误探测,集群中其它节点探测,单播多播ping.本篇会首 ...

  6. MySQL Cluster配置概述

    一.     MySQL Cluster概述 MySQL Cluster 是一种技术,该技术允许在无共享的系统中部署“内存中”数据库的 Cluster .通过无共享体系结构,系统能够使用廉价的硬件,而 ...

  7. 最完整的Elasticsearch 基础教程

    翻译:潘飞(tinylambda@gmail.com) 基础概念 Elasticsearch有几个核心概念.从一开始理解这些概念会对整个学习过程有莫大的帮助. 接近实时(NRT)        Ela ...

  8. ElasticSearch实战-入门

    http://www.cnblogs.com/smartloli/ 1.概述 今天接着<ElasticSearch实战-日志监控平台>一文来给大家分享后续的学习,在<ElasticS ...

  9. ElasticSearch实战

    ElasticSearch实战-入门 1.概述 今天接着<ElasticSearch实战-日志监控平台>一文来给大家分享后续的学习,在<ElasticSearch实战-日志监控平台& ...

随机推荐

  1. 【实用篇】获取Android通讯录中联系人信息

    第一步,在Main.xml布局文件中声明一个Button控件,布局文件代码如下: <LinearLayout xmlns:android="http://schemas.android ...

  2. js实现导出数据到excel

    来自:http://www.imooc.com/article/13374 //html代码<!DOCTYPE HTML> <html> <head> <ti ...

  3. Linux 桌面的 Dock 类程序

    1.Cairo-Dock是一个Dock类软件,它支持OpenGL.提供动画及视觉效果的插件.新的Applet.重写配置面板.新增主题等功能. 2.Docky是从GNOME Do项目剥离出来的一个Doc ...

  4. selenium无法定位元素问题

    在用自动化测试工具selenium完成下载任务时,经常会遇到定位不到元素的情况,总结如下: 1.frame/iframe原因定位不到元素: 这个是最常见的原因,首先要理解下frame的实质,frame ...

  5. Windows学习总结(6)——MindManager新手入门教程

    MindManager新手入门教程 MindManager是一款创造.管理和交流思想的思维导图软件,其直观清晰的可视化界面和强大的功能可以快速捕捉.组织和共享思维.想法.资源和项目进程等等.MindM ...

  6. 三种连接 & DOS & SYNFLOOD & 防御

    accept的时候,三次连接是建立的. 有一种DOS攻击是SYN FLOOD,就是大量的SYN到达,但是没有ACK,无法建立起连接. 防御的方法,有多种,如下: 比如,禁止部分源地址: 到达一定阈值之 ...

  7. PHP开发常规安全问题总结

    文章来源:PHP开发学习门户 地址:http://www.phpthinking.com/archives/575 php给了开发人员极大的灵活性,可是这也为安全问题带来了潜在的隐患,最近须要总结一下 ...

  8. js---05 自定义属性

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...

  9. sql创建外键

    建立外键关系:先建主表再见从表:主表:create table zhu(code int parimary key,name varchar(20)) ;从表:create table cong(co ...

  10. array01.js

    //1.获取指定范围内的随机数 function getRadomNum(min,max){ return Math.floor(Math.random() * (max - min + 1)) + ...