51zwd一起做网站广州,免费推广app,政务网站建设目的_意义,正规网站建设价格大数据面试题之Elasticsearch:每日三题 1. 为什么要使用Elasticsearch#xff1f;2.Elasticsearch的master选举流程#xff1f;3.Elasticsearch集群脑裂问题#xff1f; 1. 为什么要使用Elasticsearch#xff1f;
系统中的数据#xff0c;随着业务的发展#xff0c;时间… 大数据面试题之Elasticsearch:每日三题 1. 为什么要使用Elasticsearch2.Elasticsearch的master选举流程3.Elasticsearch集群脑裂问题 1. 为什么要使用Elasticsearch
系统中的数据随着业务的发展时间的推移将会非常多而业务中往往采用模糊查询进行数据的搜索而模糊查询会导致查询引擎放弃索引导致系统查询数据时都是全表扫描在百万级别的数据库中查询效率是非常低下的而我们使用ES做一个全文索引将经常查询的系统功能的某些字段比如说电商系统的商品表中的商品名描述价格还有id这些字段我们放入ES索引库里可以提高查询速度。
2.Elasticsearch的master选举流程
Elasticsearch的选主是ZenDiscovery模块负责的主要包含Ping(节点之间通过这个RPC来发现彼此)和Unicast(单播模块包含一个主机列表以控制哪些节点需要ping通)这两部分对所有可以成为master的节点(node.master:true)根据nodeId字典排序每次选举每个节点都把自己所知道节点排一次序然后选出第一个(第0位)节点暂且认为它是master节点。如果对某个节点的投票数达到一定的值(可以成为master节点数n/21)并且该节点自己也选举自己那这个节点就是master。否则重新选举一直到满足上述条件。master节点的职责主要包括集群节点和索引的管理不负责文档级别的管理data节点可以关闭http功能。
3.Elasticsearch集群脑裂问题
脑裂问题可能的成因
网络问题集群间的网络延迟导致一些节点访问不到master认为master挂掉了从而选举出新的master并对master上的分片和副本标红分配新的主分片节点负载主节点的角色既为master又为data访问量较大时可能会导致ES停止响应造成大面积延迟此时其他节点得不到主节点的响应认为主节点挂掉了会重新选取主节点。内存回收data节点上的ES进程占用的内存较大引发JVM的大规模内存回收造成ES进程失去响应。
脑裂问题解决方案
减少误判:discovery.zen.ping_timeout节点状态的响应时间默认为3s可以适当调大如果master在响应时间的范围内没有做出响应应答判断该节点已经挂掉了。调大参数(如6sdiscovery.zen.ping_timeout:6),可适当减少误判。选举触发discovery.zen.minimum_master_nodes:1 该参数是用于控制选举行为发生的最小集群主节点数量。当备选主节点的个数大于等于该参数的值且备选主节点中有该参数个节点认为主节点挂了进行选举。官方建议为(n/2)1,n为主节点个数(即有资格成为主节点的节点个数)角色分离即master节点与data节点分离限制角色 主节点配置为node.master:true node.data:false 从节点配置为node.master:false node.data:true