分布式系统的可用性与扩展性
- 高可用性
服务可用性:允许有节点停止服务
数据可用性:部分节点丢失,不会丢失数据 - 可扩展性
请求量/数据的不断增长时,可将数据分布到其他节点上
Elasticsearch分布式架构
1.优点:
可对存储水平扩容
提高系统可用性、部分节点停止服务,整个集群服务不受影响
2. 分布式架构
不同集群通过集群名来进行区分
一个集群可有一个及一个以上的节点
文档(Document)
- elasticsearch 是面向文档的,文档是所有可搜索数据的最小单位
- 文档会被序列化为JSON格式,保存在elasticsearch中
- 每个文档都有一个Unique ID,【可自己指定或通过es自动生成】
文档的元数据
元数据:用于标注文档的相关信息
- _index :文档所属的索引名
- _type:文档所属的类型名
- _id:文档唯一ID
- _source:文档的原始JSON数据
- _version:文档的版本信息 【当有大量数据并发读写时,版本信息可以解决读写冲突问题】
- _score:相关性打分
索引
- index ——索引 是文档的容器,是一类文档的结合
index体现了逻辑空间概念:每个索引都有自己的Mapping定义,用于定义包含的文档的字段名和字段类型
shard体现了物理空间的概念:索引中的数据分散在shard上 - 索引的mapping与settings
mapping 定义文档字段的类型
setting定义不同的数据分布
节点
- 节点是一个es的实例
本质是一个JAVA进程
一个机器可运行多个es进行,建议一个机器只运行一个 - 每个节点都有名字
- 每个节点启动后,会分配一个UID,保存在data目录
Master-eligible nodes
- 每个节点启动后,默认是一个master-eligible节点【可设置禁止】
- master-eligible节点可参加选主流程,成为master节点
- 第一个节点启动,会自己选举为master节点
- 每个节点都保存了集群状态,只有master节点可修改集群的状态信息
集群状态信息,维护了【所有的节点信息、所有的索引及其相关的mapping和setting的信息、分片的路由信息】
data node
可以保存数据的节点,负责保存分片数据
coordinating node
负责接收client请求,将请求分发到合适的绩点,最终将结果汇总返回client
每个节点默认起到了coordinating node的职责
分片
- 主分片,解决数据水平扩展,可将数据分布到集群内所有节点上
一个分片是一个运行的lucene的实例
主分片数索引创建时指定,不许修改,除非Reindex - 副本,解决数据高可用,分片是主分片的拷贝
副本数可动态调整
增加副本数,可在一定程度上提高服务的可用性