运行与Flask应用程序交互的Kafka使用者

2024-04-26 04:41:00 发布

您现在位置:Python中文网/ 问答频道 /正文

希望能在一个一般的建筑问题上得到一些帮助

我有一个Flask Web应用程序(我们称之为people app),它运行在Docker容器中。它已部署到Amazon ECS上,并且似乎运行良好people app公开了一个HTTP API,授权用户可以在其中使用令牌以及一些传统web应用页面进行交互

我想做的是,实现一个Kafka消费组,它意味着从与Flask应用程序相关的主题(即人物主题)中消费,并在消费时与Flask应用程序交互(可能创建模型实例并将其保存到数据库,类似于HTTP API处理HTTP请求的方式)。我在任何地方都找不到任何实现示例,特别是在python中,但我要说的是,我正在尝试实现类似于Chris Richardson的eventuate framework的东西

我想我的问题可以归结为:;我如何实现这样的东西?如果Kafka消费者在一个连续的循环中运行,我假设他们应该在自己的、独立的流程中运行。这似乎会给Docker带来问题,因为在一个容器中运行多个进程会有效地消除容器与应用程序有效通信的能力

我应该运行单独的容器吗?如果是这样,那么这两个容器将如何通信?我错过什么了吗?我是不是完全走错了路

任何帮助都将不胜感激,即使是一些小事情让我走上正确的轨道。先谢谢你


Tags: kafkadockerapiwebapp应用程序httpflask
1条回答
网友
1楼 · 发布于 2024-04-26 04:41:00

我建议你的烧瓶应用程序和卡夫卡应用程序使用单独的容器。这遵循单一责任的良好软件设计原则

你不需要学习java,你可以用python编写代码,请查看下面的链接 https://towardsdatascience.com/kafka-python-explained-in-10-lines-of-code-800e3e07dad1

您可以在ECS中查看容器联网的AWS文档 https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html[2]

请查看本文,了解如何创建多个任务或服务。您可以使用awsvpcbridge网络。在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

相关问题 更多 >