章节目录
1. 前言
在上一篇博客 SpringCloud搭建一个简单的天气预报系统(二)----集成Eureka中已经实现了服务的发现与注册。但还遗留了一个问题,就是几个TODO项------服务与服务之间的调用还没完成。如:在天气预报微服务中需要依赖天气数据API微服务来提供数据。其实,这就涉及到了微服务之间的消费问题。
2. 微服务的消费模式
2.1 服务直连模式
2.1.1 什么叫服务直连模式?
简单来说,就是通过浏览器直接输入url进行访问
2.1.2 特点
- 简单明了
- 平台语言无关性
- 无法保证服务的可用性(无法做到负载均衡)
- 生产环境很少用
2.2 客户端发现模式
2.2.1 工作流程
- 服务实例启动后(可以有多个),将自己的位置信息提交到服务注册表
- 客户端从服务注册表进行查询,来获取可用的服务实例
- 客户端自行使用负载均衡算法从多个服务实例中选择出一个
2.3 服务端发现模式
负载均衡是由服务端决定的
3. 常见的微服务消费者
3.1 Apache HttpClient
3.1.1 用法
1)、导入依赖
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.2</version>
</dependency>
2)、注入并配置RestTemplate
@Autowired
private RestTemplate restTemplate;
3)、使用
ResponseEntity<String> responseEntity = restTemplate.getForEntity(uri, String.class);
3.2 Ribbon
3.2.1 简介
Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。通过Spring Cloud的封装,可以让我们轻松地将面向服务的REST模版请求自动转换成客户端负载均衡的服务调用。
3.3 Feign
3.3.1 简介
Feign是一个http请求调用的轻量级框架,可以以Java接口注解的方式调用Http请求,而不用像Java中通过封装HTTP请求报文的方式直接调用。Feign通过处理注解,将请求模板化,当实际调用的时候,传入参数,根据参数再