微服务之间的通信
在前两章中,我们讨论了与微服务架构一服务发现和配置服务器中非常重要的元素相关的细节。但是,值得一提的是,它们在系统中存在主要是为了帮助管理独立应用程序的整体设置。该管理的一个方面就是微服务之间的通信。在这里,服务发现扮演了一个特别重要的角色,它负责存储所有可用应用程序的网络位置并提供服务。当然,我们也可以设想一个没有服务发现服务器的系统架构,本章就将介绍这样的示例。当然,参与服务间通信的最重要组件是HTTP客户端和客户端负载均衡器。本章将重点关注它们。
本章将要讨论的主题包括:
口使用 Spring RestTemplate进行有和没有服务发现的服务间通信。
口自定义Ribbon客户端。
口Feign客户端提供的主要功能的描述,如与Ribbon客户端的集成、服务发现、继承和分区支持。
不同类型的通信
微服务之间的通信具有不同的类型。可以从两个维度来划分它们。第一个维度是将其划分为同步(Synchronous) 和异步(Asynchronous) 通信协议。异步通信的关键要点是客户端在等待响应时不应该阻塞线程。这种通信最流行的协议是AMQP,在第5章的末尾我们已经介绍了使用该协议的示例。
当然,服务之间的主要通信方式仍然是同步HTTP协议,本章将对其进行详细讨论。