es中的Gateway模块
1、简介
负责集群元信息的存储和集群重启时的恢复
2、元数据
元数据信息包含以下几种
- 集群元数据
- 索引层面元数据
- 分片层面元数据
分别对应es中的数据结构
2.1 Metadata
其对应的文件名在datapaths/_state/目录下,对应文件名为global-{generation}.st
包含的信息有
名称 | 说明 |
version | 当前版本号,每次更新加1 |
clusterUUID | 集群的唯一id |
clusterUUIDCommitted | |
coordinationMetadata | |
persistentSettings | 持久化的集群设置 |
indices | 所有Index的Meta |
hashesOfConsistentSettings | |
templates | 所有模版的Meta |
customs | 自定义配置 |
2.2 IndexMetadata
索引层元数据,其对应的文件名在datapaths/_state/目录下,对应文件名为state-{generation}.st
包含的信息有
名称 | 说明 |
settings | numbersOfShards,numbersOfRepilicas等配置 |
mappings | Index的mapping |
aliases | 别名 |
in_sync_allocations | 处于InSync状态的AllocationId |
rollover_info | |
primary_terms | primaryTerm在每次Shard切换Primary时加1,用于保序 |
timestamp_range | |
state | Index的状态, 是个enum,值是OPEN或CLOSE |
version | 当前版本号,每次更新加1 |
mapping_version | |
settings_version | |
aliases_version | |
routing_num_shards | 用于routing的shard数, 只能是该Index的numberOfShards的倍数,用于split |
system |
2.3 ShardStateMetadata
包含的信息有
名称 | 说明 |
primary | 是否是主分片 |
index_uuid | 索引的uuid |
allocation_id | 分配id |
3、元数据的持久化
在处理发布请求时,CoordinationState#handlePublishRequest会调用PersistedState#setLastAcceptedState,通过调用GatewayMetaState的内部类LucenePersistedState#setLastAcceptedState,最终是PersistedClusterStateService.Writer来更新数据。
4、元数据的恢复
4.1 影响恢复的参数
参数 | 说明 |
gateway.expected_data_nodes | 预期的节点数。加入集群的节点数达到这个数量后立即开始gateway的恢复,默认为-1 |
gateway.recover_after_time | 如果没有达到预期的节点数,则恢复过程将等待配置的时间,再尝试恢复。默认是0 |
gateway.recover_after_data_nodes | 只要配置数量的节点加入集群就可以开始恢复 |
4.2 恢复方式
当发现节点是Coordinator时,直接使用分片层元数据恢复。
发现节点不是Coordinator时,gateway模块负责集群层和索引层的元数据恢复,分片层的元数据恢复由allocation模块实现,但是由gateway模块在执行完上述两个层次恢复工作后触发。
参考资料:
作者:kgduu
来源链接:https://blog.csdn.net/wuli2496/article/details/124069979
版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。
2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。