首页 > 其他分享 >服务拆分及远程调用

服务拆分及远程调用

时间:2023-06-19 21:58:11浏览次数:37  
标签:web 调用 服务 springframework 远程 拆分 org import order

一、微服务拆分注意事项:

1、不同微服务:不能重复相关业务

2、微服务数据独立:不要访问其它微服务的数据库,有自己独立的数据库

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

 

二、微服务远程调用

案例:两个服务各自提供两个功能:根据订单id查询订单功能,根据用户id查询用户信息

需求:根据订单id查询订单的同时,把订单所属的用户信息一起返回。

远程调用方式:

基于RedisTemplate发起的http请求实现远程调用。

具体实现:根据user服务暴露的接口,发起http请求用户信息。

package cn.itcast.order;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.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
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}

 

package cn.itcast.order.web;

import cn.itcast.order.pojo.Order;
import cn.itcast.order.pojo.User;
import cn.itcast.order.service.OrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
@RequestMapping("order")
public class OrderController {

   @Autowired
   private OrderService orderService;

   @Autowired
   private RestTemplate restTemplate;

    @GetMapping("{orderId}")
    public Order queryOrderByUserId(@PathVariable("orderId") Long orderId) {
        //1、根据id查询订单并返回
        Order order = orderService.queryOrderById(orderId);

        //2、利用RestTemplate发起http请求,查询用户
        String url = "http://localhost:8081/user/" + order.getUserId();
        User user = restTemplate.getForObject(url, User.class);
        //3、封装user到Order
        order.setUser(user);
        return order;
    }
}

 

2、提供者与消费者

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

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

一个服务既可以是提供者,又可以是消费者。

标签:web,调用,服务,springframework,远程,拆分,org,import,order
From: https://www.cnblogs.com/fxzm/p/17492289.html

相关文章

  • The remote SSH server rejected X11 forwarding request.“远程SSH服务器拒绝X11转发
       启动kkFileView后弹出提醒无法正常访问服务器, 重启服务器时,需要安装出现如下提醒方法一、 X11forwarding依赖xorg-x11-xauth软件包,需要先安装xorg-x11-xauth软件包。1.使用Xshell执行下面代码[root@VM-4-11-centos~]#yuminstallxorg-x11-xauth  ......
  • kotlin 调用对应java实现
    kotlin调用对应java实现1.枚举kotlion默认是publiccotlin枚举enumclassDoorState{OPEN,CLOSE}--------- java实现publicstaticenumDoorState{OPEN,CLOSE;}2.class2.1dataclasskotlin调用dataclassLoginResult(变量)----......
  • 基于ChatGPT函数调用来实现C#本地函数逻辑链式调用助力大模型落地
    6月13日OpenAI官网突然发布了重磅的ChatGPT更新,我相信大家都看到了,除了调用降本和增加更长的上下文版本外,开发者们最关心的应该还是新的函数调用能力。通过这项能力模型在需要的时候可以调用函数并生成对应的JSON对象作为输出。这使开发人员能更准确地从模型获取结......
  • API接口开发系列(获得京东JD商品详情原数据java源代码调用示例)
    ​请求获取京东商品详情原数据(免费获取调用)的作用:1.提供商品信息:京东商品详情中的原数据可以提供商品的基本信息,包括商品名称、价格、品牌、规格参数、图片等,让消费者更好地了解商品。2.帮助搜索引擎识别:京东商品详情的原数据可以被搜索引擎识别,在搜索结果页中显示更为详细丰富......
  • 【salesforce技术积累】-APEX调用外部服务概念理解(包含外部站点设置)
    1.基本概念・salesforce中的「コールアウト」指的是salesforce作为客户端去调用其他的服务,「Webサービス」指的是salesforce作为服务器被其他客户端调用。(个人理解)下面这个网站是其他人的解释说明:Salesforce(他システムとの連携メモ)-Qiita打不开的小伙伴请继续看下面。。。......
  • API接口开发系列(获得京东JD商品详情原数据java源代码调用示例)
    请求获取京东商品详情原数据(免费获取调用请私信)的作用:1.提供商品信息:京东商品详情中的原数据可以提供商品的基本信息,包括商品名称、价格、品牌、规格参数、图片等,让消费者更好地了解商品。2.帮助搜索引擎识别:京东商品详情的原数据可以被搜索引擎识别,在搜索结果页中显示更为详细丰富......
  • 关于使用vsmonodebuger对mono中运行的c#程序远程调试
    介绍:Mono是基于.NETFramework的开源开发平台,允许开发人员构建跨平台应用程序,从而提高开发人员的工作效率。Mono的.NET实现基于C#和公共语言基础结构的ECMA标准。简而言之就是可以运行.netframework程序跨平台执行vsmonodebuger:是mono的一个vs调试器插件,我们可以通过这个插件在......
  • Linux系统调用的数量变化
     从2.4的190个到2.6的300多个,越来越多的系统调用数一方面大大增强了Linux对应用的支持,另外一方面也给应用的移植带来了很大的挑战。 source:http://www.cs.unm.edu/~fastos/07meeting/2007.06.18._ColonyPImtg2.ppt More:2.2内核中的syscall列表,http://bluemaster.iu.hio.no/edu......
  • 电脑显示远程计算机设备不接受连接怎么办
    1.电脑显示远程计算机或设备将不接受连接怎么办?windows+r,输入inetcpl.cpl,点击确定,打开Internet选项。点击Internet选项中连接属性,点击局域网设置。将三个框的勾勾去掉,即为不选中状态,点击确定。......
  • 修改git远程仓库地址
    修改远程仓库地址进入git_test根目录gitremote查看所有远程仓库,gitremotexxx查看指定远程仓库地址gitremoteset-urloriginhttp://192.168.100.235:9797/john/git_test.git......