刚果商城,不一样的商城系统
刚果商城是个从零到一的商城项目,包含商城核心业务和基础架构两大模块。
参照商城系统原型,推出用户、消息、商品、订单、优惠券、支付、网关、购物车等业务模块,通过商城系统中复杂场景,给出对应解决方案。使用 DDD 模型开发系统功能,帮助对 DDD 一知半解的开发者树立正确地开发思路。
能学到什么
刚果商城系统是我从事开发以来,在实际工作中遇到各种场景问题的“疑难杂症”汇总。
这些问题有些是自己遇到的,有些是其他人遇到帮忙解决的,最终把解决方案和代码实战放在刚果商城这个系统里。
这个系统没有很完整的商城业务,但是提供了偏架构层面有用的工具和参考,能帮助大家在实际项目中更好地解决问题。
如果你能够认真且坚持把项目看完,我相信你会收获包括不限于下面这些知识点:
-
基于 DDD 领域驱动模型设计实现的商品、购物车、订单、用户、消息以及支付服务。
-
掌握分布式锁、分布式事务、分布式搜索、分布式缓存、分布式限流以及分库分表等核心技术。
-
完成基础组件抽象,规约、缓存、幂等、分布式 ID、数据持久层、脱敏以及日志等底层组件库。
-
基于 Agent 开发字节码流量监控,监控项目接口 QPS、响应时间和异常请求等核心指标。
-
掌握常用设计模式实战场景,策略、责任链、装饰器、观察者以及适配器等设计模式。
如何开始
刚果商城核心有两块,分别是商城业务和基础架构,通过认真学习分别可以收获以下两种能力提升。
-
商城业务:通过学习刚果商城中复杂业务处理场景,增加自己的复杂业务处理能力。
-
基础架构:尝试跟着基础架构部分自己把轮子都造一遍,以此提高自己方案设计和公共代码开发能力。
1)商城核心业务
目前 前端页面 正在开发中,暂时没有开源出来,所以大家需要通过接口请求访问。接口如何访问详细看下文。
-
初始化数据库,比如商品库、订单库、用户库、支付库、购物车库等;
-
通过 Docker 安装项目中依赖的中间件,比如 Nacos2、MySQL、Seata、RocketMQ 等;
-
学习接口调用流程,项目接口目前全量放入 Apifox 软件中,可通过在线访问;
-
查看不同微服务之间的依赖关系,并根据文档中的描述进行修改指定参数;
-
找到自己感兴趣的模块功能 Debug 源代码,参考代码设计。
添加图片注释,不超过 140 字(可选)
2)基础架构
基础架构相关的代码都在 congomall-framework-all 模块中,可以通过官网查看如何实现,或者通过 视频教学 来学习如何开发基础架构