SpringCloud微服务架构实战-电商秒杀系统

引言(文章的价值及意义)

1.研发全流程总结:从需求分析、架构设计、项目管理,部署等流程都有描述及对应的方法论沉淀;
2.总结DDD 架构设计实践经验;
3. 总结SpringCloud微服务架构实践经验;
4. 项目实战: 已电商秒杀系统的三高来做演示;
5. 分享经验,锻炼自己的总结能力;
6. 分享经验,和其他人交流学习;

我们直观从 三个架构来整体感受下:

  1. 业务架构
  2. 应用架构
  3. 技术架构

文章目录(项目研发流程)

我们按照项目的研发流程来编织文章目录,从项目立项到上线的流程来看各个环节 的 事情、人、职责、关键要素

章节 说明
1. 秒杀业务的背景及描述 公司战略,部门战略,产品意义及价值
2.软件设计:DDD领域驱动设计 软件设计,业务建模
3.架构师的图-业务、应用、技术架构 架构师工作中主要面向的管理资料,就是架构图的维护
4.项目管理 项目管理、人力管理、研发流程devops
5.功能特性 各种功能特性说明
6.项目效果展示及开源代码 成果展示及源码分享
7.部署流程 怎么代码部署到机器上
8.SpringCloud资料分享 微信公众号 领取资料
9.总结 方法论沉淀

1.秒杀业务的背景及描述-(项目背景)

    方法论:
    在实际的工作项目中,换成自己的项目业务的背景和意义。这块总体的方法论是:
    1. 从价值角度出发:
        1.1 做了这个项目会给我们的业务带来多大的收益?
        1.2 降低了多少成本?
        1.3 提高了多少效率?
        1.4 为用户体验提升了多少? 
        1.5 对品牌影响力的提升是什么?
        1.6 解决了什么痛点等方面入手?
    2. 从现状资源角度触发:
        2.1我们现状,技术栈、人力 是怎么样的?
        2.2 实现的难度难点是什么?判断是否可实现。
    3. 高视角来看项目:
        3.1 是否满足公司战略,战术,价值观等;
        3.2 从历史的周期内看,是否满足一定的周期规律
            3.2.1 政治周期  --
            3.2.2 康波周期  -- 经济周期
            3.2.3 公司周期  -- 
    4. 目标蓝图描述
      4.1 实现的目标具体大概的业务场景是怎么杨的?
      4.2 实现的大概原理、执行路径

备注: 项目是为了学习实践的假设案例,请不要对号入座,投射到现有公司及业务上。
    我们公司是做跨境电商的,目前有一定的用户基础(比如:1000万注册用户 ),但是用户新增(DAA : 1000)、用户活跃度不是很好(DA 100万);
    我们想通过构建秒杀商品,来增加用户日活(日活 500万),和每日新增用户数(每日新增 2万);
    我们依靠公司现有的SpringCloud架构体系及java 技术团队,新增秒杀服务,新域名,CDN 等方式,来构建一套独立抗流量的业务流程出来,支撑秒杀业务。

附件信息:

  1. 业务MRD: 连接
  2. 产品PRD:连接

2.秒杀项目软件设计-(DDD领域驱动设计)

领域驱动设计总述

1. DDD设计 流程 方法论:
2. 统一语言:
3. 战略设计:
4. 战术设计:
5. 技术实现:

2.1 DDD设计方法论:

阶段 架构 输入 方法 输出 价值
1.统一语言 业务交流 表格收集整理 秒杀域核心词汇表 统一语言,统一概念,对全域参与者 提高协作效率,降低沟通成本
2.战略设计*领域分析 顶层业务架构 公司业务、问题空间 分而治之
流程功能分析
业务场景分析
领域知识和经验
核心子域
通用子域
支撑子域
对全局业务线的认知
3.战略设计*领域建模 子域业务架构 各域问题空间输入 事件风暴
用例分析
场景分析
领域模型
限界上下文
实体、聚合、聚合根、值对象
产生细分领域的业务模型
4. 战术设计*微服务设计 应用架构 领域模型
限界上下文
实体、聚合、聚合根、值对象
分层架构(四层、洋葱、六边形)、CQRS、领域事件驱动 1.对外:服务依赖关系
2.
应用架构承载业务的实体
5. 战术设计*详细设计 子域技术架构 子域业务、应用架构 架构师软件设计方法 技术架构 针对业务特性选择合适的技术组件解决特性问题(三高、网络,存储、运算 等)
6.战术设计*具体实现 业务架构
应用架构
技术架构
编码、测试、上线 软件功能交付 实施实现

2.2统一语言

   方法论:
   统一语言的目的就是为了方便沟通,因为参与项目的人员可能包括业务专家、架构师、开发人员、测试人员、运维人员等等,不同的角色对同一个概念的理解可能会千差万别,
   比如:南方叫汤圆,北方叫元宵,那双方在沟通时要用汤圆还是用元宵呢?再举个例子,对于“库存”这个概念我们可以这样命名:Stock、Inventory、Amount、库存等,
   如果没有统一语言,这些概念的命名就会变得五花八门,那怎么做到统一语言呢?推荐的一种做法是建一个核心领域词汇表.
秒杀域核心词汇表
名词 英文 解释
秒杀 seckill 指的是 秒杀业务
秒杀商品 seckill product 指的是 秒杀业务中要售卖的商品
秒杀库存 seckill stock 指的是 秒杀设置的秒杀预售的库存是多少
超卖 oversold 指的是 卖出的商品数量大于了 秒杀库存
.... .... .....

2.3战略设计

2.3.1 战略设计*领域分析
  1. 问题空间: 在现有的电商系统中,增加秒杀模块;
  2. 业务线流程及功能分析;
    2.1 用户需要能看到秒杀预告的信息 时间、商品,价格;
    2.2 用户在秒杀开始是假进行秒杀点击;
    2.3 秒杀抢购结果:没抢到;
    2.4 秒杀抢购结果: 抢到,走订单流程支付购买;
    2.5 秒杀抢购结构: 如果支付超时未购买,退库存,让其他人来购买;
  3. 产出:
    1. 核心、通用、支撑 域 ;

    2. 核心 : 秒杀域、

    3. 通用: 订单域

    4. 支撑:用户域、支付域

    5. 业务线流程及功能概述;(每个业务线的功能及边界)

2.3.2 战略设计*领域建模

建模方法:事件风暴法;

  1. 事件风暴-事件收集
  2. 事件风暴-事件整理
  3. 产出:
    领域模型
    限界上下文
    实体、聚合、聚合根、值对象

2.4战术设计

2.4.1 战术设计*应用架构(微服务拆分)
2.4.5 战术设计*技术方案(详细设计)

2.5技术实现

完成设计阶段,接下来进入研发流程。

3.架构师的图-业务、应用、技术架构

3.1 架构师的职责及架构师工作边界

3.2 业务架构

3.3 应用架构

3.4 技术架构

4.项目管理

4.1. 研发总体流程及设计的角色职责

1. 立项会: 公司战略,产品设计prd 等; 
2. 需求沟通会:
3. 技术方案沟通会:设计分析:  DDD
4. 技术方案:  业务架构,应用架构、技术架构的改动点,及具体编码实现的流程及逻辑、以及面临的难点; 
5. 测试用例评审会:
6. 项目进度沟通会: 每日站会、项目周会;
7.  测试
8. 升级
9. 交付  : UAT 验收,现场验收,项目进度邮件同步;

5. 系统功能特性说明

功能 技术亮点 说明
并发处理 1. future异步处理业务流 多个后端请求并发执行,降低c端用户的访问的RT 代码:ServiceClass 类
软件设计方法 DDD领域驱动设计 战略设计战术设计,完美融合微服务概念的拆分 推荐pdf《领域驱动设计:软件核心复杂性应对之道》

6.项目效果展示及开源代码

6.1 线上访问路径;
6.2 项目开源路径地址:

7.部署实践

部署清单列表:按顺序部署;
7.1 机器清单:
7.2 中间件: redis、mysql 、

8. 资料分享

  1. DDD 领域驱动设计;
  2. SpringCloud 书单;
  3. 相关面试题;

9.总结

架构师是承上启下,把控方案、技术走向的角色,在系统维护,项目研发中起到了很关键的作用,如下我们沉淀了架构师的工作方法论:

架构师工作方法论:
(1) 公司战略:行业分析,公司阶段,商业模式切入点分析;
(2) 业务架构:业务划分、高内聚低耦合;
(3) 技术架构:分层架构、技术栈
(4) 人力梯队:把合适的人到业务架构、应用架构、技术架构的具体域里面。
(5) 兜底管理: 故障管理、监控管理、风控、安全、降级、备份;
(6) 底层逻辑: 目标思维、兜底思维、利他、分治、系统性思考,极限思考;

    本文我们从电商秒杀项目的立项、DDD分析设计、架构输出、编码、部署演示等,带大家体验了一遍 DDD + SpringCloud 的研发流程,期中有大量方法论的沉淀描述,希望能帮助到更多需要的同学。
    我们这期到这里,后会有期。喜欢的小伙伴点赞、评论、点在看。








参考文章:
【DDD序列2-事件风暴】
https://baijiahao.baidu.com/s?id=1688784023337140575&wfr=spider&for=pc

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,377评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,390评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,967评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,344评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,441评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,492评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,497评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,274评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,732评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,008评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,184评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,837评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,520评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,156评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,407评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,056评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,074评论 2 352

推荐阅读更多精彩内容