如何在 AWS 中的多个微服务之间共享编年史队列
How to share chronicle queue between multiple micro services in AWS
我们有一个系统使用 Kafka 作为事件总线的微服务方法。
我们遇到了一些延迟问题,并尝试用一堆 Chronicle 队列替换 Kafka 主题。当 运行在开发人员机器上本地运行时,结果令人惊叹,我们最昂贵的工作流程之一的处理速度快了 10 到 30 倍。
鉴于最初的良好结果,我们决定进一步进行实验,并在我们的系统 运行s 所在的 AWS 中部署我们的概念证明。我们的微服务 运行 在 docker 个容器中,跨越一堆 EC2。
我们创建了一个 EFS 卷并将其安装在每个 docker 容器上。我们验证了每个微服务都可以访问该卷,并且授予了正确的读写权限。
现在的问题:
MS1 收到一条消息(API 调用)进行一些处理并在编年史队列中发出一个事件。我们可以在 EFS 文件系统上看到编年史队列文件被触及。 MS2 应该使用该事件并做一些进一步的处理。这没有发生。最终重新启动 MS2 将触发消息处理,但情况并非总是如此。很容易想象那种失望。
问题:
我们的 EFS 方法错了吗?如果是,应该怎么走?
提前感谢您的意见。
Chronicle Queue 不能在像 EFS 这样的网络文件系统上工作,正如本文 previous question and also documented here: https://github.com/OpenHFT/Chronicle-Queue/#usage
中所讨论的
要在主机之间通信,您需要支持 TCP/IP 复制的 Chronicle Queue Enterprise。
我们有一个系统使用 Kafka 作为事件总线的微服务方法。 我们遇到了一些延迟问题,并尝试用一堆 Chronicle 队列替换 Kafka 主题。当 运行在开发人员机器上本地运行时,结果令人惊叹,我们最昂贵的工作流程之一的处理速度快了 10 到 30 倍。
鉴于最初的良好结果,我们决定进一步进行实验,并在我们的系统 运行s 所在的 AWS 中部署我们的概念证明。我们的微服务 运行 在 docker 个容器中,跨越一堆 EC2。
我们创建了一个 EFS 卷并将其安装在每个 docker 容器上。我们验证了每个微服务都可以访问该卷,并且授予了正确的读写权限。
现在的问题: MS1 收到一条消息(API 调用)进行一些处理并在编年史队列中发出一个事件。我们可以在 EFS 文件系统上看到编年史队列文件被触及。 MS2 应该使用该事件并做一些进一步的处理。这没有发生。最终重新启动 MS2 将触发消息处理,但情况并非总是如此。很容易想象那种失望。
问题: 我们的 EFS 方法错了吗?如果是,应该怎么走?
提前感谢您的意见。
Chronicle Queue 不能在像 EFS 这样的网络文件系统上工作,正如本文 previous question and also documented here: https://github.com/OpenHFT/Chronicle-Queue/#usage
中所讨论的要在主机之间通信,您需要支持 TCP/IP 复制的 Chronicle Queue Enterprise。