官网地址:magestack.cn
刚果商城是个从零到一的 C 端商城项目,包括商城中心业务和根底架构两大模块。
参照商城体系原型,推出用户、音讯、产品、订单、优惠券、付出、网关、购物车等业务模块,经过商城体系中复杂场景,给出对应处理方案。运用 DDD 模型开发体系功用,协助对 DDD 一知半解的开发者建立正确地开发思路。
怎么开端
刚果商城中心有两块,别离是商城业务和根底架构,经过认真学习别离能够收成以下两种才干提高。
- 商城业务:经过学习刚果商城中复杂业务处理场景,增加自己的复杂业务处理才干。
- 根底架构:尝试跟着根底架构部分自己把轮子都造一遍,以此提高自己方案规划和公共代码开发才干。
1)商城中心业务
现在前端页面正在开发中,暂时没有开源出来,所以大家需求经过接口恳求拜访。接口怎么拜访具体看下文。
- 初始化数据库,比方产品库、订单库、用户库、付出库、购物车库等;
- 经过 Docker 装置项目中依靠的中间件,比方 Nacos2、MySQL、Seata、RocketMQ 等;
- 学习接口调用流程,项目接口现在全量放入 Apifox 软件中,可经过在线拜访;
- 检查不同微服务之间的依靠关系,并依据文档中的描述进行修正指定参数;
- 找到自己感兴趣的模块功用 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 |
项目功用
这是刚写这个项目的时候出的一版功用图,当时已不再保护,能够作为一个根底入门的参阅。