Elastic Search 的分布式特点(和MongoDB对比)

回顾一下mongoDB的分布式:

  • replica set:若干mongod组成,只有一个master可写,自动选举 。
  • sharding: 若干mongos 作为前端router,每个shard对应一个replica set,还有一个replica set作为sharding metatadata的存储(config server)

MongoDB有两种process(或者说binary,instance),而ES集群的所有结点都是相同的Process - org.elasticsearch.bootstrap.Elasticsearch。

ES的分布式:

  1. 每个node具有相同binary。Every node is identical and handles a proportionate share of every activity in the system
  2. 动态选举master,动态的role(相同binary,但role,behavior不一定相同)
  3. 任何一个结点都可以对外提供服务 (注意Coordinator不等于master)

从内部的角度,每个结点都了解集群的membership,shard的分布这些全局信息。

ES的shard不是跟node直接绑定的,而是分两步:

  1. 第一步是决定一个全集分成几个部分进行管理、以及每个doc属于哪个逻辑shard的问题。
  2. 第二步才是每个shard和node之间的assign关系。这点和一般的一致性hash不一样,后者是一个key直接找到负责这个key的node。

你可能感兴趣的:(系统分析设计,架构,数据存储和查找)