我不熟悉微服务.我目前正在使用微服务开发一个应用程序,并同时使用同步和异步通信.
最近我读了很多文章,说不应该使用同步(HTTP)通信,而应该只使用异步(message broker).有几个人提到过——如果微服务通过REST进行通信,那么实际上,您仍然拥有一个单片应用程序.
假设我们有两个微服务(MS):
- CurrencyConversion毫秒-我们将把输入传递给这个毫秒,因为我们想把CurrencyConversion美元转换成印度卢比.CurrencyConversion MS将执行对CurrencyExchange MS的GET调用,以获取美元兑印度卢比的汇率.
- CurrencyExchange毫秒-我们将以美元对印度卢比的形式向该MS传递输入,CurrencyExchange MS将以75的形式返回汇率,即$1=75印度卢比.
在这种情况下,CurrencyConversion无法独立工作,如果CurrencyExchange失败,CurrencyConversion也将失败.
所以我的第一个问题是——在微服务中,服务之间的同步通信是一种反模式吗?
第二个问题是——如果同步通信不是一种首选方式,那么一个服务将在best way to design communication between different internal services到execute a GET call to get some dependent data之间运行,例如我上面提到的场景.
我们如何在不使用同步通信的情况下克服这一问题?