在《 高并发场景微服务实战(一)》一文中,我提到决定以一个虚拟的高并发场景的微服务系统为主线,系统性从 0 到 1 的创造一个高并发场景的微服务系统。这个高并发业务场景是——订票系统机票秒杀。
下面我会详细说一下自己为什么选择这个业务场景作为需求原型,并记录下我分析需求和梳理业务流程的过程。
在公司需求分析工作大多数情况是由PO(产品经理)完成的,我虽然偶尔会提出一些建议,但缺少需求分析的专业知识,所以可能会有许多错误,见笑了。
为什么要选取“机票秒杀业务”作为需求原型呢?
这里我主要有以下几个考量:
- 业务场景很典型,熟知度比较高,业务理解上不存在很大的障碍。
- 能将我所要表达的微服务特性和高并发特性融入进去。
- 业务复杂度比较低,便于上手开发,因为门槛太高反而不利于技术实践,需要花大量的时间去写业务。
原始需求
很多人应该都用过去哪儿,携程之类的软件购买机票。这类APP会把所有航空公司的航班、票价等信息都获取到,然后再聚合。 本次我就是以这个场景为业务原型开展,业务需求经过简化相对实际业务来说非常简单。简化业务的原因是因为不想花太多时间在业务逻辑上面,通过这次实践能掌握到微服务技术栈和高并发技术栈即可。
原始需求描述如下:
- 用户可以通过订票系统可以同时获取多家航空公司的航班信息。
- 用过可以通过订票系统购买指定航空公司机票。
- 在订票系统后台可以看到用户的支付流水,订单信息。
需求分析
依据原始需求,整合分析后可归集为以下业务模块:
- 用户。用户信息(主要是姓名、余额),航公公司机票信息(主要是公司名、航班号、航班信息、价格、机票数量)。
- 机票资源。用户购买机票后,航空公司机票库存扣减,订票系统实时显示航空公司实最新机票信息。
- 计费。用户成功购买机票后收费。
- 财务。机票购买的支付流水,收入统计。
- 消息。机票支付消息。
用户故事、任务整理
以上述需求归集情况,罗列几个代表性的用户故事,取代传统的需求文档。
- 作为一个普通用户。我希望可以快速查询到,指定出发时间内所有航空公司的机票信息,以便于购买最划算的机票。
- 作为一个订票系统用户。我希望可以快速查询到所有航空公司的航班信息,并聚合展示给用户。
- 作为一个订票系统用户。我希望可以代用户向航空公司购买机票,看到用户支付流水和订单信息。
- 作为一个航公公司用户。我希望可以看到机票的销售情况,用户的支付流水。
下面基于以上故事,将故事拆解成较细的任务,拿第二个故事举例。
1.1 订票系统接收用户传入的查询信息,例如 2022/10/1 18:00 深圳飞往三亚
1.2 订票系统把所有航空公司的航班、票价等信息都获取到
1.3 将机票信息聚合,展示给用户
关键业务流程梳理
基于需求情况,找出核心的业务流程,指导后期的核心业务开发。
留个问题
你会用什么方式获取和聚合机票信息?
站在巨人的肩膀上:
- 码闻强—SpringCloud微服务实战
- 徐隆曦—Java并发编程78讲