首页 > 其他分享 >微服务结构及微服务远程调用

微服务结构及微服务远程调用

时间:2022-11-12 10:08:33浏览次数:31  
标签:调用 服务 RestTemplate 远程 及微 http order


目录

​​一、微服务结构​​

​​二、微服务远程调用​​


一、微服务结构

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

微服务结构及微服务远程调用_spring cloud

 微服务技术对比:

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查询订单的同时,把订单所属的用户信息一起返回

微服务结构及微服务远程调用_java_02

 实现步骤:

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、端口、接口路径、请求参数即可

提供者及消费者:

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

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

服务调用关系:

服务提供者:暴露接口给其他微服务调用

服务消费者:调用其他微服务提供的接口

提供者与消费者角色是相对

一个服务可以同时是服务提供者和服务消费者

标签:调用,服务,RestTemplate,远程,及微,http,order
From: https://blog.51cto.com/u_15815415/5846500

相关文章

  • Eureka的作用、搭建Eureka注册中心、服务注册及服务发现
    目录​​一、Eureka的作用​​​​二、搭建EurekaServer​​​​三、服务注册​​​​四、服务发现​​一、Eureka的作用消费者该如何获取服务提供者具体信息?◆服务提供者......
  • 解决服务器I/O过高的问题
    问题缘起:当我习惯性地用top查看任务运行状态时,发现我运行的100个任务,只有3个在运行,其他都在摸鱼状态。同时发现我的任务进程都是"D"状态(未截图),而不是R(运行)状态。1.top......
  • linux服务器中JDK的安装和配置
    目录​​一、安装配置过程如下:​​​​1.新建jdk文件夹(/usr/local/jdk)​​​​2.将jdk.tar.gz包解压到jdk文件夹下​​​​ 3.jdk包解压后​​​​4.进入JDK环境变量添加......
  • 第二章 Pod驱逐策略、更新策略、服务回滚
    Pod驱逐策略节点压力驱逐是由各kubelet进程主动终止pod,以回收节点上的内存、磁盘空间等资源的过程,kubelet监控当前node节点的CPU、内存、磁盘空间和文件系统的inde等资源,当......
  • node08_01使用express创建最基本的服务器
    Express:基于 Node.js 平台,快速、开放、极简的Web开发框架。文档:https://www.expressjs.com.cn/下载:$npminstallexpress--save//1.导入expressconstexpres......
  • 腾讯云服务器mysql
    添加规则[root@VM-4-8-centos~]#cd/usr/local/src/[root@VM-4-8-centossrc]#wgethttp://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm[root@VM-......
  • linux系统_腾讯云服务器_CentOS_搭建FTP
    A-搭建FTP服务器:1-安装ftp服务器:yum-yinstallvsftpd2-设置ftp开机启动:systemctlenablevsftpd.service3-启动ftp服务:systemctlstartvsftpd.service4-检......
  • mysql免安装版服务启动
    1.以管理员身份启动cmd2.cd到mysql的bin目录下3.执行:mysqld-install提示:  如果不以管理员身份运行,有可能出现以下错误:  4.这个时候,运行输入"servic......
  • 腾讯云服务器安装zookeeper
    1.下载zookeeper安装包https://downloads.apache.org/zookeeper/zookeeper-3.6.3/2.解压tar-zxvfapache-zookeeper-3.6.3-bin.tar.gz3.移动到指定文件夹mvapache......
  • 服务器和存储可用管理接口 服务器 mgmt 存储是三个口
    exp是连接硬盘框的     1g 前m服务器:::  ......