运行 与 Flask 应用程序交互的 Kafka 消费者
Running Kafka Consumers that interact with a Flask application
希望就一般架构问题获得一些帮助。
我有一个 Flask Web 应用程序(我们称它为 people-app),运行 在 Docker 容器中。它已部署到 Amazon ECS,并且看起来 运行ning 正常。 people-app 公开了一个 HTTP API,授权用户可以在其中使用令牌进行交互,以及一些传统的网络应用程序页面。
我想做的是实现一个 Kafka 消费者组,它意味着从与 Flask 应用程序相关的主题(即 people-topic)中消费,然后消费,与 Flask 应用程序交互(可能创建模型实例并将它们保存到数据库,类似于 HTTP API 处理 HTTP 请求的方式)。我真的无法在任何地方找到任何实施示例,尤其是在 python 中,但我会说我正在尝试实现类似于 Chris Richardson 的 eventuate framework 的东西。
我想我的问题可以归结为;我将如何实施这样的事情?如果 Kafka 消费者 运行 在一个连续的循环中,我假设他们应该 运行 在他们自己的独立进程中。这似乎会导致 Docker 出现问题,因为 运行 在容器中设置多个进程有效地消除了容器与应用程序有效通信的能力。
我应该运行使用单独的容器吗?如果是这样,那么这两个容器将如何通信?我错过了什么吗?我完全走错路了吗?
我们将不胜感激任何帮助,即使帮助我走上正轨也是微不足道的。提前谢谢你。
我建议为您的 Flask 应用程序和 Kafka 应用程序使用单独的容器。这遵循单一职责的良好软件设计原则。
不需要学习java,可以在python中编码,请查看下面的link
https://towardsdatascience.com/kafka-python-explained-in-10-lines-of-code-800e3e07dad1
您可以查看 AWS 文档了解 ECS 中的容器网络
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html[2]
请查看这篇文章,了解如何创建多个任务或服务。您可以使用 awsvpc
或 bridge
网络。在 awsvpc
模式下,您的每个容器都有自己的私有 IP 地址,并且可以附加安全组。使用 bridge
网络,您可以将容器端口映射到主机,并且容器可以通过 localhost:port 相互访问。
https://www.freecodecamp.org/news/amazon-ecs-terms-and-architecture-807d8c4960fd/
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html
您还可以检查 AWS Farget 以了解您的容器运行时
希望就一般架构问题获得一些帮助。
我有一个 Flask Web 应用程序(我们称它为 people-app),运行 在 Docker 容器中。它已部署到 Amazon ECS,并且看起来 运行ning 正常。 people-app 公开了一个 HTTP API,授权用户可以在其中使用令牌进行交互,以及一些传统的网络应用程序页面。
我想做的是实现一个 Kafka 消费者组,它意味着从与 Flask 应用程序相关的主题(即 people-topic)中消费,然后消费,与 Flask 应用程序交互(可能创建模型实例并将它们保存到数据库,类似于 HTTP API 处理 HTTP 请求的方式)。我真的无法在任何地方找到任何实施示例,尤其是在 python 中,但我会说我正在尝试实现类似于 Chris Richardson 的 eventuate framework 的东西。
我想我的问题可以归结为;我将如何实施这样的事情?如果 Kafka 消费者 运行 在一个连续的循环中,我假设他们应该 运行 在他们自己的独立进程中。这似乎会导致 Docker 出现问题,因为 运行 在容器中设置多个进程有效地消除了容器与应用程序有效通信的能力。
我应该运行使用单独的容器吗?如果是这样,那么这两个容器将如何通信?我错过了什么吗?我完全走错路了吗?
我们将不胜感激任何帮助,即使帮助我走上正轨也是微不足道的。提前谢谢你。
我建议为您的 Flask 应用程序和 Kafka 应用程序使用单独的容器。这遵循单一职责的良好软件设计原则。
不需要学习java,可以在python中编码,请查看下面的link https://towardsdatascience.com/kafka-python-explained-in-10-lines-of-code-800e3e07dad1
您可以查看 AWS 文档了解 ECS 中的容器网络 https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html[2]
请查看这篇文章,了解如何创建多个任务或服务。您可以使用 awsvpc
或 bridge
网络。在 awsvpc
模式下,您的每个容器都有自己的私有 IP 地址,并且可以附加安全组。使用 bridge
网络,您可以将容器端口映射到主机,并且容器可以通过 localhost:port 相互访问。
https://www.freecodecamp.org/news/amazon-ecs-terms-and-architecture-807d8c4960fd/
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html
您还可以检查 AWS Farget 以了解您的容器运行时