ElasticSearch分布式实现原理

我们去拉货车时,不会想着去培养更健壮的马,而是应该考虑多找几匹马来拉车。所有分布式系统也是这个原理,垂直扩展毕竟潜力有限,我们应该多考虑如何水平扩展。

 

ES如何实现海量存储

ES是通过分片来实现海量存储的,ES的基本存储单位是索引,而索引可以分片存储。如下图

 比如一个商品索引,可以分成三个shard分表存储在三台电脑上,那就可以使用三台电脑的硬盘和内存,存储空间大大提升,搜索性能也能提升。

ES如何实现高可用

说到高可用,第一个应该想到的就是备份,ES确实也是这么实现的,shard分为primary shard和replica shard,primary shard就是主分片,replica shard就是副分片,主分片和副分片不在一台服务器上,这样就算挂了一台剩余的也能继续提供服务。

 首先es集群会选举一台服务器成为master node,而客户端的数据只能写入primary shard,由master node负责同步数据到replica shard,而查询操作primary shard和replica shard都能提供,类似于MySql的读写分离,这样可以大大提升查询速度。

当某一台服务器挂了比如PC1挂了,PC3上的replica shard1就会变成primary shard1,这样分片1的数据就能写入PC3了,由于有备份数据也不会丢失,当PC1恢复后PC1上的primary shard1就会变成replica shard1.

那如果master node挂了呢?那ES集群会重新选举出一个master node,并重复以上恢复数据的步骤。

spring-data-es实现方式

用spring-data-es实现es的分片和备份很简单,一个注解就搞定了,shards就是分片数,replicas就是备份数,需要注意的是分片和备份在索引创建完成后是不能修改的

@Document(indexName = "goods", type = "goods", shards = 3, replicas = 1)

查看索引

http://localhost:9200/_cat/indices?v&pretty

可以看到分片和replica创建成功了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值