分布式系统的可用性与扩展性

  1. 高可用性
    服务可用性:允许有节点停止服务
    数据可用性:部分节点丢失,不会丢失数据
  2. 可扩展性
    请求量/数据的不断增长时,可将数据分布到其他节点上

Elasticsearch分布式架构
1.优点:
可对存储水平扩容
提高系统可用性、部分节点停止服务,整个集群服务不受影响
2. 分布式架构
不同集群通过集群名来进行区分
一个集群可有一个及一个以上的节点

文档(Document)

  1. elasticsearch 是面向文档的,文档是所有可搜索数据的最小单位
  2. 文档会被序列化为JSON格式,保存在elasticsearch中
  3. 每个文档都有一个Unique ID,【可自己指定或通过es自动生成】

文档的元数据
元数据:用于标注文档的相关信息
极客学习——基本概念:索引、文档、节点、集群、分片、副本

  1. _index :文档所属的索引名
  2. _type:文档所属的类型名
  3. _id:文档唯一ID
  4. _source:文档的原始JSON数据
  5. _version:文档的版本信息 【当有大量数据并发读写时,版本信息可以解决读写冲突问题】
  6. _score:相关性打分

索引

  1. index ——索引 是文档的容器,是一类文档的结合
    index体现了逻辑空间概念:每个索引都有自己的Mapping定义,用于定义包含的文档的字段名和字段类型
    shard体现了物理空间的概念:索引中的数据分散在shard上
  2. 索引的mapping与settings
    mapping 定义文档字段的类型
    setting定义不同的数据分布

节点

  1. 节点是一个es的实例
    本质是一个JAVA进程
    一个机器可运行多个es进行,建议一个机器只运行一个
  2. 每个节点都有名字
  3. 每个节点启动后,会分配一个UID,保存在data目录

Master-eligible nodes

  1. 每个节点启动后,默认是一个master-eligible节点【可设置禁止】
  2. master-eligible节点可参加选主流程,成为master节点
  3. 第一个节点启动,会自己选举为master节点
  4. 每个节点都保存了集群状态,只有master节点可修改集群的状态信息
    集群状态信息,维护了【所有的节点信息、所有的索引及其相关的mapping和setting的信息、分片的路由信息】

data node
可以保存数据的节点,负责保存分片数据

coordinating node
负责接收client请求,将请求分发到合适的绩点,最终将结果汇总返回client
每个节点默认起到了coordinating node的职责

分片

  1. 主分片,解决数据水平扩展,可将数据分布到集群内所有节点上
    一个分片是一个运行的lucene的实例
    主分片数索引创建时指定,不许修改,除非Reindex
  2. 副本,解决数据高可用,分片是主分片的拷贝
    副本数可动态调整
    增加副本数,可在一定程度上提高服务的可用性

相关文章: