【2.1】服务拆分--案例Demo

news2024/11/18 21:39:00

服务拆分--案例Demo

  • 服务拆分注意事项:
  • 导入服务拆分Demo
    • 测试结果:
  • 总结

知识内容来自于黑马程序员视频教学和百度百科。博主仅作笔记整理便于回顾学习。如有侵权请私信我。


服务拆分注意事项:

比如现在有一个需求,是查询订单,同时把订单里关联的用户信息,商品信息都查询过来。
在这里插入图片描述
如果是以前的开发模式,是写一个方法去查订单,在订单查询过程中得到了用户Id,再去数据库里把用户查出来,得到商品Id,再去数据库里把商品查出来。
那么这些功能全部写到了订单模块里,这样是完全违背了微服务原则。

微服务拆分的目的就是单一职责。一个微服务只做自己相关的事,如果订单模块要查询用户,商品,也就是所有模块用到什么查询什么,那么拆分就没有意义了。同时,订单模块需要查询用户,用户模块也需要查询用户,这相当于一种重复开发。
所以,微服务拆分应该切记:

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

导入服务拆分Demo

使用的资料可以添加黑马程序员获取源码。

  • 使用工程:cloud-demo

  • 项目结构:
    在这里插入图片描述
    cloud-demo: 负责管理整个项目的依赖。
    order-service: 做订单相关功能。
    user-service: 做用户相关功能

  • 将课前资料准备的sql导入数据库中:
    在这里插入图片描述
    – 订单业务查询的表是order表;
    – 用户业务查询的表是user表;
    实际应用时是部署到不同的数据库里,现在是做测试。

导入两个表:
在这里插入图片描述
导入项目:
在这里插入图片描述
之后我在画圈这个地方爆红,检查了一下maven仓库里含有相应的pom文件,发现都包含。
在这里插入图片描述
这个时候点击maven中的重新加载即可;
在这里插入图片描述
之后会弹出一个弹窗询问你是否需要使用service。(不同的idea版本可能提示不同)
点击yes。即可看到这样的内容:
在这里插入图片描述
启动两个服务:
在这里插入图片描述

简要介绍:
在这里插入图片描述
首先cloud-demo是父工程,在父工程里面主要是定义了依赖版本。比如图中springboot版本2.3.9

在这里插入图片描述
定义了:
java版本1.8
spring-cloud版本Hoxton.SR10
mysql版本以及mybatis版本
在这里插入图片描述
user-service的yml文件中可以看到关联的是cloud_user这个数据库,模拟数据分离。

user-service的业务是用户查询,点开UserController
在这里插入图片描述
通过/user/{id}这样一个路径去请求便可实现通过id查询用户。返回的是User对象:
User

业务流程就是service调mapper,mapper写sql。

同样,在order-service中:
在这里插入图片描述
可以看到对应的数据库是cloud_order。
接下来打开对应的接口:
在这里插入图片描述
这里是根据{orderId}查询订单,返回一个order对象。
Order对象
可以看到里面有订单id,price,name,num,userId,user,这就产生了关联。


测试结果:

打开浏览器输入localhost:8080/user/1
在这里插入图片描述
可以看到查到了用户id为1的用户信息。这里的信息对应数据库里的信息。大家注意在yml文件中的数据库密码要改成本地数据库的密码,以及对应版本。

输入localhost:8080/order/101
在这里插入图片描述


总结

  1. 微服务需要根据业务模块拆分,做到单一职责,不要重复开发相同业务。
  2. 微服务可以将业务暴露为接口,供其它微服务使用。
  3. 不同微服务应该有自己独立的数据库。

By–Suki 2022/12/30

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

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

相关文章

国产GPU芯片突破重围,迎来新发展,中国崛起的力量

最近,在GPU芯片领域我们终于迎来新进展,有望突破欧美企业垄断,实现完全国产化。高端GPU芯片对科技发展有着重要作用,广泛应用于云上服务、高密度高性能计算等领域,然而绝大部分GPU芯片市场都被英伟达、AMD、微软等国外…

骨传导耳挂式耳机排名前十名,最好的骨传导耳机推荐

挂耳式的骨传导耳机在佩戴时更舒适以及更加牢固,日常在多种场景使用都能完全兼顾。但是最好的骨传导耳机有哪些呢?还不知道如何选择骨传导耳机,可以看看这五款骨传导耳机~ 1、南卡Runner Pro4骨传导蓝牙耳机 ¥1498 选择骨传导耳机…

Kubernetes那点事儿——控制器Deployment

K8s应用程序生命周期管理——控制器Deployment一、部署应用程序流程二、Deployment控制器1、应用升级、弹性伸缩、回滚、删除2、滚动升级、回滚机制3、定义Deployment前言说到K8s程序的生命周期管理我们不得不提到k8s的控制器。其中Deployment是最为常用的controllers&#xff…

Liga妙谈 | 如何快速甄别、高效响应用户反馈?

敏捷开发说要「拥抱变化」,在充满不确定的环境中,唯一不变的正是变化。面对源源不断的市场反馈和需求变更,敏捷团队应该如何平衡「高效迭代」与「响应用户」的关系,既快又好地完成研发任务,交付业务价值? …

FFmpeg 滤镜详解

FFmpeg Filter 1. 概念介绍 在多媒体处理中,术语滤镜(filter)指的是修改未编码的原始音视频数据帧的一种软件工具。 2. 基本原理 ● 在编码前,ffmpeg可以对raw(真实/原)音频和视频使用libavfilter库中的滤镜进行处理。(非压缩…

骨感传导蓝牙耳机怎么样、骨感传导蓝牙耳机有什么特点

在正文开始前,先跟大家说明一下,骨感传导其实就是我们常说的骨传导,两者是相同的意思,只是表达的文字不太一样。我们可以理解为骨感传导耳机骨传导耳机,那既然是这样,骨传导耳机又是利用什么原理传播声音的…

CentOS搭建web服务器,并内网穿透实现公网访问

在web项目中,部署的web站点需要被外部访问,则需要一个媒介,通过把资源放在这个媒介中,再通过所暴露的端口指向这个站点,当外部访问这个媒介所对应的端口时,媒介指向站点,完成访问,像这种类似的媒介,常用的有tomcat容器、Apache等,这边使用Apache来建搭建。 Apache2 是一种流行…

一节摹课丨做会动的电子贺卡,当懂浪漫的成年人

你正在阅读摹客全新内容栏目【一节摹课】。 本栏目会通过一些有趣的、实用的、好看的、新潮的实操案例,分享摹客“设计12”产品矩阵 —— 「1个协作平台2款设计工具」的具体操作妙计! 带大家一步一步地解锁摹客协作、摹客RP、摹客DT中的大小功能。 一…

非正式全面解析 NebulaGraph 中 Session 管理

NebulaGraph 论坛最近有些讨论帖,各种姿势来问 NebulaGraph Session 管理相关的事情,我寻思这也不是一个法子,还是来写一篇文章来讲述下 NebulaGraph 中的 Session 管理。由于本文设定为非正式的 Session 讲解,所以本文主要分为理…

智能车|直流电机、编码器与驱动器---编码器

智能车|直流电机、编码器与驱动器---编码器编码器编码器简介编码器的工作原理四倍频采集编码器采集程序实现编码器 编码器简介 编码器是一种将角位移或者直线位移转换成一连串电数字脉冲的一种传感器。 可以通过编码器测量电机转动的位移或者速度信息。 编码器按照工作原理…

FTP多目录和多用户配置(用户隔离/虚拟目录)

FTP多目录和多用户配置(用户隔离/虚拟目录) 假设有四个部门分别是user1、user2、user3、admin。要求四个部门都有各自有独立的访问目录,且admin部门可以访问其他部门的文件但不能对其进行修改。 1、创建ftp文件→再创建LocalUser(…

【图像处理OpenCV(C++版)】——3.1几何变换之仿射变换

前言: 😊😊😊欢迎来到本博客😊😊😊 🌟🌟🌟 本专栏主要结合OpenCV和C来实现一些基本的图像处理算法并详细解释各参数含义,适用于平时学习、工作快…

CSS 颜色

文章目录CSS 颜色关键字 & 十六进制 & RGBopacity 透明度RGBA 颜色CSS3 渐变线性渐变径向渐变CSS 颜色 关键字 & 十六进制 & RGB W3C十六色 opacity 透明度 语法 opacity: 数值;说明 在CSS3中,我们可以使用opacity属性来定义元素的透明度。 o…

excel排序求和:如何统计前几名数据合计 下篇

上次咱们说到一个公式SUM(LARGE(B:B,ROW(INDIRECT("1:"&H2)))),其中的ROW(INDIRECT("1:"&H2))这部分如果写成ROW(1:H2)就会报错: 原因也告诉大家了,就是ROW函数的参数只能使用单元格或单元格区域。 因此解决的办…

Java IO流 - 字节流的使用详细介绍

文章目录IO流的基本介绍字节流的使用文件字节输入流创建字节输入流每次读取一个字节每次读取一个数组一次读取全部字节文件字节输出流创建字节输出流写入文件输出流文件拷贝练习IO流的基本介绍 IO流的概述: I 表示intput,是数据从硬盘文件读入到内存的过程&#xf…

频谱分析仪关键性能指标

频谱分析仪关键性能指标 频谱分析仪作为分析仪表,其基本性能要求包含: 1. 频率方面指标: 测量频率范围:反映频谱仪测量信号范围能力; 频率分辨率:反映频谱仪分辨两个频率间隔信号的能力。 2. 幅方面度指标&#x…

银河麒麟(aarch64)安装Qt,报错main.cpp:8:5: error: unknown type name ‘MainWindow‘...

环境: 版本:银河麒麟桌面操作系统V10(SP1) 内核:Linux 5.4.18-35-generic CPU:Phytium,D2000/8 终端输入 uname -m 查看 架构 aarch64 在商店安装Qt, 安装完成后 工具-选项-kits构…

SAP ABAP——SAP简介(五)【ABAP的前世今生和未来】

💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后…

kali安装cobaltstrike详细教程

下载cobaltstrike-linux版本,此下载链接提供4.3,4.4,4.5三个版本https://download.csdn.net/download/weixin_59679023/87354658 xshell上传至kali,解压 unzip cobaltstrike 进入cobaltstrike目录,ls查看如下 ls 给cs的服务端teamserver和客户端start.sh执行权限 chmod …

【计算机图形学入门】笔记8:Shading 2着色(着色频率、图形管线、纹理映射)

08Shading 2着色(着色频率、图形管线、纹理映射)前置知识1.Specular Term 高光2.Ambient Term 环境光照项3.最终的成像公式2.着色频率1.Flat shading2.Gouraud shading3.Phong shading4.那么如何计算逐顶点法线?5.如何定义逐像素的法线&#…