微服务的消费模式
1.1 服务直连模式
服务直连模式就是直接通过URL去访问想要的资源。如我们直接通过URL访问某个网页,又如在我们的天气预报例子中,通过Restful API服务去获取某城市的天气信息。
String uri = "http://127.0.0.1:8082/weather/cityId/" + cityId;
ResponseEntity<String> response = restTemplate.getForEntity(uri,String.class);
服务直连模式具有以下特点:
简洁明了;平台语言无关性;但是,这种模式也有一个很大的问题,就是假设给定的URL不可用,就会对系统的功能造成影响。
Apache的HttpClient是一种服务直连模式。
1.2 客户端发现模式
客户端发现模式是一种由客户端来决定相应服务实例的网络位置的解决方案。其原理如下:
- 当服务实例启动后,将自己的位置信息提交到服务注册表中。服务注册表维护着所有可用的服务实例的列表。
- 客户端从服务注册表进行查询,来获取可用的服务实例。
- 在选取可用的服务实例的过程中,客户端自行使用负载均衡算法从多个服务实例中选择一个,然后发出请求。
下图显示了客户端发现模式的架构
<