SpringCloud(2)

news2024/11/24 0:34:07

服务拆分和远程调用

任何分布式架构都离不开服务的拆分,微服务也是一样。

2.1.服务拆分原则

这里我总结了微服务拆分时的几个原则:

  • 不同微服务,不要重复开发相同业务
  • 微服务数据独立,不要访问其它微服务的数据库
  • 微服务可以将自己的业务暴露为接口,供其它微服务调用
    在这里插入图片描述

服务拆分示例

在这里插入图片描述
cloud-demo:父工程,管理依赖

  • order-service:订单微服务,负责订单相关业务
  • user-service:用户微服务,负责用户相关业务

要求:

  • 订单微服务和用户微服务都必须有各自的数据库,相互独立
  • 订单服务和用户服务都对外暴露Restful的接口
  • 订单服务如果需要查询用户信息,只能调用用户服务的Restful接口,不能查询用户数据库

案例需求:

修改order-service中的根据id查询订单业务,要求在查询订单的同时,根据订单中包含的userId查询出用户信息,一起返回。
在这里插入图片描述
因此,我们需要在order-service中 向user-service发起一个http的请求,调用

http://localhost:8081/user/{userId}

这个接口。

大概的步骤是这样的:

  • 注册一个RestTemplate的实例到Spring容器
  • 修改order-service服务中的OrderService类中的queryOrderById方法,根据Order对象中的userId查询User
  • 将查询的User填充到Order对象,一起返回

注册RestTemplate

首先,我们在order-service服务中的OrderApplication启动类中,注册RestTemplate实例:

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);
    }

    @Bean//注册RestTemplate实例
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

实现远程调用

修改order-service服务中的cn.itcast.order.service包下的OrderService类中的queryOrderById方法:
在这里插入图片描述

提供者与消费者

在服务调用关系中,会有两个不同的角色:

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

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

在这里插入图片描述
但是,服务提供者与服务消费者的角色并不是绝对的,而是相对于业务而言。

如果服务A调用了服务B,而服务B又调用了服务C,服务B的角色是什么?

  • 对于A调用B的业务而言:A是服务消费者,B是服务提供者
  • 对于B调用C的业务而言:B是服务消费者,C是服务提供者

因此,服务B既可以是服务提供者,也可以是服务消费者。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/600048.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【生物力学】《人体骨肌系统生物力学》- 王成焘老师 - 第1章 - 总论

目录回到目录第2章 文章目录 1.1 人体骨肌系统1.1.1 人体骨骼系统1. 骨骼的功能2. 骨骼的构造3. 骨组织的构成1. 骨细胞与骨基质2. 成骨细胞3. 破骨细胞4. 骨原细胞 4. 皮质骨与松质骨的构造1. 皮质骨2. 松质骨 1.1.2 关节与骨连接1. 运动关节2. 局部活动关节3. 微动关节与固定…

chatgpt赋能python:Python中点的SEO

Python中点的SEO 在Python编程中,点(.)是一个非常重要的语法符号,可以用于访问对象属性、调用方法、导入模块等。但是,在SEO优化中,点也有着特殊的含义。 什么是点的SEO含义? 在URL地址中&am…

chatgpt赋能python:Python关联规则代码:优化你的数据分析策略

Python关联规则代码:优化你的数据分析策略 数据分析是当今商业竞争中的重要环节之一。随着数据量的不断增长,为了更好地发现数据之间的关系和规律,数据分析师需要采用一些有效的工具和技术。Python是一种强大的编程语言,可以用于…

白天过节,晚上了解了下 Threejs3D

文章目录 I. 介绍Three.js 3DA. 什么是Three.jsB. Three.js的历史C. Three.js的应用领域 II. 开始使用Three.js 3DA. 安装和引入Three.jsB. 创建Three.js场景C. 添加3D对象到场景D. 控制相机和灯光E. 渲染场景 III. Three.js 3D中的基本概念A. 坐标系统和变换B. 材质和纹理C. 几…

分布式存储Ceph的部署及应用(创建MDS、RBD、RGW 接口)

目录 一、存储基础1.1 单机存储设备1.2 单机存储的问题 二、分布式存储(软件定义的存储 SDS)2.1 分布式存储的类型 三、Ceph 简介3.1 Ceph 优势3.2 Ceph 架构3.3 Ceph 核心组件3.4 Pool、PG 和 OSD 的关系3.5 OSD 存储后端3.6 Ceph 数据的存储过程3.7 Ce…

音视频基础 及 海思sample_venc解读

1、sample的整体架构 (1)sample其实是很多个例程,所以有很多个main (2)每一个例程面向一个典型应用,common是通用性主体函数,我们只分析venc (3)基本的架构是:venc中的main调用venc中的功能函数,再调用common中的功…

chatgpt赋能python:关于Python关联数组

关于Python关联数组 Python是一种高级编程语言,具有简单、易懂的语法和丰富的功能。其中一项强大的特性是Python关联数组,也称为字典。在本文中,我们将探讨什么是Python关联数组、为什么它们很有用、如何使用它们以及应该使用哪种类型的关联…

了解FFmpeg音频通道布局结构:AVChannelLayout结构体解析

1. 引言(Introduction) 1.1 FFmpeg简介(Brief Introduction to FFmpeg) FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。它提供了录制、转换以及流化音视频的完整解决方案。它包含…

计算机网络,期末大题整理part1

1.要发送的数据1010001,采用CRC生成多项式是P(X)X4X2X1,试求应添加在数据后面的余数。 接收端接收到的PPP帧的数据部分是0001110111110111110110,问删除发送端加的零比特后变成怎样的比特串 答:00011101111111111110 &#xff0…

vue3 antd项目实战——修改和增加公用一个弹窗(页面组件传值)

vue3 antd项目实战——修改和增加公用一个弹窗(页面组件传值) 往期知识调用(步骤不懂就看这儿)场景复现实战演示基础modal框的搭建现在我们就可以实现modal框及内部表单的动态绑定了!!! ![在这里…

国内可用 ChatGPT 网页版

前言 ChatGPT持续火热,然鹅国内很多人还是不会使用。 2023年6月1日消息,ChatGPT 聊天机器人可以根据用户的输入生成各种各样的文本,包括代码。但是,加拿大魁北克大学的四位研究人员发现,ChatGPT 生成的代码往往存在严…

读改变未来的九大算法笔记01_数据压缩

1. 起源 1.1. 香农–法诺编码(Shannon-Fano Coding) 1.1.1. 克劳德香农 1.1.1.1. 1948年论文创建信息理论领域的贝尔实验室科学家 1.1.2. 麻省理工学院教授罗伯特法诺(Robert Fano) 1.2. 霍夫曼编码 1.2.1. 大卫霍夫曼 1.2…

chatgpt赋能python:Python关联图简介

Python关联图简介 Python语言是一种非常流行和广泛使用的语言,可用于各种用途,包括数据分析和数据可视化。在数据可视化方面,Python有许多强大的库和工具,可以用来创建各种类型的图表和图形。其中之一是Python关联图。 在本篇文…

LNMP应用

安装 Nginx 服务 systemctl stop firewalld systemctl disable firewalld setenforce 0 1、安装依赖包 yum -y install pcre-devel zlib-devel gcc gcc-c make2、创建运行用户 useradd -M -s /sbin/nologin nginx3、编译安装 cd /opt tar zxvf nginx-1.12.0.tar.gz -C /op…

chatgpt赋能Python-python关联分析算法

介绍 Python是一种高级、通用、直译式编程语言。在数据科学和机器学习领域,它已成为首选语言之一。它有很多强大的库和框架,可以帮助数据分析师、科学家和工程师处理大量数据。Python关联分析算法就是其中之一。 Python关联分析算法可以帮助我们在数据…

MobileNetv1、MobileNetv2、MobileNetv3网络讲解

MobileNetv1、MobileNetv2、MobileNetv3网络讲解_mobilenetv3和mobilenetv2_I松风水月的博客-CSDN博客MobileNetv1、MobileNetv2、MobileNetv3网络讲解https://blog.csdn.net/qq_38683460/article/details/127409816

ChatGPT工作提效之layedit上传多附件的解决方案(layedit赋值、layui.js底层修改、追加模式多附件上传)

ChatGPT工作提效系列文章目录 ChatGPT工作提效之初探路径独孤九剑遇强则强ChatGPT工作提效之在程序开发中的巧劲和指令(创建MySQL语句、PHP语句、Javascript用法、python的交互)ChatGPT工作提效之生成开发需求和报价单并转为Excel格式ChatGPT工作提效之小鹅通二次开发批量API对…

人体姿态估计与MMPose

姿态估计:从给定的图像中识别人脸、手部、身体等关键点 输入:图像I 输出:所有关键点的像素坐标 2D姿态估计:在图像上定位人体关键点的坐标 基本思路: 1.将关键点检测建模为回归问题,让模型直接回归关键点…

共享打印机,报错0x0000011b不重装系统如何能使用(教程)

连接共享打印机0x0000011b共享打印机报错大家都遇到过吧?下面介绍个小方法供大家参考一下。 1.下载对应的打印机驱动并安装 2.1手动添加打印机 2.2点击‘我需要的打印机不在列表中’ 2.3选择手动设置添加本地打印机 2.4创建新的端口,如图所示 这里输入共…

I.MX6ull CP15协处理器

CP15 CP15协处理器是ARM处理器中一门重要的协处理器,主要用来控制 cache、TCM( tiny code memory)和存储器管理。 CP15协处理器包含16个32位的寄存器,其编号为0~15,其中CP15寄存器0是预留的,所以CP15实际有…