面试题答案
一键面试动态设置和静态设置的区别
- 动态设置:
- 可以在集群运行时进行修改,无需重启Elasticsearch集群。这意味着对集群的配置调整能够即时生效,不会造成集群服务的中断。例如,修改索引的副本数、刷新间隔等设置,都可以通过动态设置完成。这些设置通常与集群的运行时状态、性能调整相关,能够让管理员根据实时的业务需求快速响应。
- 静态设置:
- 不能在集群运行时直接修改,若要更改静态设置,必须重启整个Elasticsearch集群。静态设置一般涉及到基础的、对集群架构和运行机制有重大影响的配置,如
cluster.name
(集群名称),node.name
(节点名称)等。一旦集群启动并基于这些静态设置进行了初始化,随意修改可能导致集群节点无法正常通信或识别彼此,进而破坏集群的一致性和稳定性。
- 不能在集群运行时直接修改,若要更改静态设置,必须重启整个Elasticsearch集群。静态设置一般涉及到基础的、对集群架构和运行机制有重大影响的配置,如
实际场景中的使用情况
- 动态设置的使用场景:
- 性能优化:当业务流量发生变化时,比如在电商促销活动期间,对搜索性能要求更高,可以动态增加索引的副本数来提高查询的并发处理能力;或者根据业务的访问低谷期,动态增大索引的刷新间隔,减少I/O开销,提高写入性能。
- 资源调整:若发现某个节点负载过高,可以动态调整该节点分配的分片数量,将部分分片迁移到其他负载较低的节点,实现集群资源的均衡利用。
- 静态设置的使用场景:
- 集群初始化:在创建Elasticsearch集群时,需要设置
cluster.name
来标识集群的名称,这是整个集群的标识,所有节点通过这个名称来识别并加入同一个集群。设置node.name
为每个节点赋予唯一名称,用于在集群中标识和定位该节点。这些设置在集群创建后不应轻易更改,除非是进行大规模的集群重构等特殊情况。 - 集群架构调整:例如,要对集群进行节点角色的重大调整,如从数据节点转换为协调节点,可能涉及到修改一些静态设置,并且需要重启集群来使这些更改生效。但这种操作需要谨慎规划,因为重启集群会导致服务中断。
- 集群初始化:在创建Elasticsearch集群时,需要设置