【问题标题】:Microservice, Socket IO and Kafka architecture question微服务、Socket IO 和 Kafka 架构问题
【发布时间】:2021-11-19 03:47:40
【问题描述】:

我有一个包含 4 个微服务的应用程序,所有这些微服务都通过 socketio 向客户端发出事件。 目前客户端为每个服务创建一个socket io客户端连接

const apiSocket = new io(gateway, resolveOptions("/api"));
const chatSocket = new io(gateway, resolveOptions("/chat"));
const otherServiceSocket = new io(gateway, resolveOptions("/example"));
const ThatOtherServiceSocket = new io(gateway, resolveOptions("/example2"));

然后将它们导入到需要它们的各种组件中。我看到的问题是我不得不编写大量重复的代码并重复订阅特定频道的套接字。

最近一直在学习kafka,突然想到以下架构,想咨询S.O是否有意义,如果这样做有什么弊端:

创建一个单一的网络套接字服务来处理所有网络套接字事件和连接(或几个和使用 nginx 的负载平衡)

然后将相关服务将使用的事件发布到 kafka。如果服务需要向客户端发送事件以触发通知或类似的东西,它将向 kafka 发布一个事件,Web 套接字服务将使用该事件,然后将其发送给客户端。

这种架构有意义吗?这样做有什么缺点吗?

这是我解释问题的视频: https://www.loom.com/share/57cf8a542f434a85ab638c4b2ffd9999

【问题讨论】:

    标签: node.js apache-kafka socket.io architecture


    【解决方案1】:

    您正在使用您的单一网络套接字服务有效地制作BFF pattern。这并没有错,这种模式一直用于简化复杂的后端服务架构(尤其是当人们过度分解他们的微服务时)。

    【讨论】:

    • 谢谢,我不知道我正在创建的技术术语。我对软件模式的了解非常有限。感谢您的回复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-17
    • 2020-11-14
    • 2020-12-16
    • 2020-05-06
    • 2013-08-07
    • 2020-06-23
    • 1970-01-01
    相关资源
    最近更新 更多