Elasticsearch 如果保证读写一致

Elasticsearch 通过多机制组合保障读写一致性,针对高并发场景优化设计,具体实现如下:

一、写入一致性控制‌

‌1.1 一致性级别参数(consistency)‌

写操作时指定分片确认数量,确保数据可靠同步:

quorum(默认):多数分片(主+副本)确认成功,公式:int( (主分片数 + 副本数) / 2 ) + 1

all:所有分片确认(强一致,性能较低)

one:仅主分片确认(弱一致)

‌ 活跃分片等待(wait_for_active_shards)‌指定写操作前需可用的最小分片数(如设为 all 需全部在线),避免写入不可用分片。

二、并发冲突解决‌

‌2.1 乐观锁与版本控制‌

文档自带 _version 字段,更新时校验客户端提交版本号:

若匹配则更新并递增版本号

若冲突则拒绝操作(返回 409 错误)

新版本推荐使用 if_seq_no(序列号)和 if_primary_term(主分片任期)替代 _version,精确控制基于最新状态的更新。

复制代码
PUT /index/_doc/1?if_seq_no=5&if_primary_term=1
{ "data": "new_value" }

三、实时性保障‌

‌3.1 刷新策略(refresh_interval)‌

默认 1 秒刷新一次内存数据到可搜索状态,可通过参数调整:

?refresh=true:写入后强制立即刷新(性能损耗大)

?refresh=wait_for:写入后等待刷新完成再响应(平衡实时性与性能)

‌ 读取偏好设置(preference)‌

查询时指定 preference=_primary,强制从主分片读取最新数据,避免副本延迟导致脏读。

四、分布式协同机制‌

‌4.1 主分片权威性‌

所有写操作仅由主分片处理,再同步至副本分片。

‌4.2全局检查点(Global Checkpoint)‌

标记所有分片已确认同步的操作序列号,加速故障恢复时的数据一致性校验。

‌4.3 主分片切换保护‌

通过递增的 Primary Term 标识主分片任期,避免脑裂场景下数据冲突。

相关推荐
微三云 - 廖会灵 (私域系统开发)1 小时前
存量社区破局:当物业困局遇上消费返物业费,重构社区商业新生态
大数据·人工智能·重构
小五传输3 小时前
消防总队信创改造实践:国产文件传输服务器解决文件传输难题
大数据·运维·安全
flyinsono3 小时前
连锁宠物医院怎么管?杏聆荟系统实现多店高效协同
大数据·宠物
Sayai3 小时前
Elasticsearch 9 安装验证实战:start-local 一键部署 + Docker 手动安装踩坑指南
大数据·elasticsearch·docker
智恒百亿3 小时前
8 卡 RTX 5090 服务器深度实测:256GB 显存能否支撑 70B 模型微调?选型参考
大数据·运维·服务器·人工智能
TDengine (老段)8 小时前
TDengine 线程模型 — 网络、调度、执行
大数据·数据库·物联网·制造·时序数据库·tdengine·涛思数据
智购科技自动贩卖机11 小时前
自动售货机嵌入式状态机设计实战:从45个事件源到层次型状态机的工程重构
大数据·人工智能·stm32·物联网·重构·硬件架构
乐迪信息11 小时前
智慧港口船舶AI算法实现在线状态监测
大数据·人工智能·深度学习·算法·计算机视觉
Raas10011 小时前
MAI Gateway(魔芋企业级AI网关)对比分析:AI网关和API网关区别?企业级能力差距一览
大数据·人工智能·数据挖掘·mai gateway·企业级产品
Neighbor_OldY12 小时前
云上安全配置审计与误配置修复实战:从安全组、OSS、RAM到数据库的全栈排查复盘
大数据·运维·安全·云计算