写点什么

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

作者:程序知音
  • 2022 年 7 月 27 日
  • 本文字数:1658 字

    阅读完需:约 5 分钟

前阵子我把 mall 项目全面升级了 ,支持了 SpringBoot 2.7.0,相信很多小伙伴已经知道了。最近抽空把它的微服务版本 mall-swarm 也升级了,已支持最新版 SpringCloud&Alibaba,今天来聊聊升级内容和升级过程中遇到的一些问题,希望对大家有所帮助!

技术栈升级

mall-swarm 作为 mall 项目的微服务版本,实现功能与 mall 项目基本一致,只是架构有所不同。所以说 mall 项目中被升级的技术,mall-swarm 基本也升级了,这里挑一些重点的提下,其他升级信息可以参考 mall 项目全面升级了 。

技术版本说明 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 微服务监控

升级过程

这里整理了升级过程中遇到的一些问题,大家可以参考下!

支持 SpringBoot 2.7.0

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

支持 SpringCloud 2021

升级 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 2.1.0

之前项目使用 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 终极权限解决方案升级了!。

Knife4j 升级

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

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


微服务监控升级

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


部署文档更新

mall-swarm 项目的部署文档也同步更新了,具体可以参考以下链接。

  • mall-swarm 在 Windows 环境下的部署

https://www.macrozheng.com/mall/deploy/mall_swarm_deploy_windows.html

  • mall-swarm 在 Linux 环境下的部署(基于 Docker 容器)

https://www.macrozheng.com/mall/deploy/mall_swarm_deploy_docker.html

运行效果演示

有的小伙伴可能还没了解过这个项目,这里展示下 mall-swarm 微服务电商项目的演示效果。

  • 使用 Nacos 作为注册配置中心;


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


  • 微服务应用监控系统;



  • 微服务日志收集系统;


  • 微服务应用容器管理。



总结

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

项目源码地址

开源不易,觉得项目有帮助的小伙伴点个 Star 支持下吧!

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

用户头像

程序知音

关注

还未添加个人签名 2022.06.25 加入

还未添加个人简介

评论

发布
暂无评论
Mall微服务版本全面升级!支持最新版SpringCloud_Java_程序知音_InfoQ写作社区