1, ElasticSearch对复杂分布式机制的透明
前面已经介绍了ElasticSearch是一个分布式系统,分布式是为了应付大数据量。ElasticSearch它实现分布式的时候就已经将所有复杂的操作自己都实现了。比如:
-
分片机制 ElasticSearch的分片机制给我们带来了什么好处?当我们想要存储一篇文档的时候不用去手动选择应该将文档存到那个分片上面。
-
claster discovery 集群发现机制:它可以在我们有了多个elasticSearch节点的时候自动将我们的ElasticSearch组成一个集群,不用我们去配置(前提是同一台机器上, 不同的机器需要配置IP)
-
shard负载均衡 当我们有3个节点需要分配25个shard的时候,ElasticSearch会自动将这25个分片平均分配到每个节点上面
-
shard副本 当我们新增一个索引时,不需要去维护它的备份这些,ElasticSearch会自动帮我们完成这些复杂的操作。
-
请求路由 当我们想要获取某条数据时,并不用管到底到那个分片或者节点上面去获取,ElasticSearch会自动将我们的请求路由到有该数据的地方。
-
集群扩容 当我们新启动一个节点的时候会自动加入到当前已经有了的集群里。
-
shard重分配 当我们有有没有分配的shard的时候,如果这个时候有了新的节点加入进来,那么会自动分配该shard
2, ElasticSearch的垂直扩容和水平扩容
-
垂直扩容
我们现在有4台服务器,每台服务器的容量是1T,最多能够存储4T的数据
现在的需求是要存6T数据,那么我们如果采用垂直扩容的方案,升级其中两台服务器的容量为2T,然后让它加入集群就可以实现了,这是垂直扩容的解决方案。
-
水平扩容
水平扩容就是在原有的基础上面直接加上两台新服务器,容量是1T,那么这个时候到底是使用水平扩容还是垂直扩容呢?一般情况是是采用水平扩容,因为水平扩容的价格更便宜。
3, 增加或减少节点时数据的rebalance
在ElasticSearch集群中总有一些节点会负载要重一些,因为当我们的分片分配的时候可能不能平均分配,某些节点需要担任更多的负载,比如我们有10个分片,但是有只有3台服务器,那么就会有一台会多承担负载,这个时候如果我们新增分片的时候,这个分片会自动分配到负载较轻的节点上面。
4, master节点
默认情况下ElasticSearch中的会选择出一个master节点,这个master节点主要管理集群的元数据,比如说索引的创建和删除,维护索引元数据,节点的增加和移除,维护集群的元数据(元数据是指index,type,id这三个元数据)。
5, 节点平等的分布式架构
在ElasticSearch中,所有的节点功能都是相同的也就是节点平等,都可以进行增删改查,比如现在有4个节点,user数据存储在节点1上面,我们可能直接访问到节点1上面获取数据,也可能是访问到节点2上面,然后节点2去节点1上面拿数据,然后在从节点2返回回来。