| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> 大数据 -> ElasticSearch分布式实现原理 -> 正文阅读 |
|
|
[大数据]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就是备份数,需要注意的是分片和备份在索引创建完成后是不能修改的
查看索引 http://localhost:9200/_cat/indices?v&pretty 可以看到分片和replica创建成功了
? |
|
|
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年12日历 | -2025/12/3 10:33:33- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |