1

我正在将一个巨大的单体企业应用程序分解为几个微服务,并确定了将围绕这些服务建模的业务能力。该应用程序具有相互交互的不同模块(HRMS、事务管理等)。我没有满足不同设备的要求。

在某些请求-(立即)响应用例中,微服务之间通过 API 网关进行的通信似乎很合适。但是,对于许多功能,不需要(立即)响应,将事件(例如,'EmployeeCreated')发布到消息代理(RabbitMQ)似乎更合适。

我的目标是尽可能使用异步 pub-sub,并保持 API Gateway 简单和愚蠢,以避免出现另一个单一的单点故障。

我有以下问题:

i) 通过 RESTful API-Gateway 通过微服务间通信实现某些功能,通过异步发布-订阅实现其他功能,这是一种好方法吗?有什么需要注意的挑战吗?

ii) 让中央路由网关订阅消息代理事件并调用相应的 RESTful API 是否是一个不错的选择?我担心这两个巨头(中央 msg 代理和 API 网关)可能会首先破坏 MSA 的目的。

iii)如果我要使用(i),这个答案表明 Windows 服务可以更好地与 RabbitMQ 一起使用,并且 Windows 服务中的自托管 Web API 可能是一个不错的选择。这样,windows服务就可以消费某些事件,并暴露一些API进行同步调用。这是推荐的吗?假设 .Net 范式,异步微服务是否一定需要是 Windows 服务?

对不起,范围很广。任何帮助表示赞赏。

4

0 回答 0