官网地址:magestack.cn

刚果商城是个从零到一的 C 端商城项目,包括商城中心业务和根底架构两大模块。

参照商城体系原型,推出用户、音讯、产品、订单、优惠券、付出、网关、购物车等业务模块,经过商城体系中复杂场景,给出对应处理方案。运用 DDD 模型开发体系功用,协助对 DDD 一知半解的开发者建立正确地开发思路。

发现一个商城开源项目,谷粒商城外又多了个选择

怎么开端

刚果商城中心有两块,别离是商城业务和根底架构,经过认真学习别离能够收成以下两种才干提高。

  • 商城业务:经过学习刚果商城中复杂业务处理场景,增加自己的复杂业务处理才干。
  • 根底架构:尝试跟着根底架构部分自己把轮子都造一遍,以此提高自己方案规划和公共代码开发才干。

1)商城中心业务

现在前端页面正在开发中,暂时没有开源出来,所以大家需求经过接口恳求拜访。接口怎么拜访具体看下文。

  1. 初始化数据库,比方产品库、订单库、用户库、付出库、购物车库等;
  2. 经过 Docker 装置项目中依靠的中间件,比方 Nacos2、MySQL、Seata、RocketMQ 等;
  3. 学习接口调用流程,项目接口现在全量放入 Apifox 软件中,可经过在线拜访;
  4. 检查不同微服务之间的依靠关系,并依据文档中的描述进行修正指定参数;
  5. 找到自己感兴趣的模块功用 Debug 源代码,参阅代码规划。
发现一个商城开源项目,谷粒商城外又多了个选择

2)根底架构

根底架构相关的代码都在 congomall-framework-all 模块中,能够经过官网检查怎么完成,或许经过 视频教育 来学习怎么开发根底架构代码。

发现一个商城开源项目,谷粒商城外又多了个选择

文档

注:文章里 TODO 的是还没写(耐心等待更新吧)

入门准备

  • 加入交流群
  • 初始化数据库
  • 环境建立
    • MySQL 5.7.x 简易装置布置
    • Redis 简易装置布置
    • RocketMQ 4.5.1 装置布置
    • Nacos 2.1.1 装置布置
    • Sentinel 1.8.4 装置布置
    • MinIO 装置布置
    • Prometheus 装置布置
    • Grafana 装置布置
    • Seata 1.5.2 装置布置
    • Canal 1.1.5 装置布置
    • SkyWalking 9.3.0 装置布置
    • XXL-Job 2.3.1 装置布置
  • 项目阐明
    • 接口文档阐明
    • 技能架构选型
    • 项目结构阐明
    • 产品 SPU、SKU 之间的区别

快速开端

  • 用户服务
  • 购物车服务
  • 产品服务
  • 音讯服务
  • 订单服务
  • 付出服务

体系规划

  • 数据库规划
  • 通用体系规划
    • SpringBoot 封装 Web 恳求通用回来
    • SpringBoot 封装项目统一反常处理
  • 用户体系规划
    • 电商渠道亿级用户怎么分库分表
  • 产品体系规划
    • 怎么处理产品秒杀库存超卖问题
    • 亿级产品数据怎么快速同步三方数据库
  • 订单体系规划
    • 订单&明细表数据怎么进行分库分表
    • 怎么完成订单 15 分钟未付出主动取消
    • 服务端怎么处理用户下单重复
    • 怎么确保音讯行列不被重复消费
  • 付出体系规划
  • 音讯体系规划
    • 架构师规划的百万数据量安全导入
    • 架构师规划的百万数据量安全导出

场景实战

  • 并发编程
    • 参阅 Dubbo 线程池模型完成快速消费线程池
    • 线程池怎么监控,才干协助开发者快速定位过错
    • 揭秘 Java8 ParallelStream 并行流极端状况串行化
  • 分布式架构
    • 怎么确保雪花算法集群环境下不重复
    • 彻底把握分布式业务 2PC、3PC 模型
    • 从根上理解 Redis 分布式锁演进架构
    • 从 Redisson 源码到红锁 RedLock 算法思维
  • 运用安全
    • 怎么避免数据库灵敏信息泄漏
    • 怎么避免配置文件灵敏信息泄漏
    • 怎么完成前端回来数据脱敏
  • 出产问题
    • 为什么线上反常信息为空,而本地能够正常打印
    • 运用呈现 OOM 反常,程序员怎么第一时刻知道
    • 中心接口恳求出错,成果忘记打印相关日志
  • 数据库
    • MySQL 单表千万数据量怎么深分页优化
    • MyBatis 千万数据量查询不发生内存溢出
  • 分库分表
    • 分库分表怎么完成平滑上线 & 回滚
    • 依照时刻分库分表,怎么依照 ID 查询记载
    • 依照用户分库分表,怎么依照订单 ID 查询记载
  • 本地&分布式缓存
    • 怎么处理缓存穿透&击穿&雪崩
    • 说说布隆过滤器查询误判和数据不能删去处理方案
    • 怎么经过 Caffeine & Redis 完成多级缓存
    • 缓存和数据库一致性问题怎么处理
  • 源码解析
    • MyBatis 全体架构规划共享
    • 花一个周末,把握 OpenFeign 中心原理
    • 花一个周末,把握 SpringCloud Ribbon 中心原理

规划形式实战

  • 规划形式介绍
    • 摊牌了!策略形式在项目规划中用得最多
    • 新年期间,我用职责链形式重构了业务代码
    • 火遍全网的 Hutool,怎么运用 Builder 形式创建线程池
    • 抛弃 EventBus,选择更优雅的 ApplicationEvent
    • 怎么通俗易懂理解什么是 SPI 形式
    • 学习 Mybatis 动态代理扩展拒绝策略
  • 规划形式笼统
    • 死磕规划形式之怎么笼统策略形式
    • 死磕规划形式之怎么笼统职责链形式

开发规约

  • Git 运用操作规约
  • 结构版本号定义
  • 写一手好文档必备的规约
  • 阿里 P7 也在用的编码规约
  • 代码整齐为什么如此重要
  • 怎么提高代码质量

模块分类

刚果商城项目是马哥从零到一写出来的,当时已开发模块如下所述,没有完成的请耐心等待。

模块称号 服务称号 拜访地址
1 congomall-message 音讯发送 eg:邮件、大众号、短信等 http://localhost:8001
2 congomall-customer-user 用户服务 http://localhost:8002
3 congomall-gateway 外部网关 http://localhost:8003
4 congomall-product 产品服务 http://localhost:8004
5 congomall-product-job 产品 Job 服务 http://localhost:9001
6 congomall-cart 购物车服务 http://localhost:8005
7 congomall-order 订单服务 http://localhost:8006
8 congomall-pay 付出服务 http://localhost:8007
9 congomall-basic-data 根底数据服务 http://localhost:8008

接口恳求

现在刚果商城已开发的接口已汇总至下述接口文档中,本地发动对应项目,经过接口文档拜访检查作用。

www.apifox.cn/web/project…

如果需求经过 Apifox 直接调用,需求装置对应浏览器内网插件,这里把插件装置包装上,跟着教程装置即可运用。

装置文档:www.apifox.cn/help/app/we…

发现一个商城开源项目,谷粒商城外又多了个选择

模块介绍

刚果商城后端体系模块介绍如下所示。

发现一个商城开源项目,谷粒商城外又多了个选择

技能选型

当时暂时先梳理后端技能,前端开发后再行梳理。

技能 称号 官网
1 Spring Boot 根底结构 spring.io/projects/sp…
2 MyBatis-Plus 耐久层结构 baomidou.com
3 HikariCP 数据库连接池 github.com/brettwooldr…
4 Redis 分布式缓存数据库 redis.io
5 RocketMQ 音讯行列 rocketmq.apache.org
6 ShardingSphere 数据库生态体系 shardingsphere.apache.org
7 SpringCloud Alibaba 分布式结构 github.com/alibaba/spr…
8 SpringCloud Gateway 网关结构 spring.io/projects/sp…
9 Seata 分布式业务结构 seata.io/zh-cn/index…
10 Canal MySQL 订阅 BinLog 组件 github.com/alibaba/can…
11 MinIO 文件存储结构 min.io
12 Swagger3 项目 API 文档结构 swagger.io
13 Knife4j Swagger 增强结构 doc.xiaominfo.com
14 Maven 项目构建办理 maven.apache.org
15 Redisson Redis Java 客户端 redisson.org
16 Sentinel 流控防护结构 github.com/alibaba/Sen…
17 Hippo4j 动态线程池结构 hippo4j.cn
18 XXL-Job 分布式守时使命结构 www.xuxueli.com/xxl-job
19 SkyWalking 分布式链路追踪结构 skywalking.apache.org

项目功用

这是刚写这个项目的时候出的一版功用图,当时已不再保护,能够作为一个根底入门的参阅。

发现一个商城开源项目,谷粒商城外又多了个选择