ElasticSearch 初识

ElasticSearch 初识

ElasticSearch 通过对Lucene的封装,对外提供一个简单可用的搜索框架,具备天然的分布式,对外提供restful API 接口,可以方便的使用。由于ElasticSearch实现了分布式,可以很容易的进行横向扩展,支持数据量增长,良好的伸缩性。
核心概念:

  • 集群:Cluster 一个或多个节点组合在一起组成集群,只要节点配置的集群名一致,就可以自然的组成一个集群。
  • Node:节点,节点的功能多样,会划分多种节点,比如主节点,数据节点,协调节点。每种节点功能不同,节点存储分片,可以存储一个多个分片,可以是主分片也可以是副分片。
  • Shards: 分片。分片用来存储索引,一个分片就是一个独立的Lucene索引文件,数据量过大,就会使用多个分片,以便提升性能。索引创建的时候就要指定主分片和副分片,一旦指定不可更改,因为多个分片的情况,是通过路由来找到分片里的数据,分片一旦更改就会造成原来的数据找不到的情况。
  • Replicas:副本,副本就是主分片的副分片。主分片和副分片都可以对外提供服务。副分片的数量增加可以有效提升搜索的性能。写入时向主分片写入,写完后由主分片向副分片同步。副分片过多,影响写入性能。当主分片挂了,会在副分片里选举一个主分片,继续服务。
  • Index:索引,索引相当于一个数据库,在集群里是唯一标识。索引有多个分片里进行存储。
  • Type:类别,相当于表,一个索引里类别不重复,是索引里的唯一标识。
  • Document:文档,相当于数据库表里的一行数据,文档的字段会被索引。每一个文档用_id唯一标识。
  • Settings:设置,用来设置索引里的属性,比如主分片数,副分片数等。
  • Mapping:类似于数据库表的结构,用来指定文档里每个字段(Field)设置,比如分词器,是否被索引,是否分词,类型等。如果mapping被创建并有了数据则不能更改。
  • Analyzer:分析器,用于定义如何分词。一般由0或多个字符过滤器Filter,一个多个分词器- tokenizer,0个多个词元过滤器Filter组成。
    ElasticSearch 节点:
  • 主节点:Master 主节点负责节点分配,健康检查,请求转发,创建索引,删除索引等。一个节点能被选举为主节点,需要设置该节点可被选举。node.master =true设置节点为候选主节点,如果主节点挂了,就会在候选主节点里选举一个作为主节点。参与选举的也只有候选的节点。
  • 数据节点:数据节点用来存储数据,数据相关操作,比如索引创建,删除,更新,聚合等,通过node.data=true 设置。
  • 协调节点:不是真实的节点,任何一个节点都可以当协调节点,这是一个角色。比如用户发来查询请求,将查询分散到其他节点,聚合所有节点返回的数据,然后返回给客户。
    集群状态:Green Yellow Red
  • Green:集群中所有节点都正常。
  • Yellow:集群所有主节点都正常,至少一个副节点不正常。
  • Red:集群里至少一个主节点不正常。及它的全部副本分片都不可正常工作

3C 脑裂

共识性Consensus : 分布式系统的特性就是所有节点对节点状态数据达成一致性。zendiscovery是Elasticsearch的一个核心的基础组件,zen discovery不仅能够实现共识系统的选择工作,还能够很方便地监控集群的读写状态是否健康。zendiscovery是ElasticSearch里共识性实现组件,相当于一个注册中心,zookeeper.zendiscovery提供单播和多播来发现其他节点。

  • 并发(Concurrency): 并发系统
    分布式系统的并发是一个常见行问题,在elasticSearch写入时会先写入主节点,写完后会并发写入主节点的副节点。并发不能保证数据的顺序,es采用乐观并发控制。
    乐观并发控制有两种:
  • 乐观并发控制:就是说默认没有冲突进行修改,在修改完成提交时检查数据是否有变化,没有则提交。有则进行重试,类似于一种自旋锁。
  • 多版本乐观并发控制:即采用版本进行控制,将版本与最新修改时间戳绑定,每次修改只能修改的版本大于上一版本才会成功。此时也不会阻塞数据读操作,读只会读取写事物前的数据。
  • 一致性
    保证集群数据的一致性,避免出现数据不一致性情况出现。提出一种写入条件,当达到写入条件再进行写入。
    三种条件:
  • One:只要主分片可用即可。
  • All:主分片和其副分片全部可用。
  • Quorum:大部分可用即可。公式:int((primary + number_of_replicas) / 2 ) + 1。

脑裂

脑裂出现的情况是出现了两个主节点(Master),当一个节点ping不通主节点,但主节点可用时,这会导致节点重新选举出一个主节点,就出现两个主节点情况。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值