2016-09-21 60 views
0

我在负载平衡器后面运行一组Web服务。磅周期性地请求状态端点来验证特定服务器是否在运行。该服务端点检查连接到所有外部服务(SQL,Redis的,室壁运动等)如何检查Kinesis客户端的连接状态?

要检查我最初使用kinesis.listStreams()的室壁运动连接,但由于我们增加服务器的数量,我们正在运行到5请求/秒limit的listStreams命令。

什么是最好的/最便宜的方法来验证kinesis可用?

我们正在使用Java客户端,但我想它对所有客户端都是一样的。

回答

1

AWS支持这个线程https://forums.aws.amazon.com/thread.jspa?messageID=743149&#743149

的Kinesis回答不直接支持这一点。

有两种选择:

1)执行率有限的请求和治疗率限制的例外是成功的,因为它正在由服务器返回表示连接正常工作。

这种情况下的速率限制实际上是在服务器端完成的。因此, 您将得到一个有效的ListStreams响应(HTTP代码200)或 ,您将得到一个LimitExceededException(HTTP代码400)。两个响应 意味着您已连接到Kinesis端点,因为 响应来自该服务。如果连接中断, 会看到响应代码为5xx的超时或其他错误(如 ServiceUnavailableException)。

2)不要使用室壁运动库,但使用普通的网络技术来测试连接到室壁运动休息端点

不幸的是(原因很明显),我们所有的API速率限制 我们不公开任何适用于此使用模式的API。但是,您似乎只想验证 服务与Kinesis端点之间的连接。您并不需要为此使用AWS SDK,但您可能可以使用标准Java库执行 ,这类似于我们的端点的“ping”。 Preferred Java way to ping an HTTP URL for availability 有一些选项