SpringCloud第二篇(如何将大型项目拆分成微服务项目)


这一章我们从单体架构的优缺点来分析,看看开发大型项目采用单体架构存在哪些问题,而微服务架构又是如何解决这些问题的

一、认识微服务

单体架构
单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署。
在这里插入图片描述
优点:
架构简单
部署成本低
缺点:
团队协作成本高
系统发布效率低
系统可用性差
总结:
单体架构适合开发功能相对简单,规模较小的项目。

微服务
微服务架构,是服务化思想指导下的一套最佳实践架构方案。服务化,就是把单体架构中的功能模块拆分为多个独立项目。
在这里插入图片描述

粒度小
团队自治
服务自治

SpringCloud
SpringCloud是目前国内使用最广泛的微服务框架。官网地址:https://spring.io/projects/spring-cloud
SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,从而提供了良好的开箱即用体验
在这里插入图片描述

二、微服务拆分原则

从拆分目标来说,要做到:
高内聚:每个微服务的职责要尽量单一,包含的业务相互关联度高、完整度高。
低耦合:每个微服务的功能要相对独立,尽量减少对其它微服务的依赖。
从拆分方式来说,一般包含两种方式:
纵向拆分:按照业务模块来拆分
横向拆分:抽取公共服务,提高复用性
在这里插入图片描述

三、模块拆分

1.根据不同功能创建模块

在这里插入图片描述

2.修改配置文件

pom.xml包:根据需求删减部分配置

在这里插入图片描述
application.yaml包
修改端口号

server:
  port: 8081

spring下的文件名与mysql信息

spring:
  application:
    name: item-service
  profiles:
    active: dev
  datasource:
    url: jdbc:mysql://${hm.db.host}:3306/hm-item?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: ${hm.db.pw}

3.搬运包

根据需求将同功能的包组合到一起
在这里插入图片描述

四、远程调用

在拆分的时候,我们发现一个问题:就是购物车业务中需要查询商品信息,但商品信息查询的逻辑全部迁移到了item-service服务,导致我们无法查询。
最终结果就是查询到的购物车数据不完整,因此要想解决这个问题,我们就必须改造其中的代码,把原本本地方法调用,改造成跨微服务的远程调用(RPC,即Remote Produce Call)。
因此,现在查询购物车列表的流程变成了这样:在这里插入图片描述
注入RestTemplate到Spring容器

@Bean
public RestTemplate restTemplate(){
    return new RestTemplate();
}

发起远程调用

public <T> ResponseEntity<T> exchange(
	String url, // 请求路径
	HttpMethod method, // 请求方式
	@Nullable HttpEntity<?> requestEntity, // 请求实体,可以为空
 	Class<T> responseType, // 返回值类型
	Map<String, ?> uriVariables // 请求参数
)

案例:

ResponseEntity<List<ItemDTO>> response= restTemplate.exchange(
                "http://localhost:8081/items?ids={ids}",
                HttpMethod.GET,
                null,
                new ParameterizedTypeReference<List<ItemDTO>>() {},
            Map.of("ids",CollUtil.join(itemIds, ","))
        );
  • 12
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值