关于SpringCloud的微服务结构及微服务远程调用
一、微服务结构
微服务这种方案需要技术框架来落地,全球的互联网公司都在积极尝试自己的微服务落地技术。在国内最知名的就是SpringCloud和阿里巴巴的Dubbo。

微服务技术对比:
| Dubbo | SpringCloud | SpringCloudAlibaba | |
| 注册中心 | zookeeper、Redis | Eureka、Consul | Nacos、Eureka |
| 服务远程调用 | Dubbo协议 | Feign (http协议) | Dubbo、Feign |
| 配置中心 | 无 | SpringCloudfig | SpringCloudfig、Nacos |
| 服务网关 | 无 | SpringCloudGateway、Zuul | SpringCloudGateway、Zuul |
| 服务监控保护 | dubbo-admin、功能弱 | Hystix | Sentinel |
二、微服务远程调用
根据订单id查询订单功能:
需求:根据订单id查询订单的同时,把订单所属的用户信息一起返回

实现步骤:
1、注册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);
}
/**
* 创建RestTemplate并注入Spring容器
* @return
*/
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
}2、服务远程调用RestTemplate
修改order-service中的OrderService的queryOrderById方法:
@Service
public class OrderService {
@Autowired
private OrderMapper orderMapper;
@Autowired
private RestTemplate restTemplate;
public Order queryOrderById(Long orderId) {
// 1.查询订单
Order order = orderMapper.findById(orderId);
//2、利用RestTemplate发送http,查询用户
//2.1 url路径
String url = "http://localhost:8081/user/"+order.getUserId();
//2。1 发送http请求,实现远程调用
User user = restTemplate.getForObject(url,User.class);
//3.封装user到Order
order.setUser(user);
// 4.返回
return order;
}
}微服务调用方式:
基于RestTemplate发起的http请求实现远程调用
http请求做远程调用时与语言无关的调用,只要知道对方的ip、端口、接口路径、请求参数即可
提供者及消费者:
服务提供者:一次业务中,被其他微服务调用的服务(提供接口给其他微服务)
服务消费者:一次业务中,调用其他微服务的服务 (调用其他的微服务提供的接口)
服务调用关系:
服务提供者:暴露接口给其他微服务调用
服务消费者:调用其他微服务提供的接口
提供者与消费者角色是相对的
一个服务可以同时是服务提供者和服务消费者
到此这篇关于关于SpringCloud的微服务结构及微服务远程调用的文章就介绍到这了,更多相关SpringCloud 微服务结构及调用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
springboot 在xml里读取yml的配置信息的示例代码
这篇文章主要介绍了springboot 在xml里读取yml的配置信息的示例代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-09-09
Springboot集成Elasticsearch的步骤与相关功能
ElasticSearch是开源搜索平台领域的一个新成员, ElasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜索引擎,这篇文章主要给大家介绍了关于Springboot集成Elasticsearch的相关资料,需要的朋友可以参考下2021-12-12
IDEA2020 1.1中Plugins加载不出来的问题及解决方法
这篇文章主要介绍了IDEA2020 1.1中Plugins加载不出来的问题,本文还给大家提到了IDEA 2020.1.1 找不到程序包和符号的问题,感兴趣的朋友跟随小编一起看看吧2020-06-06
Java Stream流中的filter()使用方法举例详解
filter()是Java Stream API中的中间操作,用于根据给定的Predicate条件筛选流中的元素,它通过接收一个返回boolean值的函数(断言)作为参数,筛选出满足条件的元素并收集到新的流中,文中通过代码介绍的非常详细,需要的朋友可以参考下2024-11-11
springboot使用小工具之Lombok、devtools、Spring Initailizr详解
这篇文章主要介绍了springboot使用小工具之Lombok、devtools、Spring Initailizr详解,Lombok可以代替手写get、set、构造方法等,需要idea装插件lombok,本文通过示例代码给大家介绍的非常详细,需要的朋友可以参考下2022-10-10
详解Java Project项目打包成jar,并生成exe文件
本篇文章主要介绍了Java Project项目打包成jar,并生成exe文件,非常具有实用价值,有兴趣的可以了解一下。2017-01-01


最新评论