分布式架构都离不开服务的拆分,微服务也是一样。
1.微服务拆分
-
不同微服务,不要重复开发相同业务
-
微服务数据独立,不要访问其它微服务的数据库
-
微服务可以将自己的业务暴露为接口,供其它微服务调用
2.远程调用
以前时,我们将服务启动之后,可以使用浏览发送http请求来访问服务,现在我们是否可以使用一个服务也发送http请求另一个服务呢?那当然是可以的了!这就要用到TestTemplate了
Ⅰ.注册一个RestTemplate的实例到Spring容器
// bean的注入只能放到配置类中,启动类带有main()函数,带有@SpringBootApplication注解本身也是配置类
/**
* 创建RestTemplat并注入Spring容器
* @return
*/
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
Ⅱ.服务远程调用RestTemplate
@Autowired
private RestTemplate restTemplate;
// 2.利用RestTemplate发起http请求,查询用户
// 2.1.url路径
String url = "http://localhost:8081/user/" + order.getUserId();
// 2.2.发送http请求,实现远程调用
// 第二个参数是你想要的返回类型,会自动帮我们将JSON对象反序列化为User对象
User user = restTemplate.getForObject(url, User.class);
基于RestTemplate发起的http请求实现远程调用
http请求做远程调用是与语言无关的调用,只要知道对方的ip、端口、接口路径、请求参数即可。