微服务电商项目发布重大更新,打造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项目中的全局异常处理.为什么要做这件事呢? ...
随机推荐
- 作为一个Java程序员连简单的分页功能都会写,你好意思嘛!
今天想说的就是能够在我们操作数据库的时候更简单的更高效的实现,现成的CRUD接口直接调用,方便快捷,不用再写复杂的sql,带吗简单易懂,话不多说上方法 1.Utils.java工具类中的方法 1 /* ...
- WebApis中DOM执行机制的认识
1.1. 节点操作 1.1.1 删除节点 node.removeChild() 方法从 node节点中删除一个子节点,返回删除的节点. <button>删除</button> ...
- Python爬虫实战 批量下载高清美女图片
彼岸图网站里有大量的高清图片素材和壁纸,并且可以免费下载,读者也可以根据自己需要爬取其他类型图片,方法是类似的,本文通过python爬虫批量下载网站里的高清美女图片,熟悉python写爬虫的基本方法: ...
- Vue.use() 不一样的发现
1.Vue.use()首先是可以接受一个函数 var a = function () { console.log(a)}Vue.use(a) // 没有问题会输出a 2.当这个a上面有install属 ...
- vant ui TabBar封装
TabBar.vue基本上是放在App.vue里面,都存在 <template> <div id="app"> <home-tab-bar :tar- ...
- 2 http
response.write(string|buffer)可以调用0-n次 response.end(string|buffer) 方法.必须调用一次 response.setHeader('Con ...
- Oracle12C安装配置文档
Oracle12C安装配置文档 Oracle12C安装配置文档 准备软件: 开始安装: 打开从官网下载下来的两个压缩包,进行解压 打开解压好的后缀为2of2的文件夹找到路径为database下的“ ...
- Mybatis源码学习第八天(总结)
源码学习到这里就要结束了; 来总结一下吧 Mybatis的总体架构 这次源码学习我们,学习了重点的模块,在这里我想说一句,源码的学习不是要所有的都学,一行一行的去学,这是错误的,我们只需要学习核心,专 ...
- 20190923-03Linux时间日期类 000 011
1.基本语法 date [OPTION]... [+FORMAT] 2.选项说明 表1-20 选项 功能 -d<时间字符串> 显示指定的“时间字符串”表示的时间,而非当前时间 -s< ...
- Python中自己不熟悉的知识点记录
重点笔记: Python 它是动态语言 动态语言的定义:动态编程语言 是 高级程序设计语言 的一个类别,在计算机科学领域已被广泛应用.它是一类 在 运行时可以改变其结构的语言 : ...