环境搭建 生产和消费 RestTemplate,底层源码解读
- SpringCloud环境搭建:生产和消费 RestTemplate
- 整合Eureka和Feign
- 引入Eureka服务注解中心
- 替代RestTemplate?通过openFegin进行调用
- 当一个请求多次落到一个服务上,其他服务如何平衡这种关系那?Ribbon实现负载均衡
- 基础学习
- 底层源码解析
SpringCloud环境搭建:生产和消费 RestTemplate
Spring章节复习已经过去,新的章节SpringCloud开始了,这个章节中将会回顾微服务相关
主要依照以下几个原则
- 每一个组件的Demo和Coding上传到我的代码仓库
- 在原有基础上加入一些设计模式,stream+lamdba等新的糖
- 通过DeBug调试,进入组件源码去分析底层运行的规则和设计模式
相关的代码已经上传到
链接: SpringCloudServiceDemo
可以进入develop分支去看,觉得不错的博主记得一键三连支持下
整合Eureka和Feign
引入Eureka服务注解中心
先在微服务架构下构建一个子模块,专门调用Eureka服务
个人感觉,springcloud的东西就是配置注解,然后操作下相应的配置文件
基本上就可以跑起来了
但是底层东西就很多了,后面一起过一下
然后在子模块中加入
启动服务
点击10086进入到Eureka的ui界面
配置的服务就可以在这里发现了
如果我们想去调用
就需要用我们注册进入这个Eureka的端口名称 USERSERVICE
@Service
class OrderServiceImpl1 implements OrderService {
@SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
@Autowired
private OrderMapper orderMapper;
@Autowired
@Qualifier("curTemplate")
private RestTemplate restTemplate;
public Order queryOrderById(Long orderId) {
Order order = orderMapper.findById(orderId);
String url = "http://USERSERVICE/user/" + order.getUserId();
order.setUser(restTemplate.getForObject(url, User.class));
return order;
}
}
下面我们换一种方式进行调用
替代RestTemplate?通过openFegin进行调用
依旧是导包,注解,配置,多了一个接口导入
我们通过这个接口mock了用户模块的方法进行处理,实际上也是url调用的封装
最后调用方法即可
@Autowired
private OrderMapper orderMapper;
/* @Autowired
@Qualifier("curTemplate")
private RestTemplate restTemplate;*/
@Autowired
private UserClient userClient;
public Order queryOrderById(Long orderId) {
Order order = orderMapper.findById(orderId);
order.setUser(userClient.findById(order.getUserId()));
return order;
}
当一个请求多次落到一个服务上,其他服务如何平衡这种关系那?Ribbon实现负载均衡
如果你用的RestTemplate,可以试试
@Component
public class BeanFactory {
@Bean
public static RestTemplate getRestTemplate(){
return new RestTemplate();
}
@Bean("curTemplate")
@LoadBalanced
public RestTemplate RestTemplate(){
return new RestTemplate();
}
}
发送请求4次,看下结果
这里默认适用轮询负载均衡器,后面Debug看
基础学习
底层源码解析
后面一一更新下