当前位置: 首页 > news >正文

微服务拆分 SpringCloud

拆分原则

什么时候拆分

  1. 大多数小型项目: 一般是先采用单体架构,随着用户规模扩大、业务复杂后再逐渐拆分为微服务架构(前易后难)。
  2. 确定的大型项目: 资金充足,目标明确,可以直接选择微服务架构,避免后续拆分的麻烦(前难后易)。

怎么拆分

拆分目标:

  • 高内聚:每个微服务的职责要尽量单一,包含的业务相互关联度高、完整度高。
  • 低耦合:每个微服务的功能要相对独立,尽量减少对其它微服务的依赖,或者依赖接口的稳定性要强。

拆分方式:

  • 纵向拆分:按照业务模块来拆分。
  • 横向拆分:抽取公共服务,提高复用性。

当然,由于黑马商城并不是一个完整的项目,其中的短信发送、风控管理并没有实现,这里就不再考虑了。而其它的业务按照纵向拆分,可以分为以下几个微服务:

  • 用户服务
  • 商品服务
  • 订单服务
  • 购物车服务
  • 支付服务

拆分服务

在这里插入图片描述
工程结构有两种:

  • 独立Project
    在这里插入图片描述
  • Maven聚合(使用最多)
    在这里插入图片描述

拆分操作

在这里插入图片描述

新建一个module,命名为item-service

  1. 由于我已经新建过了这个module,所以会显示存在,这是正常的。
    在这里插入图片描述
  2. 将hm-service中的controller domain mapper service还有resource中的配置文件拷贝到item-service中,注意只需要拷贝跟item-service中的文件就行,如果关联其他文件,那就一并拷贝下来。注意:如果import包爆红的话,那可能是正常的。只需要把包删了,重新导入一下就行。
    在这里插入图片描述
    application.yaml:
server:port: 8081
spring:application:name: item-serviceprofiles:active: devdatasource:url: jdbc:mysql://${hm.db.host}:3306/hm-item?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghaidriver-class-name: com.mysql.cj.jdbc.Driverusername: rootpassword: ${hm.db.pw}
mybatis-plus:configuration:default-enum-type-handler: com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandlerglobal-config:db-config:update-strategy: not_nullid-type: auto
logging:level:com.hmall: debugpattern:dateformat: HH:mm:ss:SSSfile:path: "logs/${spring.application.name}"
knife4j:enable: trueopenapi:title: 黑马商城接口文档description: "黑马商城服务接口文档"email: zhanghuyi@itcast.cnconcat: 虎哥url: https://www.itcast.cnversion: v1.0.0group:default:group-name: defaultapi-rule: packageapi-rule-resources:- com.hmall.item.controller
hm:jwt:location: classpath:hmall.jksalias: hmallpassword: hmall123tokenTTL: 30mauth:excludePaths:- /search/**- /users/login- /items/**- /hi
# keytool -genkeypair -alias hmall -keyalg RSA -keypass hmall123 -keystore hmall.jks -storepass hmall123

application-dev.yaml

hm:db:host: mysqlpw: 123

application-local.yaml

hm:db:host: 10.105.2.124 # 修改为你自己的虚拟机IP地址pw: 123 # 修改为docker中的MySQL密码
  1. 操作虚拟机中的数据库
    参考这两篇博客:
    如何在docker中的mysql容器内执行命令与执行SQL文件
    先把要执行的sql文件导入/root根目录下,然后进行以下操作:
    在这里插入图片描述
    将idea与虚拟机docker中的mysql数据库连接
    在这里插入图片描述
    我的密码是123(mark一下,我怕我忘了)
  2. 测试一下
    在这里插入图片描述

相关文章:

  • 渲染学进阶——机械动力的渲染(3)
  • 对微服务的了解
  • 准确识别检索头,提高大模型长上下文能力
  • MyBatis与JPA有哪些不同?
  • 【MATLAB去噪算法】基于VMD联合小波阈值去噪算法(第六期)
  • CNN卷积神经网络实战(1)
  • 执行 PGPT_PROFILES=ollama make run下面报错,
  • 记录:安装VMware、Ubuntu、ROS2
  • Android实例项目【智能家居系统】实现数据库登录注册+动画效果+网页跳转+短信发送!!!
  • 65、【OS】【Nuttx】任务休眠与唤醒:nxsig_clockwait
  • BeikeShop - 一个开源、用户友好的跨境电子商务平台
  • [学习] 深入解析Z变换:从数学基础到工程应用
  • 基于高性能的光频域反射(OFDR)分布式光纤传感解决方案
  • 爬虫技术:从基础到高级,探索数据抓取的奥秘
  • 写实数字人课程制作平台:教育科技的未来已来
  • 在劲牌工厂,探寻一瓶草本酒的科技之旅
  • C++ 继承特性
  • 3-19 WPS JS宏调用工作表函数(JS 宏与工作表函数双剑合壁)学习笔记
  • skynet源码学习-skynet_env守护进程
  • 如何用conda 安装pytorch
  • 网站互点都是怎么做的/seo是什么技术
  • wordpress简化注册/seo推广营销靠谱
  • 招聘网站开发设计/网站百度手机端排名怎么查询
  • 静态网站的设计方案/厨师培训
  • 天津哪里有做网站的/企业seo排名哪家好
  • 广州外贸营销型网站/竞价推广工具