我在负载均衡器后面运行一系列Web服务。 lb周期性地请求状态端点以验证特定服务器是否可操作。此服务端点检查与所有外部服务(sql,redis,kinesis等)的连接性
要检查我最初使用的kinesis连接kinesis.listStreams()
,但我们正在将运行的服务器数量增加到listStreams命令的5 req / sec limit。
验证运动可用的最佳/最便宜的方法是什么?
我们正在使用Java客户端,但我想它对所有客户端都是一样的。
答案 0 :(得分:1)
AWS支持在此帖子https://forums.aws.amazon.com/thread.jspa?messageID=743149򵛭
中得到了解答Kinesis并不直接支持这一点。
有两种选择:
1)执行速率限制请求并将速率限制异常视为成功,因为服务器返回指示连接正在运行。
这种情况下的速率限制实际上是在服务器端完成的。所以 您将获得有效的ListStreams响应(HTTP代码200),或 您将获得LimitExceededException(HTTP代码400)。两个回应 意味着您已连接到Kinesis端点,因为 响应来自该服务。如果连接断开,你 会看到响应代码5xx的超时或其他错误(如 的ServiceUnavailableException)。
2)不要使用kinesis库,但使用常规网络技术来测试与kinesis rest端点的连接
不幸的是(并且由于显而易见的原因),我们所有的API都是速率限制的 并且我们不会公开任何适合此使用模式的API。然而, 看起来你只想验证你的连接 服务和Kinesis端点。您并不需要使用AWS SDK为此,您可以使用标准Java库来执行 类似于" ping"到我们的终点。 Preferred Java way to ping an HTTP URL for availability 有一些选择