以一个30个节点的集群为例,介绍一下ES的核心概念
ES分布式的好处
ES支持集群模式,是一个分布式系统,es集群是由多个实例组成的,一个节点叫做Node
其好处有两个:
①、方便扩展,增大系统容量:如内存,磁盘,使得es集群可以支持pb级的数据,高并发的优势
②、提高系统可用性:即使部分节点停止服务,整个集群依然可以正常服务,高可用的优势
ES的特点之一:分布式的文档存储,多节点,多分片
1、不是使用数据库的行存储,类似JSON文档的复杂数据结构,可以说成是nosql数据库,文档存储后,将在1s钟内默认刷新频率为1s几乎实时地对其进行索引和完成搜索,存进去到搜索1s。
2、Kibana是一个针对ES的开源分析以及可视化平台,用来搜索,查看交互存储在es索引中的数据,使用Kibana,可以通过各种图表进行高级数据的分析与展示
ES和mysql做对比:
1、mysql当中的数据库实例对应es中的索引,es索引中的type代表着数据库Mysql的表,只不过es把一个索引固定一个type,
2、在Mysql当中每个表都有表结构对应着es的映射mapping。在mysql当中每行数据,对应着es的每个文档documents,输入的时候默认是json文档对比mysql中的行。
3、在mysql当中有很多个列对应着es当中是很多个字段field,每个document有很多个字段,只不过底层的 数据结构存储的完全不一样。
问题:doc->index(type) 类同于row ->table吗
答案是:doc -》index之间,还有一个分片的概念,大的索引以很小的单位维护起来的。
比如:维护着1T的index,这个index对应mysql是表,放在一个节点的话:1个T的话硬盘是够的,但是内存一点不够的,放在一个节点是不现实的
大概是1个亿的文档。节点数是30个,平均的情况下是30个
index在每个节点就是一个shard,每个shard大概30G左右。
假设一个分片只有一份,会弄几个副本,大概一个副本,副本在不同的节点上。保证高可用,第一个副本可能在第二个节点来 保证高可用。故障转移的效果
副本的重要性:
①、在分片/节点失败的情况下,副本提供了高可用性,复制分片不与原/主要分片置于同一节点是非常重要的。
②、提升搜索的吞吐量,因为搜索可以在所有的副本上并行运行,副本可以扩展你的搜索量/吞吐量,写的时候往正本写