【微服务】二. 服务拆分及远程调用

文章介绍了服务拆分时应注意不要重复开发业务微服务,保持数据独立,通过接口进行交互。在Java中,使用RestTemplate进行远程调用,以订单服务调用用户服务为例,展示了如何注入RestTemplate并发起HTTP请求获取数据。同时,文章强调了服务提供者和消费者的角色是相对的。
摘要由CSDN通过智能技术生成

服务拆分注意事项:

  1. 不同微服务,不要重复开发相同业务
  2. 微服务数据独立,不要访问其他微服务的数据库
  3. 微服务可以将自己的业务暴露为接口,供其他微服务调用

微服务远程调用

远程调用方式分析:
订单模块不能直接调用用户模块的数据库。如果订单模块能够向浏览器一样对用户模块发起请求调用接口,就可以查到用户信息。
远程调用方式分析
问题:如何在java代码中发起http请求?
实现:在order模块中远程调用user
步骤一:注入RestTemplate Bean对象

注册RestTemplate
在order-service的OrderApplication中注册RestTemplate

@MapperScan("cn.itcast.order.mapper")
@SpringBootApplication
Public class OrderApplication{
	public static  void main(String[] args){
		SpringApplication.run(OrderApplication.class, args);		
	}

	@Bean
	public RestTemplate restTemplate(){
		return new RestTemplate();
	}
}

步骤二:service中调用 restTemplate调用什么类型的接口就 .get/post类型的方法

第一个参数是url,第二个参数是返回的类型

服务远程调用RestTemplate
修改order-service中的OrderService的queryOrderById方法:

@Service
public class OrderService {
	@Autowired
	private RestTemplate restTemplate;

	public Order queryOrderById(Long orderId){
		// 1. 查询订单
		Order order = orderMapper.findById(orderId);
		// 2. 查询用户
		String url = "http://localhost:8081/user/*"+order.getUserId();
		User user = restTemplate.getForObject(url, User.class);
		// 3. 封装user信息
		order.setUser(user);
		// 4. 返回
		return order;
	}
}

总结

微服务调用方式:
基于RestTemplate发起的http请求实现远程调用。
http请求做远程调用是与语言无关的调用,只要知道对方的ip、端口、接口路径、请求参数即可。

远程调用

提供者和消费者
服务提供者:一次业务中,被其他微服务调用的服务。(提供接口给其他服务)
服务消费者:一次业务中,调用其他微服务的服务。(调用其他微服务提供的接口)

思考:服务A调用服务B,服务B调用服务C,那么服务B是什么角色?
提供者和消费者角色其实是相对的。
一个服务既可以是消费者,也可以是提供者。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值