微服务开发-----------服务拆分与远程调用RestTemplate

本文介绍了微服务架构中服务拆分的原则,强调避免重复业务,以及如何通过RestTemplate进行远程调用,包括url构建、请求方法映射和服务提供者与消费者的区分。B服务在调用链中既是消费者又是提供者,体现了服务交互的相对性。
摘要由CSDN通过智能技术生成

第一天 B

服务拆分及远程调用

服务拆分:

有一些需要注意的细节:

1.不同的微服务,不要重复开发相同的业务

2.微服务的数据是要保持独立的,每个微服务都有自己的数据库。

3.微服务可以把自己的业务暴露为接口,供其他微服务进行使用。

注意:在单体架构开发的方面我们可能会用到大量的重复业务功能,在微服务开发中我们应当学会去避免这样的事情发生。

如图所示,该案例分为两部分:订单和用户两部分,需要进行分为两个微服务,一个是关于订单的,而另外一个是关于用户的,对于他们获得对方的数据就要通过对方的接口得到对方的独立数据库中的数据。这与单体架构的服务模式完全不同。注意:他们的数据库也是分开的! 

远程调用:

 远程调用的原理就相当于发送了一个http请求从而得到了在对应服务中的方法与数据。

如何在服务中发送类似http请求:

1.先注册RestTemplate:先在要进行远程调用的applicat中注入一个restTemplate;

 @MapperScan注解加在application上,相当于在每个mapper类上注释一个@Mapper;

2.在要进行调用的ServiceImpl实现类里面加入rest Template的方法,同时要在其中加入

@Resource
private RestTemplate restTemplate;
//如何用restTemplate发送HTTP请求
//1.写入url地址
String url = "http://localhost/8081/user/"+orders.getUserId();
//2.使用restTemplate发送请求
User user = restTemplate.getForObject(url , user.class);
//3.封装到order中
order.setUser(user);
//4.返回值
return order;

 这里有几个点要注意:

1.url地址是发送请求至关重要的部分。

2.restTemplate方法中的getForObject对应的是GetMapping的方法;而postForObject方法则对应着PostMapping方法。

3.在getForMapping方法中的user.class可以让得到的值变成User的类型。

提供者和消费者:

1.服务提供者:在一次服务远程调用中,业务被进行调用。(提供接口给别的服务进行使用)

2.服务消费者:在一次服务远程调用中,用到了别的服务中的业务。(使用了别的服务的接口)

在这个demo中,order Service是消费者,而userService是提供者。

question:

当A调用B,而B调用C,那B是属于消费者还是提供者呢?

解:B既是消费者也是提供者,消费者和提供者是一个相对的关系。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值