2019-06-12 ES思考和总结

2019-06-12  本文已影响0人  LoveAnny

如何理解ES是分布式、可伸缩、高可用

  1. ES 是基于Lucene实现的分布式搜索引擎,其目的是扩展单机性能问题
  2. ES 可以横向或者纵向扩展,一般都选择横向扩展,这样性价比更好,当集群需要扩展时只要添加相应机器,ES会自动进行集群感知
  3. ES 是节点对等分布式架构,当前Master 节点出现宕机,集群中任何一个节点都可以充当Master节点,保证服务可用

面向文档和面向对象有什么区别

ES 是面向文档搜索引擎,文档的重要特性就是易于扩展的维护,面向文档一般是Json格式,而面向对象的特点是耦合性低,各对象之间的耦合性尽可能低,对象内部内聚性尽可能高,所以面向对象在表示引用形的对象时需要关联,表示形式比较复杂,而文档就相对简洁,比如:

# 面向对象
public class Employee(){
    private String dep;
    private String level;
    private PersonInfo info;
}

public class Person(){
    private String name;
    private String age;
    private String gender;
}

# 面向文档
{
    dep:"",
    "level":"",
    "info":{
        "name":"",
        "age":"",
        "gender":""
    }
}

ES shard和replica机制

  1. 一个index 可以包括多个shard
  2. 每一个shard就是一个lucene实例,可以提供请求和处理数据能力
  3. 节点发生变化,ES会自动在集群中平衡shard
  4. 每个document 只能存在于一个primary shard中
  5. replica shard 是 primary shard 的副本,负责对primary shard 容错,读取负载
  6. primary shard 在index 创建时就一定确定,不可修改,但是replica shard的数量可以动态调整
  7. primary shard 和其对应的 replica shard 不可以再同一台机器中,否则就失去了replica 意义。
上一篇 下一篇

猜你喜欢

热点阅读