# EC-System **Repository Path**: mikeliquid/ec-system ## Basic Information - **Project Name**: EC-System - **Description**: 基于 SpringCloud + SpringCloud Alibaba + Redis + RabbitMQ + Nginx + ElasticSearch 等实现,Nginx 实现反向代理和动静分离,采用 Docker 容器化部署。前台商城系统包括:用户登录、注册、商品搜索、商品详情、购物车、下订单流程、秒杀活动等模块。后台管理系统包括:商品系统、优惠营销、库存系统、订单系统等模块。 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-03-08 - **Last Updated**: 2022-07-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: Spring, SpringBoot, SpringCloud, Redis, MySQL ## README # 架构 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210515181258966.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FsdmluMTk5NzY1,size_16,color_FFFFFF,t_70) ## 解析 客户通过任意客户端(app/Web)向服务器发送请求, 请求首先来到Nginx集群,Nginx将请求转交给Api网关(SpringCloud Gateway), Api网关: 1. 可以根据当前请求,动态路由到指定的服务 2. 假如请求对应的服务过多,例如是查询商品,而商品在3个服务里面都有,网关可以通过Ribbon负载均衡的调用服务。 3. 如果服务出现问题,也可以在网关这个级别通过Sentinel做熔断降级 4. 还可以对请求进行认证授权, 请求过来以后,看是否合法,合法了以后再放行 5. 还可以通过Sentinel对请求进行限流,比如当前有100W个请求,我们害怕同时放进来之后,把后台服务压垮,可以在网关处进行限流控制,只放行1W个过去,让后台业务集群很容易的处理完这些请求。 SpringBoot:实现了微服务 Feign:实现了微服务之间的调用 OAuth2.0认证中心:实现了登录之后才能处理的请求、以及社交登录 Spring Securitiy:实现了整个应用的安全以及权限控制 缓存:使用Redis实现了分片集群以及哨兵集群 持久化:使用MySQL集群实现了读写分离、分库分表 消息队列:使用Rabbit MQ集群,实现微服务之间的异步解耦,包括完成分布式事务的最终一致性 全文检索:使用ElasticSearch实现 对象存储:使用阿里云的OOS存储服务 日志存储:使用ELK对日志进行相关处理,使用LogStash收集业务里面的各种日志,然后把它存储到ES里,然后ELK使用Kibana可视化插件从ES中检索出相关的日志信息,帮我们快速定位线上问题的所在。 Nacos注册中心:实现服务之间的注册与发现 Nacos配置中心:实现统一管理配置,实现改一处服务的配置,其它服务都自动修改,所有的服务都可以通过配置中心,动态获取它的配置 分布式事务:使用Seata # 微服务划分 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210515181852292.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FsdmluMTk5NzY1,size_16,color_FFFFFF,t_70) # 常用界面 ## 商品服务 | 功能 | 地址 | | :------- | :------------------------------------- | | 首页 | http://ec.yepinxi.com/index.html | | 商品详情 | http://item.ec.yepinxi.com/{skuId}.html | ## 检索服务 | 功能 | 地址 | | :------- | :------------------------------------- | | 查询商品 | http://search.ec.yepinxi.com/list.html | ## 认证服务 | 功能 | 地址 | | :--- | :------------------------------------- | | 注册 | http://auth.ec.yepinxi.com/register.html | | 登录 | http://auth.ec.yepinxi.com/login.html | ## 购物车服务 | 功能地址 | 地址 | | :--------- | :--------------------------------- | | 我的购物车 | http://cart.ec.yepinxi.com/cart.html | # 模块介绍 | | 服务 | 描述 | | :-------------------- | :-------------- | :------------------------------------------ | | ec-auth | 认证服务 | 社交登录、Oauth2.0、单点登录 | | ec-cart | 购物车服务 | 购物车保存、合并、提交等 | | ec-common | 公共服务 | 常量、异常码、工具类、通用实体等 | | ec-coupon | 优惠服务 | 积分、优惠券等信息 | | ec-gateway | 网关服务 | 网关接收前端请求做统一转发 | | ec-member | 会员服务 | 会员基本信息、会员等级、会员积分等 | | ec-order | 订单服务 | 普通订单、秒杀订单等 | | ec-product | 商品服务 | 商品规格、属性、品牌、分类等 | | ec-search | 检索服务 | Elasticsearch 检索 | | ec-seckill | 秒杀服务 | 秒杀活动相关 | | ec-third-party | 第三方整合服务 | 阿里云OSS、阿里云短信 | | ec-ware | 库存服务 | 采购工作单、库存等 | | renren-fast | 人人后台 | 负责后台登录以及模块等信息 | | renren-generator | 人人代码生成器 | 根据数据库快速生成后台的前端页面与后台代码 | # 依赖版本 | | 版本 | | :-------------------- | :------------- | | Spring Boot | 2.1.8.RELEASE | | Spring Cloud | Greenwich.SR3 | | Spring Cloud Alibaba | 2.1.0.RELEASE | | MySQL | 8.0.17 | | ElesticSearch | 7.4.2 | | MyBatisPlus | 3.2.0 | | Lombok | 1.18.2 | | Swagger | 2.9.2 | | Mapstruct | 1.4.1.Final | | Redisson | 3.12.0 | | HttpComponents | 4.4.12 | # 服务器环境 | | 版本号 | 描述 | | :------------- | :------ | :---------------------- | | nginx | 1.10 | 反向代理服务器 | | elasticsearch | 7.4.2 | 搜索 | | kibana | 7.4.2 | 可视化页面 | | nacos | 1.1.4 | 服务注册中心和配置中心 | | redis | ^ | 缓存 | | mysql | 5.7 | 数据库 | | seata | 0.7.1 | 分布式事务 | | sentinel | 1.6.3 | 监控平台 | | zipkin | ^ | 可视化的链路追踪 |