如何在Consul KV商店

时间:2018-03-26 22:34:55

标签: distributed consul

我基本上使用Consul和健康检查服务来存储来自某些远程主机的健康检查错误消息(key:hostname => value:message)。但是,如果键值对在超过24小时内未更新,我希望将其删除,例如,如果远程主机完全从健康检查轮换中删除。

根据Consul API documentation,您可以在session创建时设置TTL。然后,当您Create/Update a key时,您可以使用session参数将此acquire绑定到特定键,并且当会话到期时,它也会删除该键。需要注意的是acquire也会锁定密钥,这对我来说意味着其他人无法设置该值,直到稍后使用release参数进行更新,但这会删除会话 - >密钥关联(最终删除密钥上的TTL。)

目前尚不清楚如何在Consul键值存储中为键实现简单的TTL。看起来像这样的东西可以工作,但我不确定如何保持与密钥关联的会话:

  1. 使用TTL=86400s创建会话并获取sessionID
  2. 使用acquire=sessionID
  3. 创建键值对
  4. ??? release=sessionID ???
  5. 每次更新键值对时,请刷新会话TTL
  6. 对每个插入的新键值对重复上述步骤。

    有人可以详细说明如何使用会话从Consul中删除过期的键值对吗?

1 个答案:

答案 0 :(得分:0)

在创建会话时,您可以将行为指定为<?php add_action( 'wp_enqueue_scripts', 'thene_styles', PHP_INT_MAX); function theme_styles() { wp_enqueue_style( 'child-style', get_stylesheet_directory_uri() . '/style.css', array('parent-style') ); } ?> 类型,并将TTL设置为24小时(选中https://www.consul.io/api/session.html#ttl)。因此,如果未在指定的期限内恢复会话,则密钥将自动删除(https://www.consul.io/docs/internals/sessions.html)。