写入高可用是阿里云Elasticsearch团队为提升集群写入稳定性而引入的新特性。即通过异步写入高可用架构实现读写分离,以保证在高并发写入情况下集群的稳定性。同时写入高可用特性还加入了服务代理和消息队列等组件。本文为您介绍写入高可用特性的原理和使用方法。

前提条件

已创建阿里云Elasticsearch实例,且实例满足写入高可用特性的使用条件:版本为6.7.0、数据节点规格不低于2核4GB,具体操作步骤请参见创建阿里云Elasticsearch实例
说明 目前写入高可用特性仅支持华北2(北京)区域,后续会逐渐支持华东1(杭州)、华东2(上海)、华南1(深圳)、华北3(张家口)区域,敬请期待。

背景信息

写入高可用特性具有如下功能:
  • 数据高可用:当集群宕机时,数据也能正常写入消息队列中,待集群恢复后回追数据来保证数据不丢失。
  • 数据缓冲:当数据流量峰值到来时,数据会写入消息队列中缓冲,避免大流量将集群压垮;数据缓冲后将进行批量发送,避免小批次数据频繁写入集群,从而提升了CPU使用率和写入性能。
  • 数据回放:当集群丢失部分数据时,可通过数据回放恢复丢失的数据。
  • 流量控制:限制数据流量,避免在异常情况下,过大的流量导致集群服务不可用。

异步写入和同步写入模式

  • 异步写入模式
    开启写入高可用的集群,采用异步写入模式。客户端请求经过代理层分发,将查询请求直接转发给Elasticsearch,获取查询结果返回;写入请求将经过异步数据处理组件(包含消息队列),再将数据实时写入Elasticsearch,来提高Elasticsearch的写入性能及稳定性。写入高可用异步模式
  • 同步写入模式
    未开启写入高可用的集群,默认采用同步写入模式。即查询和写入请求均直接由代理服务转发给Elasticsearch。当异步写入模式发生错误时,阿里云Elasticsearch支持临时将异步模式转换为同步模式,转换后,写入请求将直接由代理服务转发给Elasticsearch,而不会存储到消息队列中,以确保数据写入快速恢复。写入高可用同步模式

开启写入高可用

  1. 登录阿里云Elasticsearch控制台
  2. 在顶部菜单栏处,选择地域。
  3. 在左侧导航栏,单击Elasticsearch实例,再在实例列表中单击目标实例ID。
  4. 基本信息页面的写入高可用区域,单击立即开启
  5. 写入高可用页面,开启写入高可用后,单击确认
    开启写入高可用

    无主键时,自动生成文档哈希值主键:当您对数据的顺序有较高要求时,可以勾选该选项。它将根据文档内容,为无主键数据自动生成哈希值主键,内容完全相同的文档在写入Elasticsearch时将被覆盖,从而避免数据被重复写入。

    说明 开启或关闭写入高可用特性,均为集群架构的平滑变更,一般不会影响阿里云Elasticsearch集群的正常访问,但是建议在业务低峰期进行操作。

查看异步写入日志

开启写入高可用后,您可以在写入高可用区域,单击查看异步写入日志,查看写入高可用特性在异步模式下生成的日志。

查看异步写入日志

临时开启同步写入

当异步模式发生错误时,您可以在写入高可用区域,打开临时开启同步写入开关,将异步模式临时转换为同步模式,快速恢复数据写入。临时开启同步写入

当异步模式恢复正常后,您可以关闭临时开启同步写入开关,快速恢复异步写入模式。

关闭写入高可用

注意 建议您在业务低峰期关闭写入高可用。因为当集群中存在数据频繁更新的场景时,可能会发生数据乱序问题(概率较小)。
  1. 写入高可用区域,单击写入高可用右侧的设置
  2. 写入高可用页面,关闭写入高可用后,单击确认
    关闭写入高可用