写入高可用是阿里云Elasticsearch团队为提升集群写入稳定性而引入的新特性。即通过异步写入高可用架构实现读写分离,以保证在高并发写入情况下集群的稳定性。同时写入高可用特性还加入了服务代理和消息队列等组件。本文介绍写入高可用特性的原理和使用方法。
背景信息
写入高可用特性具有如下功能:- 数据高可用:当集群宕机时,数据也能正常写入消息队列中,待集群恢复后回追数据来保证数据不丢失。
- 数据缓冲:当数据流量峰值到来时,数据会写入消息队列中缓冲,避免大流量将集群压垮;数据缓冲后将进行批量发送,避免小批次数据频繁写入集群,从而提升了CPU使用率和写入性能。
- 数据回放:当集群丢失部分数据时,可通过数据回放恢复丢失的数据。
- 流量控制:限制数据流量,避免在异常情况下,过大的流量导致集群服务不可用。
前提条件
创建阿里云Elasticsearch实例,具体操作请参见创建阿里云Elasticsearch实例。创建的实例需同时满足以下条件:
- 版本为6.7.0
- 数据节点规格不低于2核4 GB
使用限制
写入高可用特性仅支持2021年11月之前在华北2(北京)、华东2(上海)、华东1(杭州)和华南1(深圳)地域创建的实例,不符合要求的实例建议使用Indexing Service特性,详细信息请参见基于Indexing Service实现数据流管理。
异步写入和同步写入模式
- 异步写入模式开启写入高可用的集群,采用异步写入模式。客户端请求经过代理层分发,将查询请求直接转发给Elasticsearch,获取查询结果返回;写入请求将经过异步数据处理组件(包含消息队列),再将数据实时写入Elasticsearch,来提高Elasticsearch的写入性能及稳定性。

- 同步写入模式未开启写入高可用的集群,默认采用同步写入模式。即查询和写入请求均直接由代理服务转发给Elasticsearch。当异步写入模式发生错误时,阿里云Elasticsearch支持临时将异步模式转换为同步模式,转换后,写入请求将直接由代理服务转发给Elasticsearch,而不会存储到消息队列中,以确保数据写入快速恢复。

开启写入高可用
在左侧导航栏,单击Elasticsearch实例。
进入目标实例。
在顶部菜单栏处,选择资源组和地域。
在Elasticsearch实例中单击目标实例ID。
- 在基本信息页面的写入高可用区域,单击立即开启。
- 在写入高可用页面,单击开启,以开启写入高可用。
无主键时,自动生成文档哈希值主键:当您对数据的顺序有较高要求时,可以勾选该选项。它将根据文档内容,为无主键数据自动生成哈希值主键,内容完全相同的文档在写入Elasticsearch时将被覆盖,从而避免数据被重复写入。
说明 开启或关闭写入高可用特性,均为集群架构的平滑变更,一般不会影响阿里云Elasticsearch集群的正常访问,但是建议在业务低峰期进行。 - 单击确认。
查看异步写入日志
开启写入高可用后,您可以在写入高可用区域,单击查看异步写入日志,查看写入高可用特性在异步模式下生成的日志。
临时开启同步写入
当异步模式发生错误时,您可以在写入高可用区域,打开临时开启同步写入开关,将异步模式临时转换为同步模式,快速恢复数据写入。
当异步模式恢复正常后,您可以关闭临时开启同步写入开关,快速恢复异步写入模式。
关闭写入高可用
重要 建议在业务低峰期关闭写入高可用。因为当集群中存在数据频繁更新的场景时,可能会发生数据乱序问题(概率较小)。
- 在写入高可用区域,单击写入高可用右侧的设置。
- 在写入高可用页面,单击关闭,以关闭写入高可用。
- 单击确认。
该文章对您有帮助吗?