前阵子我把mall项目全面升级了 ,支持了SpringBoot 2.7.0,相信很多小伙伴已经知道了。最近抽空把它的微服务版本SpringCloud实战电商项目mall-swarm
也升级了,已支持最新版SpringCloud&Alibaba,今天来聊聊升级内容和升级过程中遇到的一些问题,希望对大家有所帮助!
mall-swarm
(8.8k+star)地址:https://github.com/macrozheng/mall-swarm技术栈升级
mall-swarm
作为mall项目的微服务版本,实现功能与mall项目基本一致,只是架构有所不同。所以说mall项目中被升级的技术,mall-swarm
基本也升级了,这里挑一些重点的提下,其他升级信息可以参考mall项目全面升级了 。
技术 | 版本 | 说明 |
---|---|---|
Spring Cloud | Hoxton.SR5->2021.0.3 | 微服务框架 |
Spring Cloud Alibaba | 2.2.0->2021.0.3 | 微服务框架 |
Spring Boot | 2.3.0->2.7.0 | 容器+MVC框架 |
Spring Security Oauth2 | 2.2.2->2.2.5 | 认证和授权框架 |
MyBatis | 3.4.6->3.5.9 | ORM框架 |
Knife4j | 2.0.4->3.0.3 | 文档生产工具 |
Nacos | 1.3.1->2.1.0 | 注册中心及配置中心 |
Spring Boot Admin | 2.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依赖:
org.springframework.cloud
spring-cloud-starter-loadbalancer
否则在服务间调用时,会返回
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版本估计还在路上。项目源码地址
开源不易,觉得项目有帮助的小伙伴点个【mall学习教程|Mall电商实战项目微服务版本全面升级,支持最新版SpringCloud,权限解决方案升级...】https://github.com/macrozheng/mall-swarmStar
支持下吧!
推荐阅读
- 【docker专栏8】使用IDEA远程管理docker镜像及容器服务
- QuickFIX|QuickFix Java 讲解(四)服务器的搭建与解析
- QuickFIX|QuickFix Java 讲解(五)消息的收发与查看
- 远程互动会议平台是什么()
- java框架|SpringBoot入门(九)数据访问
- vue|Vue+springboot前后端分离实现简单的注册登录
- Spring|Spring Boot(十一)--------整合Druid
- Java|SpringBoot2(五)(数据访问)
- 数据库|太强了!这款轻量级的数据库中间件完美解决了Spring Boot 中分库分表问题