我正在通过书籍,博客等探索micorservices架构。
我看到的是,大多数人使用REST实现微服务。矛盾吗?
微服务应该解耦服务以实现可伸缩性,但是REST通信协议是同步的。
那么这两个怎么在一起?
答案 0 :(得分:1)
REST接口被设计为对于大颗粒超媒体数据传输是高效的,针对Web的常见情况进行了优化,但是导致的接口对于其他形式的体系结构交互不是最佳的。 -Roy Fielding, 2000
“ REST通信协议是同步的。”
在几个级别上,这不太正确。
首先,没有“ REST通信协议”; REST是一种建筑风格。
Hypertext Transport Protocol(又名HTTP)是用于超文本信息系统的应用程序协议。 REST是一种体系结构样式,Web是参考实现。
第二,HTTP实际上不是同步的。由于请求的元数据中没有通用的correlation identifiers,因此客户端需要跟踪沿给定连接发送请求的顺序。参见RFC 7230, Section 5.6。这是“只是”消息。
Apache的HttpCore Tutorial讨论了非阻塞HTTP连接。
答案 1 :(得分:1)
我假设您正在查看多个HTTP Restful服务的链接。
如果您正在为一组Restful微服务设计消息传递体系结构。您需要考虑每种通信技术的风险和收益。请记住,您不必使用任何工具,可以为每项工作使用最好的工具。
看似最常见的是HTTP和AMQP(高级消息队列协议)。它们都有不同的用途。
如果您将后端作为微服务提供给网站。如果用户需要网站的响应,则可能需要以同步方式将呼叫链接在一起。另外,此时您的入站请求很可能是HTTP。
或者,如果不需要响应,则可能要考虑触发并忘记消息传递队列。这些将允许消息异步传递到其他微服务。
有一本很棒的电子书,详细介绍了此主题。 https://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/ [.NET微服务。容器化.NET应用程序的体系结构]
本页涵盖了您正在讨论的确切主题。 https://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/architect-microservice-container-applications/communication-in-microservice-architecture [微服务架构中的通信]