【发布时间】:2021-09-15 10:02:33
【问题描述】:
我有两个相互链接的项目,项目 A 和项目 B 在同一个 VS 解决方案中。 现在的要求是,我必须做单独的项目,这意味着单独的数据库、网站名称、服务器等。
现在我想知道如何使用 Web API 将两个项目相互通信?
【问题讨论】:
标签: api web microservices
我有两个相互链接的项目,项目 A 和项目 B 在同一个 VS 解决方案中。 现在的要求是,我必须做单独的项目,这意味着单独的数据库、网站名称、服务器等。
现在我想知道如何使用 Web API 将两个项目相互通信?
【问题讨论】:
标签: api web microservices
在开始分开之前,我建议阅读有关 DDD(域驱动设计)的内容,以便正确选择一个微服务或另一个微服务中的功能和类。
不管怎样,一旦你把两个服务分开了,那么它们之间的通信就会最少,主要有两种方式来相互通信。
一种是使用HTTP调用的同步通信,使用一些HTTP客户端为你的语言,例如,在java-spring应用程序中使用Webclient是很常见的。这种方法的优点是您不必处理最终一致性,因为所有事情都发生在同一个线程中,主要缺点是您正在耦合服务,如果其中一个失败,另一个也会失败。
第二种方法是使用一些消息代理(如 kafka)使用异步消息传递。使用这种方法,当其中一个服务发生某些事情时,它将在消息代理中发布该事件,并由另一个服务使用。没有直接通信,因此不会出现级联故障,但问题是您不知道消息何时会被消费(最终一致性)
正如您所见,这两个选项各有利弊,选择其中一个取决于您的用例
【讨论】: