【发布时间】:2019-02-26 17:30:12
【问题描述】:
我将使用 Gunicorn 和 Gevent/Eventlet 作为异步工作器在 Kubernetes 上部署一个带有 Docker 的 Python Flask 服务器。该应用程序将:
- 在 Apache Kafka 上订阅大约 20 个不同的主题。
- 使用该数据对一些机器学习模型进行评分。
- 将结果上传到关系数据库。
Kafka 中的每个主题每分钟将收到 1 条消息,因此应用程序每分钟需要从 Kafka 消费大约 20 条消息。对于每条消息,处理和执行大约需要 45 秒。问题是我如何才能以一种好的方式扩展它?我知道我可以在 Gunicorn 中添加多个 worker,并在部署到 Kubernetes 时使用 pod 的多个副本。但这足够了吗?工作负载会在不同 pod 中的可用工作人员之间自动平衡吗?或者我可以做些什么来确保可扩展性?
【问题讨论】:
标签: python docker flask kubernetes gunicorn