在AWS EBS microservice docker环境中使用Kafka,以避免丢失用户请求并处理更多并发点击

目前,我正在使用AWS EBS微服务docker环境来部署在Scala和Akka中编写的微服务。 如果微服务docker的任何人崩溃,并重新启动。 在这种情况下,我们将失去用户的请求,服务将不会返回这些情况下的任何回应。 我目前的架构可以处理高达1000个并发请求,没有任何问题。 为了避免这个问题,我打算使用Kafka存储和检索所有请求和响应。

所以我想使用Kafka来pipe理我的所有Web服务的请求和响应,并包含一个单独的服务或Web套接字来处理所有请求,并将响应再次存储到Kafka。 在这种情况下,如果我的核心进程泊坞窗崩溃或重新启动。 在任何时候都不会失去任何要求和回应。 它将再次开始阅读卡夫卡的请求并处理它。

所有的Web服务都会将请求存储在Kafka的相关主题中,并获得相关响应主题的响应并返回到API响应。 我发现以下库在Scala Web服务中使用Kafka。

https://github.com/akka/reactive-kafka/

在这里输入图像说明

请检查附加的架构图,我将使用它来有效地处理来自客户端应用程序的大量并发请求。 这是一个好方法吗? 我需要改变我的架构中的任何东西吗?

在对Kafka和微服务端口进行了更多的研究之后,我创build了这个架构。 请让我知道这个架构是否有问题。

这是卡夫卡的面包和黄油,所以我不认为你会遇到任何build筑问题。 请注意,卡夫卡存在相当大的运营开销。 Kafka:Confluent编写的权威指南( https://www.confluent.io/wp-content/uploads/confluent-kafka-definitive-guide-complete.pdf )是一个很好的入门资源。 它详细讨论了文档中未提及的许多常见操作问题。