微服务电商项目发布重大更新,打造Spring Cloud最佳实践!
Spring Cloud实战电商项目mall-swarm地址:转发+关注 私信我获取地址
系统架构图
系统架构图
项目组织结构
mall├── mall-common-- 工具类及通用代码模块├── mall-mbg-- MyBatisGenerator生成的数据库操作代码模块├── mall-auth-- 基于Spring Security Oauth2的统一的认证中心├── mall-gateway-- 基于Spring Cloud Gateway的微服务API网关服务├── mall-monitor-- 基于Spring Boot Admin的微服务监控中心├── mall-admin-- 后台管理系统服务├── mall-search-- 基于Elasticsearch的商品搜索系统服务├── mall-portal-- 移动端商城系统服务├── mall-demo-- 微服务远程调用测试服务└── config-- 配置中心存储的配置
更新内容一览
集成Spring Cloud Alibaba,注册中心改用Nacos;
权限功能改用Oauth2,实现统一认证和鉴权;
集成Knife4j,实现网关聚合API文档;
升级Spring Cloud Hoxton.SR5;
升级Spring Boot 2.3.0.RELEASE;
升级Elasticsearch 7.6.2;
ELK日志收集功能完善,采用分场景收集日志的方式;
Window和Linux部署文档更新。
更新内容介绍
Spring Cloud Alibaba
集成了Spring Cloud Alibaba,注册中心和配置中心都改用了Nacos。之前使用的注册中心是Eureka,已经进入维护期不再更新了,之前使用的配置中心是Spring Cloud Config,需要使用消息队列才能实现配置刷新。Nacos既可以当注册中心又可以当配置中心,采用Netty保持TCP长连接实现配置刷新,拥有方便的管理界面,所以就改为使用Nacos了。原来的mall-registry和mall-config模块已被移除,在config文件夹中存放了Nacos中的配置,启动项目时需要导入到Nacos中去。
Oauth2
之前项目中有个mall-security的模块,我把它称为安全模块。所有需要权限校验的模块都需要依赖它,有点工具包的感觉,在微服务中使用总感觉不伦不类。
这次改为使用Oauth2,添加了认证中心mall-auth,实现统一认证和鉴权,更加符合微服务权限控制,具体可以参考《微服务权限终极解决方案,Spring Cloud Gateway + Oauth2 实现统一认证和鉴权!》。
由于项目中存在两套不同的用户体系,后台用户和前台用户,认证中心对多用户体系也有所支持,访问认证中心时使用不同的client_id和client_secret即可区分不同用户体系,后台用户使用admin-app:123456,前台用户使用portal-app:123456。
对原来的登录接口做了兼容处理,分别会从内部调用认证中心获取Token,依然可以使用。
Knife4j
之前每个微服务都有自己的API文档地址,需要单独访问。这次把所有微服务的API文档都聚合到了网关上,统一了访问入口,直接访问网关的API文档地址即可,具体可以参考《微服务聚合Swagger文档,这波操作是真的香!》。
Spring Cloud Hoxton.SR5
Spring Cloud 和SpringBoot有着版本对应关系,升级到SpringBoot 2.3.0正好对应了该版本。
Window和Linux部署文档更新
由于部分组件的升级及项目结构的改变,部署文档也更新了,部署有问题的参考最新文档!
mall-swarm在Windows环境下的部署:http://www.macrozheng.com/#/deploy/mall_swarm_deploy_windows
mall-swarm在Linux环境下的部署(基于Docker容器):http://www.macrozheng.com/#/deploy/mall_swarm_deploy_docker
其他
运行效果一览
查看注册中心服务信息;
image
监控中心应用信息;
image
image
image
API文档信息;
image
日志收集系统信息;
image
可视化容器管理;
image
image
项目地址
如此给力的微服务电商实战项目,赶紧点个Star支持下吧!
转发+关注 私信我获取地址

微服务电商项目发布重大更新,打造Spring Cloud最佳实践!的更多相关文章
- Java 18套JAVA企业级大型项目实战分布式架构高并发高可用微服务电商项目实战架构
Java 开发环境:idea https://www.jianshu.com/p/7a824fea1ce7 从无到有构建大型电商微服务架构三个阶段SpringBoot+SpringCloud+Solr ...
- SpringBoot微服务电商项目开发实战 --- 模块版本号统一管理及Redis集成实现
上一篇文章总结了基于SpringBoot实现分布式微服务下的统一配置.分环境部署配置.以及服务端模块的分离(每一个提供者就是一个独立的微服务).微服务落地.Dubbo整合及提供者.消费者的配置实现.本 ...
- Spring Boot微服务电商项目开发实战 --- 基础配置及搭建
根据SpringBoot实现分布式微服务项目近两年的开发经验,今天决定开始做SpringBoot实现分布式微服务项目的系列文章,帮助其他正在使用或计划使用SringBoot开发的小伙伴们.本次系列文章 ...
- SpringBoot微服务电商项目开发实战 --- api接口安全算法、AOP切面及防SQL注入实现
上一篇主要讲了整个项目的子模块及第三方依赖的版本号统一管理维护,数据库对接及缓存(Redis)接入,今天我来说说过滤器配置及拦截设置.接口安全处理.AOP切面实现等.作为电商项目,不仅要求考虑高并发带 ...
- Spring Boot微服务电商项目开发实战 --- 分布式开发要避的那些坑
今天已经进入第七讲了,整个微服务架构的搭建工作也基本完成.那到目前为止究竟使用了那些技术及实现了什么功能呢?我们先回顾一下. 使用的技术:SpringBoot.Dubbo.Zookeeper.Redi ...
- SpringBoot微服务电商项目开发实战 --- Redis缓存雪崩、缓存穿透、缓存击穿防范
最近已经推出了好几篇SpringBoot+Dubbo+Redis+Kafka实现电商的文章,今天再次回到分布式微服务项目中来,在开始写今天的系列五文章之前,我先回顾下前面的内容. 系列(一):主要说了 ...
- Spring Boot微服务电商项目开发实战 --- 多环境部署配置、端口号统一配置及Dubbo提供者消费者实现
昨天已经搭建好了SpringBoot基于Maven的基础父子级项目,今天开始进入项目分模块及分布式实现.首先我们基于昨天的项目,在父级工程下建lyn-sys,lyn-customer,lyn-good ...
- SpringBoot微服务电商项目开发实战 --- 分布式文件系统实现
SpringBoot分布式开发系列文章已经持续了一段时间了,每一篇都有核心内容讲给大家.比如:分环境部署配置及服务端口号统一配置,子模块版本号管理及第三方jar依赖管理,单点登录实现,接口安全(签名+ ...
- SpringBoot微服务电商项目开发实战 --- 全局异常处理
上一篇文章讲了Redis缓存的安全防范及Kafka的接入及消息实现,今天接着前面的内容基础说说项目的优化和基础配置,今天要讲的内容主要是Spring Boot项目中的全局异常处理.为什么要做这件事呢? ...
随机推荐
- vue组件获取和vue-cli的基本了解
Vue获取组件的一些方法 this.$refs.xxx 给标签绑定ref属性,获取的是当前DOM对象 给组件绑定ref属性,获取的是组件实例对象 this.$parent 获取当前组件的父组件,为一个 ...
- Node.js 学习笔记之四:使用数据库
这部分示例将示范SQLite3.MongoDB这两种不同类型的数据库在 Node.js 中的使用方法.首先,我们要在code目录下执行mkdir 06_database命令来创建用于存放这一组示例的目 ...
- Android开发,java开发程序员常见面试题,求100-200之间的质数,java逻辑代码
public class aa{ public static void main (String args []){ //author:qq986945193 for (int i = 100;i&l ...
- USB Key
随着互联网和电子商务的发展,USB Key作为网络用户身份识别和数据保护的“电子钥匙”,正在被越来越多的用户所认识和使用.本文对USB Key的产生和未来的发展趋势作了一个简单的介绍. 目前市场上见到 ...
- laravel5Eloquent模型与数据表的创建
下面是有关管理员模型与表的创建 生成模型时同时生成数据库迁移文件 在生成的迁移文件中添加字段 运行命令行生成数据表 命令进行混合运用 生成工厂文件,数据填充文件 工厂模型代码 数据填充文件代码 数据填 ...
- Left Mouse Button (bfs)
Mine sweeper is a very popular small game in Windows operating system. The object of the game is to ...
- php反序列化总结与学习
基础知识: 1.php类与对象 2.魔术函数 3.序列化方法 类与对象 <?php class test{ public $var = "hello world"; publ ...
- 解读AngularJS的setupModuleLoader函数
http://www.cnblogs.com/whitewolf/p/angular-module-declare-and-get.html 看了上面这篇文章,自己读了一下代码,以下是个人理解,如有请 ...
- Zabbix 5.0切换中文语言小结
最近测试Zabbix 5.0,去修改语言时发现不能选择"Chinese(zh_CN)",这个选项在下拉框中是灰色的(无法选择).提示"You are not able t ...
- ES6特性整理
ESMAScript6.0 ES6 兼容 IE10+ .Chrome.Firefox 要想兼容IE10以下的有两种方法: 用 babel 工具 borwer.js ,在 script 标签里添加 ty ...