微服务&卡夫卡:夫妻双方

时间:2017-05-12 17:03:58

标签: apache-kafka microservices loose-coupling

我正在解决一个可能正常的微服务设置和我们正在设置的Kafka的问题。

我们在Kafka有一个主题,多个消费者通过不同的消费者群体阅读这个主题。 但不知何故,我认为这可能导致微服务方面的耦合,因为我们有两个消费者从同一主题中读取确切的数据。此外,我们没有留言的任何保留时间,因此我将The Kafka视为某种数据存储。所以我认为我们应该将消息复制到另一个服务/消费者的主题中。

我们对于如何耦合或脱钩有不同的看法,我希望听到你对我出错的看法,因为我觉得我做错了。感谢您的支持!

1 个答案:

答案 0 :(得分:2)

在我看来,只要您的服务不重复依赖它,就可以使用Kafka主题来处理多个服务或应用程序。意味着服务应该读取队列一次,将数据转换为它需要的任何内容,并在需要时自行存储它。这样,主题不会成为永久性数据存储,而是一种相当分离的输入数据的方式(就好像您直接使用raw数据调用服务一样,但是通过允许服务以更加分离的方式无论何时需要,都可以随时阅读该主题。这样可以提高整个系统的弹性。

并且耦合,即raw数据。但是从我的角度来看,多个服务完全可以理解相同的数据格式(主题) - 只要它的格式基本稳定。这里的假设是,这是raw数据,每个服务必须转换为对自身有用的形式。只要需要进行更改,您就必须确保raw数据格式的版本正确。为了使服务继续工作,您必须同时提供多个版本,直到所有服务都支持最新版本。许多大型系统和工作都使用这种类型的体系结构样式,只要您没有需要raw数据格式以非常频繁的方式更改的方案,使其与您的系统不兼容服务设计。 (如果是这种情况,您可能需要下面另一层稳定的元模型来描述动态原始数据。)