刚果商城是个从零到一的商城项目,包含商城核心业务和基础架构两大模块。
参照商城系统原型,推出用户、消息、商品、订单、优惠券、支付、网关、购物车等业务模块,通过商城系统中复杂场景,给出对应解决方案。使用 DDD 模型开发系统功能,帮助对 DDD 一知半解的开发者树立正确地开发思路。
项目地址领取:点赞+转发,私信【 学习 】即可
(资料图片仅供参考)
刚果商城系统是我从事开发以来,在实际工作中遇到各种场景问题的“疑难杂症”汇总。
这些问题有些是自己遇到的,有些是其他人遇到帮忙解决的,最终把解决方案和代码实战放在刚果商城这个系统里。
这个系统没有很完整的商城业务,但是提供了偏架构层面有用的工具和参考,能帮助大家在实际项目中更好地解决问题。
如果你能够认真且坚持把项目看完,我相信你会收获包括不限于下面这些知识点:
基于 DDD 领域驱动模型设计实现的商品、购物车、订单、用户、消息以及支付服务。 掌握分布式锁、分布式事务、分布式搜索、分布式缓存、分布式限流以及分库分表等核心技术。 完成基础组件抽象,规约、缓存、幂等、分布式 ID、数据持久层、脱敏以及日志等底层组件库。 基于 Agent 开发字节码流量监控,监控项目接口 QPS、响应时间和异常请求等核心指标。 掌握常用设计模式实战场景,策略、责任链、装饰器、观察者以及适配器等设计模式。刚果商城核心有两块,分别是商城业务和基础架构,通过认真学习分别可以收获以下两种能力提升。
商城业务:通过学习刚果商城中复杂业务处理场景,增加自己的复杂业务处理能力。 基础架构:尝试跟着基础架构部分自己把轮子都造一遍,以此提高自己方案设计和公共代码开发能力。1)商城核心业务
目前 前端页面 正在开发中,暂时没有开源出来,所以大家需要通过接口请求访问。接口如何访问详细看下文。
初始化数据库,比如商品库、订单库、用户库、支付库、购物车库等; 通过 Docker 安装项目中依赖的中间件,比如 Nacos2、MySQL、Seata、RocketMQ 等; 学习接口调用流程,项目接口目前全量放入 Apifox 软件中,可通过在线访问; 查看不同微服务之间的依赖关系,并根据文档中的描述进行修改指定参数; 找到自己感兴趣的模块功能 Debug 源代码,参考代码设计。2)基础架构
基础架构相关的代码都在 congomall-framework-all 模块中,可以通过官网查看如何实现,或者通过 视频教学 来学习如何开发基础架构代码。
刚果商城项目是从零到一写出来的,当前已开发模块如下所述,没有完成的请耐心等待。
模块名称 | 服务名称 | 访问地址 | |
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 |
10 | congomall-bff | 商城聚合层(BFF) | http://localhost:8009 |
项目地址领取:点赞+转发,私信【 学习 】即可
目前刚果商城已开发的接口已汇总至下述接口文档中,本地启动对应项目,通过接口文档访问查看效果。
/web/project/1038592/apis/api-50106328-run
如果需要通过 Apifox 直接调用,需要安装对应浏览器内网插件,这里把插件安装包装上,跟着教程安装即可使用。
刚果商城后端系统模块介绍如下所示。
├── congomall-basic-data || -- # 基础数据服务│ ├── congomall-basic-data-application│ ├── congomall-basic-data-domain│ ├── congomall-basic-data-infrastructure│ ├── congomall-basic-data-interface├── congomall-bff || -- # 商城 BFF 聚合层│ ├── congomall-bff-biz│ ├── congomall-bff-remote│ ├── congomall-bff-web├── congomall-cart || -- # 购物车服务│ ├── congomall-cart-application│ ├── congomall-cart-domain│ ├── congomall-cart-infrastructure│ ├── congomall-cart-interface├── congomall-coupon || -- # 优惠券服务├── congomall-customer-user || -- # C端用户服务│ ├── congomall-customer-user-application│ ├── congomall-customer-user-domain│ ├── congomall-customer-user-infrastructure│ ├── congomall-customer-user-interface│ ├── congomall-customer-user-mock├── congomall-framework-all || -- # 基础组件│ ├── congomall-base-spring-boot-starter || -- # 顶层抽象基础组件│ ├── congomall-cache-spring-boot-starter || -- # 缓存组件│ ├── congomall-common-spring-boot-starter || -- # 公共工具包组件│ ├── congomall-convention-spring-boot-starter || -- # 项目规约组件│ ├── congomall-database-spring-boot-starter || -- # 数据库持久层组件│ ├── congomall-ddd-framework-core || -- # DDD抽象接口组件│ ├── congomall-designpattern-spring-boot-starter || -- # 设计模式抽象组件│ ├── congomall-distributedid-spring-boot-starter || -- # 分布式ID组件│ ├── congomall-flow-monitor-agent || -- # 微服务流量监控组件│ ├── congomall-httputil-spring-boot-starter || -- # Http网络调用组件│ ├── congomall-idempotent-spring-boot-starter || -- # 分布式幂等组件│ ├── congomall-log-spring-boot-starter || -- # 日志打印组件│ ├── congomall-minio-spring-boot-starter || -- # 文件存储组件│ ├── congomall-openfeign-spring-boot-starter || -- # 微服务调用组件│ ├── congomall-rocketmq-spring-boot-starter || -- # 分布式消息队列组件│ ├── congomall-sensitive-spring-boot-starter || -- # 前端返回数据脱敏组件│ ├── congomall-swagger-spring-boot-starter || -- # 文档API组件│ ├── congomall-web-spring-boot-starter || -- # Web组件│ ├── congomall-xxljob-spring-boot-starter || -- # 定时任务组件├── congomall-gateway || -- # 网关服务├── congomall-message || -- # 消息服务│ ├── congomall-message-application│ ├── congomall-message-domain│ ├── congomall-message-infrastructure│ ├── congomall-message-interface├── congomall-order || -- # 订单服务│ ├── congomall-order-application│ ├── congomall-order-domain│ ├── congomall-order-infrastructure│ ├── congomall-order-interface├── congomall-pay || -- # 支付服务│ ├── congomall-pay-application│ ├── congomall-pay-domain│ ├── congomall-pay-infrastructure│ ├── congomall-pay-interface├── congomall-product || -- # 商品服务│ ├── congomall-product-application│ ├── congomall-product-domain│ ├── congomall-product-infrastructure│ ├── congomall-product-interface│ ├── congomall-product-job├── congomall-test-all || -- # 测试用例│ ├── congomall-flow-monitor-agent-test│ ├── congomall-h2-test│ ├── congomall-oom-test│ ├── congomall-smooth-sharding-test│ ├── congomall-yaml-test├── dev-support || -- # 开发工具包
当前暂时先梳理后端技术,前端开发后再行梳理。
技术 | 名称 | 官网 | |
1 | Spring Boot | 基础框架 | /projects/spring-boot |
2 | MyBatis-Plus | 持久层框架 |
|
3 | HikariCP | 数据库连接池 | /brettwooldridge/HikariCP |
4 | Redis | 分布式缓存数据库 |
|
5 | RocketMQ | 消息队列 |
|
6 | ShardingSphere | 数据库生态系统 |
|
7 | SpringCloud Alibaba | 分布式框架 | /alibaba/spring-cloud-alibaba |
8 | SpringCloud Gateway | 网关框架 | /projects/spring-cloud-gateway |
9 | Seata | 分布式事务框架 | /zh-cn/ |
10 | Canal | MySQL 订阅 BinLog 组件 | /alibaba/canal |
11 | MinIO | 文件存储框架 |
|
12 | Swagger3 | 项目 API 文档框架 |
|
13 | Knife4j | Swagger 增强框架 |
|
14 | Maven | 项目构建管理 |
|
15 | Redisson | Redis Java 客户端 |
|
16 | Sentinel | 流控防护框架 | /alibaba/Sentinel |
17 | Hippo4j | 动态线程池框架 |
|
18 | XXL-Job | 分布式定时任务框架 | /xxl-job |
19 | SkyWalking | 分布式链路追踪框架 |
|
20 | JetCache | Java 缓存框架 | /alibaba/jetcache |
项目地址领取:点赞+转发,私信【 学习 】即可
刚果商城,不一样的商城系统刚果商城是个从零到一的商城项目,包含商城
相信大家对五菱之光是不是面包车,五菱之光是面包车吗?的问题都很疑惑
英联转债涨4 3%,宏川转债涨4 2%,春秋转债跌1 77%
继2020年3月份实施注册制后,公司债(企业债)注册制改革迎进一步深化
教育部日前在湖北武汉举行2023年全国教育数字化现场推进会,梳理总结国
1、电视里播的翡翠娃娃一般为台版(删节版)。2、主题曲是蓝心湄的《不
2023年5月27日,是美国前国务卿亨利基辛格100岁生日。就在他生日前不久
1、羽绒服(downcoat)内充羽绒填料的上衣,外形庞大圆润。2、羽绒服一
半导体产业低迷,韩国考虑下调今年经济增长预测,韩国,李梅,财政部,半导
【新疆是个好地方】天山网-新疆日报记者任江新疆到处是戈壁沙漠,遍地
船燃需求受到需求前景的悲观预期影响,支撑力度不足6月27日讯,燃料油
中国旺旺(00151 HK)公布,截至2023年3月31日止年度,总收益达人民币229
关于小米汽车,从传言到路试曝光到再到车辆信息曝光,感觉小米汽车离我
炎热天气车辆交通事故频发这些行车安全知识需谨记
开封市顺河回族区政务服务和大数据管理局坚持以区行政服务中心为依托,
今年上半年,在中国品牌逐渐上攻高端市场的背景下,传统豪华品牌的市场
据中国新闻网,从中铁第四勘察设计院集团有限公司(下称“铁四院”)...
曾凭借一句“活力28,沙市日化”广告语在上世纪80年代火遍大江南北...
笔画书本,简笔画书这个问题很多朋友还不知道,来为大家解答以上的问题
文 羊城晚报全媒体记者 李春炜 实习生 卢佳圳近日,广州市海珠区人
直播吧6月27日讯贝林厄姆新近加盟皇马,德转列出了西甲历史最贵引援前
00:066月27日,重庆,网友爆料称在秀山县中医院食堂买盒饭,在魔芋烧鸭
这张来自云南的缉毒学员毕业照,只有一人没有马赛克,这张来自云南的毕
格隆汇6月27日丨基石药业B02616HK发布公告选择性RET抑制剂普吉华普拉替
“爱上北京的100个理由”短视频大赛颁奖典礼举行
天津中考志愿填报时间2023天津中考志愿填报时间为7月8日至13日12时1 志
今年5月,芬兰游戏公司RemedyEntertainment确认《心灵杀手2》在今年10
根据《关于在部分高校开展基础学科招生改革试点工作的意见》文件精神和
我院部分专业一志愿生源不足,现接收调剂,具体通知如下:一、调剂专业
证券时报网讯,据上海市人民政府新闻办公室6月27日消息,定于6月29日(