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

本文介绍了微服务拆分的案例,通过一个查询订单同时获取用户和商品信息的需求,阐述了微服务拆分的注意事项,包括单一职责原则和数据独立性。文中使用了cloud-demo项目作为示例,展示了order-service和user-service的拆分,并提供了测试结果。总结强调了避免重复开发和独立数据库的重要性。
摘要由CSDN通过智能技术生成

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


1 服务拆分注意事项:

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

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

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

2 导入服务拆分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,这就产生了关联。


2.1 测试结果:

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

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


3 总结

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

By–Suki 2022/12/30

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值