八、简述Elasticsearch的分布式架构
1、Elasticsearch对复杂分布式机制的透明隐藏特性
(1)Elasticsearch是一套分布式的系统,分布式是为了对应大数据量,ES隐藏了复杂的分布式机制,也符合了开箱即用的特点。
(2)分片机制(我们之前随随便便就将一些document插入到es集群中了,我们并不知道数据是怎么进行分片的,数据到哪个shard中了,这是ES内部帮我们做好的,他隐藏了复杂的实现,我们直接用就好了)
(3)cluster discovery (集群发现机制,我们之前在做那个集群status从yellow到green的实验里,直接启动了第二个es进程,那个进程作为一个node自动就发现了集群,并加入了进去,还接受了部分数据,replica shard)
(4)shard负载均衡(举例:假设现在有3个节点,总共有25个shard要分配到3个节点上去,ES会自动进行均匀分配,以保证每个节点的均衡的读写负载请求)
上述4点如下图:
Paste_Image.png2、Elasticsearch的垂直扩容与水平扩容
(1)垂直扩容:采购更强大的服务器,成本非常高昂,而且会有瓶颈,假设世界上最强大的服务器容量就是10T,但是当你的总数据量达到5000T的时候,你要采购多少台最强大的服务器?(考虑资金.....)
(2)水平扩容:业界经常采用的方案,采购越来越多的普通服务器,性能比较一般,但是很多普通服务器组织在一起,就能构成强大的计算和存储能力。(推荐。划算,还不会瓶颈)
扩容方案
假设:6台服务器,每台容纳1T数据,马上数据量要增长到8T,这时候两个方案:
(1)垂直扩容:重新购置两台服务器,每台服务器的容量是2T,替换到老的两台服务器,那么现在是6台服务器的总容量就是4 * 1T + 2 * 2T = 8T
(2)水平扩容:重新购置两台服务器,每台服务器的容量是1T,直接加入到集群中去,那么现在是8台服务器,总容量就是8 * 1T = 8T。(业界几乎都采取这种方式。)
3、增加或减少节点时的数据rebalance,保持负载均衡
什么是数据的rebalance?
如下两张图说明一切:
4、master节点
(1)管理ES集群中的元数据:比如说索引的创建和索引的删除,维护索引元数据;节点的增加和移除,维护集群的元数据。
(2)默认情况下,会自动选择出一台节点作为master节点。
注意:master节点不承载所有的请求,所以不会是一个单点瓶颈。(这句话的意思是说并不是因为他是master节点,所以所有请求都由他来转发,而是每个节点都有可能被请求到。)
5、节点对等的分布式架构
(1)节点对等,每个节点都能接收所有请求
(2)自动请求路由
(3)相应收集
如下图
若有兴趣,欢迎来加入群,【Java初学者学习交流群】:458430385,此群有Java开发人员、UI设计人员和前端工程师。有问必答,共同探讨学习,一起进步!
欢迎关注我的微信公众号【Java码农社区】,会定时推送各种干货:
qrcode_for_gh_577b64e73701_258.jpg