服务拆分及远程调用

分布式架构都离不开服务的拆分,微服务也是一样。

1.微服务拆分

  • 不同微服务,不要重复开发相同业务

  • 微服务数据独立,不要访问其它微服务的数据库

  • 微服务可以将自己的业务暴露为接口,供其它微服务调用

服务拆分及远程调用_第1张图片

2.远程调用

        以前时,我们将服务启动之后,可以使用浏览发送http请求来访问服务,现在我们是否可以使用一个服务也发送http请求另一个服务呢?那当然是可以的了!这就要用到TestTemplate了

服务拆分及远程调用_第2张图片

Ⅰ.注册一个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、端口、接口路径、请求参数即可。

你可能感兴趣的:(SpringCloud,spring,cloud)