REST是否适合微服务?

时间:2018-07-01 06:33:36

标签: rest microservices synchronous

我正在通过书籍,博客等探索micorservices架构。

我看到的是,大多数人使用REST实现微服务。矛盾吗?

微服务应该解耦服务以实现可伸缩性,但是REST通信协议是同步的。

那么这两个怎么在一起?

2 个答案:

答案 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 [微服务架构中的通信]