GitHub上最火的SpringCloud微服务商城系统项目,附全套教程
项目介绍
mall-swarm是一套微服务商城系统,采用了 Spring Cloud Greenwich、Spring Boot 2、MyBatis、Docker、Elasticsearch等核心技术,同时提供了基于Vue的管理后台方便快速搭建系统。mall-swarm在电商业务的基础集成了注册中心、配置中心、监控中心、网关等系统功能。
系统架构图
组织结构
mall
├── mall-common -- 工具类及通用代码模块
├── mall-mbg -- MyBatisGenerator生成的数据库操作代码模块
├── mall-security -- 封装SpringSecurity+JWT的安全认证的模块
├── mall-registry -- 基于Eureka的微服务注册中心
├── mall-config -- 基于Spring Cloud Config的微服务配置中心
├── mall-gateway -- 基于Spring Cloud Gateway的微服务API网关服务
├── mall-monitor -- 基于Spring Boot Admin的微服务监控中心
├── mall-admin -- 后台管理系统服务
├── mall-search -- 基于Elasticsearch的商品搜索系统服务
├── mall-portal -- 移动端商城系统服务
└── mall-demo -- 微服务远程调用测试服务
项目地址及项目教程
添加我的VX:tkzl6666 即可获得《项目地址及项目教程》
技术选型
后端技术
前端技术
环境搭建
开发环境搭建
mall-swarm中使用到的环境和mall项目中大致相同,具体可以查看mall在Windows环境下的部署。
简易环境搭建流程:
- 安装IDEA并导入项目源码;
- 安装MySql,创建一个mall数据库,并导入/document/sql/mall.sql文件;
- 安装Redis、Elasticsearch、MongoDB、RabbitMQ等环境。
项目部署
mall-swarm项目启动有先后顺序,大家要按照以下顺序启动。
启动注册中心mall-registry
- 直接运行com.macro.mall.MallRegistryApplication的main函数即可;
- 运行完成后可以通过注册中心控制台查看:http://localhost:8001
启动配置中心mall-config
- 直接运行com.macro.mall.MallConfigApplication的main函数即可;
- 访问以下接口获取mall-admin在dev环境下的配置信息:http://localhost:8301/master/admin-dev.yml
启动监控中心mall-monitor
- 直接运行com.macro.mall.MallMonitorApplication的main函数即可;
- 运行完成后可以通过监控中心控制台查看:http://localhost:8101
- 输入账号密码macro:123456可以登录查看。
启动网关服务mall-gateway
- 直接运行com.macro.mall.MallGatewayApplication的main函数即可;
- 访问以下接口获取动态路由规则:http://localhost:8201/actuator/gateway/routes
启动后台管理服务mall-admin
- 直接运行com.macro.mall.MallAdminApplication的main函数即可;
- 通过mall-gateway网关服务访问接口文档:http://localhost:8201/mall-admin/swagger-ui.html
- 登录接口地址:http://localhost:8201/mall-admin/admin/login
- 访问登录接口获取到token后放入认证的头信息即可正常访问其他需要登录的接口:
启动前台服务mall-portal
- 直接运行com.macro.mall.portal.MallPortalApplication的main函数即可;
- 通过mall-gateway网关服务访问接口文档:http://localhost:8201/mall-portal/swagger-ui.html
- 登录接口地址:http://localhost:8201/mall-portal/sso/login
- 调用需要登录的接口方式同mall-admin。
启动搜索服务mall-search
- 直接运行com.macro.mall.search.MallSearchApplication的main函数即可;
- 通过mall-gateway网关服务访问接口文档:http://localh
启动测试服务mall-demo
- 直接运行com.macro.mall.MallAdminApplication的main函数即可;
- 通过mall-gateway网关服务访问接口文档:http://localhost:8201/mall-demo/swagger-ui.html
- 可以通过调用FeignAdminController、FeignPortalController、FeignSearchController来测试使用Feign的远程调用功能。
效果展示
- 注册中心服务信息:
监控中心服务概览信息:
- 监控中心单应用详情信息:
扩展解决方案
- 如果想使用Consul作为注册及配置中心的话请参考:Spring Cloud Consul:服务治理与配置中心
- 如果想使用Nacos作为注册及配置中心的话请参考:Spring Cloud Alibaba:Nacos 作为注册中心和配置中心使用
- 分布式事务解决方案请参考:使用Seata彻底解决Spring Cloud中的分布式事务问题!
- ELK日志收集系统的搭建请参考:SpringBoot应用整合ELK实现日志收集。
GitHub上最火的SpringCloud微服务商城系统项目,附全套教程的更多相关文章
- 史上最简单的springcloud微服务入门实例,满足企业日常需求,开箱即用,工资翻倍不是梦
在传统的IT行业软件大多都是各种独立系统的堆砌,这些系统的问题总结来说就是扩展性差,可靠性不高,维护成本高.到后面引入了SOA服务化,但是,由于 SOA 早期均使用了总线模式,这种总线模式是与某种技术 ...
- SpringCloud微服务学习笔记
SpringCloud微服务学习笔记 项目地址: https://github.com/taoweidong/Micro-service-learning 单体架构(Monolithic架构) Mon ...
- .NET Core微服务 权限系统+工作流(二)工作流系统
一.前言 接上一篇 .NET Core微服务 权限系统+工作流(一)权限系统 ,再来一发 工作流,我在接触这块开发的时候一直好奇它的实现方式,翻看各种工作流引擎代码,探究其实现方式,个人总结出来一个核 ...
- IDEA 集成 Docker 插件实现一键远程部署 SpringBoot 应用,无需三方依赖,开源微服务全栈项目有来商城云环境的部署方式
一. 前言 最近有些童鞋对开源微服务商城项目 youlai-mall 如何部署到线上环境以及项目中 的Dockerfile 文件有疑问,所以写了这篇文章做个答疑以及演示完整的微服务项目发布到线上的流程 ...
- Devops 开发运维高级篇之Jenkins+Docker+SpringCloud微服务持续集成(上)
Devops 开发运维高级篇之Jenkins+Docker+SpringCloud微服务持续集成(上) Jenkins+Docker+SpringCloud持续集成流程说明 大致流程说明: 1) 开发 ...
- 【微服务】之三:从零开始,轻松搞定SpringCloud微服务-配置中心
在整个微服务体系中,除了注册中心具有非常重要的意义之外,还有一个注册中心.注册中心作为管理在整个项目群的配置文件及动态参数的重要载体服务.Spring Cloud体系的子项目中,Spring Clou ...
- 【微服务】之四:轻松搞定SpringCloud微服务-负载均衡Ribbon
对于任何一个高可用高负载的系统来说,负载均衡是一个必不可少的名称.在大型分布式计算体系中,某个服务在单例的情况下,很难应对各种突发情况.因此,负载均衡是为了让系统在性能出现瓶颈或者其中一些出现状态下可 ...
- 【微服务】之五:轻松搞定SpringCloud微服务-调用远程组件Feign
上一篇文章讲到了负载均衡在Spring Cloud体系中的体现,其实Spring Cloud是提供了多种客户端调用的组件,各个微服务都是以HTTP接口的形式暴露自身服务的,因此在调用远程服务时就必须使 ...
- 【微服务】之六:轻松搞定SpringCloud微服务-API网关zuul
通过前面几篇文章的介绍,我们可以轻松搭建起来微服务体系中比较重要的几个基础构建服务.那么,在本篇博文中,我们重点讲解一下,如何将所有微服务的API同意对外暴露,这个就设计API网关的概念. 本系列教程 ...
随机推荐
- PowerShell创建参考窗口
背景 平常我们经常遇到这样一个问题,在使用一个窗口工作时常常需要参考其他窗口的文字或图片,此时就需要频繁切换窗口:或者是看视频时需要参考前面进度的画面:或者是阅读或写文档时需要参考其他位置的文字,这时 ...
- idea 项目启动console卡在Connected to the target VM, address: '127.0.0.1:51140', transport: 'socket'不动了
- [Qt2D绘图]-03坐标系统之坐标变换
大纲: 基本变换 介绍和常用API 窗口-视口转换 窗口 视口 让窗口和视口维持相同宽高比来防止变形 基本变换 默认 ...
- 使用 forever 启动 vue 需要注意的问题
forever 是 nodejs 生态中一个用来永久挂起一个应用(当这个应用崩溃时能自己重启)的应用(库). 但用他启动vue的时候必须注意一个问题: 在哪个路径启动vue,就在哪个路径启动forev ...
- 一起学Blazor WebAssembly 开发(2)
上篇文章讲了Blazor的两种模式的区别及各自的使用场景,本篇就开始学习WebAssembly模式,本篇主要学习的是创建项目及认识项目结构: 创建项目 选择Blazor应用 选择WebAssembly ...
- 一文说通C#中的异步编程
天天写,不一定就明白. 又及,前两天看了一个关于同步方法中调用异步方法的文章,里面有些概念不太正确,所以整理了这个文章. 一.同步和异步. 先说同步. 同步概念大家都很熟悉.在异步概念出来之前,我 ...
- 大一寒假我在一个oj网站只刷了这些题从此入门了绝大部分通用算法
如果你想入门算法,那么我这篇文章也许可以帮到你. 先说点题外话.这是在一个不冷不热的寒假,照理来说寒假应该很冷,但这个寒假是真的舒服.这样舒服的寒假学习似乎是一件不可能的事情,所以我继续我的游戏生涯, ...
- json互相转换
C#的后台 json转换为对象 JavaScriptSerializer js = new JavaScriptSerializer(); 对象 resacc = js.Deserialize< ...
- 将ip加入到防火墙
五分钟内访问次数最多的ip加入到防火墙 #!/bin/bash cat /etc/httpd/logs/access_log|grep `date -d '1-minute-ago' +%d/%b/% ...
- Java 匿名对象、内部类
一.匿名对象 1.概念 匿名对象是指创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量. public class Person{ public void eat(){ System.o ...