从零到一不一样的TOC商城项目:Cloud-Alibaba+DDD,私活利器开源

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 刚果商城是个从零到一的商城项目,包含商城核心业务和基础架构两大模块。参照商城系统原型,推出用户、消息、商品、订单、优惠券、支付、网关、购物车等业务模块,通过商城系统中复杂场景,给出对应解决方案。使用 DDD 模型开发系统功能,帮助对 DDD 一知半解的开发者树立正确地开发思路。

刚果商城,不一样的商城系统

刚果商城是个从零到一的商城项目,包含商城核心业务和基础架构两大模块。

参照商城系统原型,推出用户、消息、商品、订单、优惠券、支付、网关、购物车等业务模块,通过商城系统中复杂场景,给出对应解决方案。使用 DDD 模型开发系统功能,帮助对 DDD 一知半解的开发者树立正确地开发思路。

项目地址领取:可以点击此处来获取就可以了!

能学到什么


刚果商城系统是我从事开发以来,在实际工作中遇到各种场景问题的“疑难杂症”汇总。

这些问题有些是自己遇到的,有些是其他人遇到帮忙解决的,最终把解决方案和代码实战放在刚果商城这个系统里。

这个系统没有很完整的商城业务,但是提供了偏架构层面有用的工具和参考,能帮助大家在实际项目中更好地解决问题。

如果你能够认真且坚持把项目看完,我相信你会收获包括不限于下面这些知识点:

  • 基于 DDD 领域驱动模型设计实现的商品、购物车、订单、用户、消息以及支付服务。
  • 掌握分布式锁、分布式事务、分布式搜索、分布式缓存、分布式限流以及分库分表等核心技术。
  • 完成基础组件抽象,规约、缓存、幂等、分布式 ID、数据持久层、脱敏以及日志等底层组件库。
  • 基于 Agent 开发字节码流量监控,监控项目接口 QPS、响应时间和异常请求等核心指标。
  • 掌握常用设计模式实战场景,策略、责任链、装饰器、观察者以及适配器等设计模式。

如何开始


刚果商城核心有两块,分别是商城业务和基础架构,通过认真学习分别可以收获以下两种能力提升。

  • 商城业务:通过学习刚果商城中复杂业务处理场景,增加自己的复杂业务处理能力。
  • 基础架构:尝试跟着基础架构部分自己把轮子都造一遍,以此提高自己方案设计和公共代码开发能力。

1)商城核心业务

目前 前端页面 正在开发中,暂时没有开源出来,所以大家需要通过接口请求访问。接口如何访问详细看下文。

  1. 初始化数据库,比如商品库、订单库、用户库、支付库、购物车库等;
  2. 通过 Docker 安装项目中依赖的中间件,比如 Nacos2、MySQL、Seata、RocketMQ 等;
  3. 学习接口调用流程,项目接口目前全量放入 Apifox 软件中,可通过在线访问;
  4. 查看不同微服务之间的依赖关系,并根据文档中的描述进行修改指定参数;
  5. 找到自己感兴趣的模块功能 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

项目地址领取:可以点击此处来获取就可以了!

接口请求


目前刚果商城已开发的接口已汇总至下述接口文档中,本地启动对应项目,通过接口文档访问查看效果。

https://www.apifox.cn/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

基础框架

https://spring.io/projects/spring-boot

2

MyBatis-Plus

持久层框架

https://baomidou.com

3

HikariCP

数据库连接池

https://github.com/brettwooldridge/HikariCP

4

Redis

分布式缓存数据库

https://redis.io

5

RocketMQ

消息队列

https://rocketmq.apache.org

6

ShardingSphere

数据库生态系统

https://shardingsphere.apache.org

7

SpringCloud Alibaba

分布式框架

https://github.com/alibaba/spring-cloud-alibaba

8

SpringCloud Gateway

网关框架

https://spring.io/projects/spring-cloud-gateway

9

Seata

分布式事务框架

http://seata.io/zh-cn/index.html

10

Canal

MySQL 订阅 BinLog 组件

https://github.com/alibaba/canal

11

MinIO

文件存储框架

https://min.io

12

Swagger3

项目 API 文档框架

http://swagger.io

13

Knife4j

Swagger 增强框架

https://doc.xiaominfo.com

14

Maven

项目构建管理

http://maven.apache.org

15

Redisson

Redis Java 客户端

https://redisson.org

16

Sentinel

流控防护框架

https://github.com/alibaba/Sentinel

17

Hippo4j

动态线程池框架

https://hippo4j.cn

18

XXL-Job

分布式定时任务框架

http://www.xuxueli.com/xxl-job

19

SkyWalking

分布式链路追踪框架

https://skywalking.apache.org

20

JetCache

Java 缓存框架

https://github.com/alibaba/jetcache

项目地址领取:可以点击此处来获取就可以了!

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
SpringCloudAlibaba Java 程序员
阿里最新产,SpringCloud微服务核心技术全解手册Github星标50k
SpringCloud想必每一位Java程序员都不会陌生,很多人一度把他称之为“微服务全家桶”,它通过简单的注解,就能快速地架构微服务,这也是SpringCloud的最大优势。但是最近有去面试过的朋友就会发现,现在面试你要是没有SpringCloud经验基本面试机会都不会有。
|
6月前
|
消息中间件 存储 Java
Alibaba开发十年,写出这本“MQ技术手册”,看完我愣住了
消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。虽然说,目前状况是Kafka更为火热,但更为广泛的应该还属老牌的RabbtiMQ和Alibaba自主研发的RocketMQ。
|
3月前
|
SQL 前端开发 关系型数据库
芋道框架万字详解(前后端分离)、若依框架、yudao-cloud保姆级攻略
芋道框架万字详解(前后端分离)、若依框架、yudao-cloud保姆级攻略
2614 4
|
Java Nacos Sentinel
牛逼!这份神仙级Spring Cloud Alibaba全套笔记,几乎涵盖了所有操作
Spring Cloud 和微服务的重要性大家都知道了,Spring Cloud 现在已经成了微服务事实上的标准框架,也是 Java 程序员必须掌握的技术系列之一。
|
Java 持续交付 API
叹服!阿里自述SpringCloud微服务:入门+实战+案例
SpringCloud自述 微服务?Spring?SpringBoot?SpringCloud?......作为一名Java开发人员,对于这些字眼,是否有一种既熟悉又陌生的感觉。你见过,了解过,知道它们也是面试中很重要的一部分,但是不会运用,不会实践到项目中,这就是很尴尬的一种局面,那么你该如何对它们进行深层的剖析呢?
496 0
|
6月前
|
存储 SpringCloudAlibaba Java
手把手教你,从零开始搭建Spring Cloud Alibaba!这份笔记太牛了
Spring Cloud Alibaba 是阿里巴巴提供的微服务开发一站式解决方案,是阿里巴巴开源中间件与 Spring Cloud 体系的融合。
|
数据采集 Java Maven
GitHub上架即巅峰!《Spring Cloud微服务架构实战》标星已超30k
阿嘴又来给大家分享好书了:周喜平教授在今年9.1号才出版的 《Spring Cloud微服务架构实战》,网上依旧是没有开源版本!小编会在文末附电子版免费下载方式。
|
前端开发 Java 关系型数据库
IT市场寒冬过了!GitHub置顶的Spring微服务架构实战派手册有用了
“今年找工作好难啊” 感觉大家总是陷入市场寒冬这个氛围里面“无法自拔”,虽然今年经济下行,工作的确难找,但是在职友集上可查询到的Java岗位仍有20w+,需求相比其他而言并不算少,更别提还有技术细分下的岗位可选!
|
消息中间件 存储 分布式计算
雀氏牛逼,Alibaba分布式微服务成长手册,GitHub开源,限时免费
分布式架构和微服务架构是互联网架构的核心。我们通常理解分布式架构都是从常用的分布式软件开始的,比如Spring Cloud、Kafka、 ZooKeeper、 HBase等,这些都离不开分布式网络架构、分布式存储和分布式计算等基础理论。
GitHub最火的成熟私活利器:基于微服务架构的前后端分离博客系统
博客使用了一些监控的 SpringCloud 组件,但是并不一定都需要部署,必须启动的服务包含 nacos,nginx,rabbitmq, redis,mysql,mogu-gateway,mogu-sms,mogu-picture, mogu-web, mogu-admin 其它的服务都可以不启动,也不影正常使用,可以根据自身服务器配置来启动 最低配置:1核2G 【需开启虚拟内存】【容易宕机】