cloudmall跨境电商(Mall微服务版本全面升级!支持最新版SpringCloud)
运营那些事儿 跨境电商 2023-06-26 08:43:54 · 热度999

Mall微服务版本全面升级!支持最新版SpringCloud

cloudmall跨境电商(Mall微服务版本全面升级!支持最新版SpringCloud)

技术版本说明Spring CloudHoxton.SR5->2021.0.3微服务框架Spring Cloud Alibaba2.2.0->2021.0.3微服务框架Spring Boot2.3.0->2.7.0容器+MVC框架Spring Security Oauth22.2.2->2.2.5认证和授权框架MyBatis3.4.6->3.5.9ORM框架Knife4j2.0.4->3.0.3文档生产工具Nacos1.3.1->2.1.0注册中心及配置中心Spring Boot Admin2.3.0->2.7.0微服务监控

由于mall-swarm项目使用了Spring Cloud Gateway+Oauth2实现统一认证和鉴权的权限解决方案,所以说在mall项目中出现的循环依赖问题,这里并没有出现。升级SpringBoot 2.7.0还是挺顺利的,默认直接支持了!

升级SpringCloud 2021以后,Spring Cloud中有一个重要的组件被弃用了,那就是作为负载均衡组件的Ribbon。在有服务间调用需求的服务中,比如网关服务中,我们需要加入LoadBalancer依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>

否则在服务间调用时,会返回Service Unavailable错误信息。

{
    "timestamp": "2022-06-28T02:36:31.680+00:00",
    "path": "/auth/oauth/token",
    "status": 503,
    "error": "Service Unavailable",
    "requestId": "c480cefa-1"
}

之前项目使用Nacos作为注册中心和配置中心,这次把版本从1.3.1升级到了最新版2.1.0,使用上面基本没改变,除了在Windows上启动Nacos时需要添加standalone参数。

startup.cmd -m standalone

下面是使用Nacos作为配置中心的截图。

升级了微服务权限解决方案,适配最新版Spring Cloud,实现思路:mall-auth认证服务负责统一认证,mall-gateway网关服务负责校验认证和鉴权,其他API服务(如mall-admin、mall-portal)则负责处理自己的业务逻辑。权限相关的逻辑只存在于认证服务和网关服务中,其他服务只是单纯地提供服务而没有任何权限相关逻辑。具体可以参考支持Nacos 2.1.0!这套Spring Cloud Gateway+Oauth2终极权限解决方案升级了!。

cloudmall跨境电商(Mall微服务版本全面升级!支持最新版SpringCloud)

升级了Knife4j的版本,从2.x升级到了3.x,由于Knife4j基本上就是换了皮肤的Swagger,所以只要解决之前Swagger升级的问题即可,具体可以参考升级 SpringBoot 2.6.x 版本后,Swagger 没法用了! 。

来看下新版Knife4j的页面,和之前的版本基本没啥区别。

mall-swarm使用Spring Boot Admin作为微服务监控,升级后用法与之前基本一致。

  • mall-swarm在Windows环境下的部署
  • mall-swarm在Linux环境下的部署(基于Docker容器)
  • 使用Nacos作为注册配置中心;

  • 使用Knife4j作为API接口文档工具;

  • 微服务应用监控系统;

  • 微服务日志收集系统;

  • 微服务应用容器管理。

今天分享了一下mall-swarm项目的升级内容和升级过程中遇到的一些问题,基本能平滑过渡。自从改用日期作为版本号后,总感觉Spring Cloud的版本号看着有点迷糊,而且目前最新稳定版是2021,2022版本估计还在路上。

https://github.com/macrozheng/mall-swarm

cloudmall跨境电商(Mall微服务版本全面升级!支持最新版SpringCloud)