【发布时间】:2017-03-25 04:19:48
【问题描述】:
我需要开发一个应用程序来监听 kafka 主题并将数据保存到数据库 (cassandra)。这将是一个高密度的数据流,因此保存数据将耗费资源。保存数据后,将通过 REST API 对其进行查询和公开。
我看到了两个选项,但它们都有缺点:
选项 1
创建两个服务,每个服务都在一个单独的 docker 容器中。一个只在 python 中运行 kafka 侦听器进程,另一个是烧瓶 Web 服务器。
优点:每个容器只运行一个进程
缺点:两者都有服务连接到同一个数据库,根据微服务模式架构,这并不理想,因为服务没有完全解耦。
选项 2
在一个容器中同时运行 kafka 侦听器和 Web 服务。
优点:只需一项服务即可连接到数据库。
缺点:运行多个进程在单个 docker 容器中,其中一个(保存和更新)将比另一个更昂贵,因此它不会统一扩展。
还有其他不涉及迁移到单体架构的方法吗?或者其中哪一个是最佳实践?
【问题讨论】:
-
您应该在构建自己的解决方案之前查看 Kafka Connect。对我来说,如果 Kafka Connect 可以提供开箱即用的任何东西,这听起来很不错。 (无论如何它是 Apache Kafka 的一部分)。
标签: python docker containers apache-kafka microservices