你好,我是程序员Alan.

在《 高并发场景微服务实战(一)》一文中,我提到决定以一个虚拟的高并发场景的微服务系统为主线,系统性从 0 到 1 的创造一个高并发场景的微服务系统。这个高并发业务场景是——订票系统机票秒杀。

下面我会详细说一下自己为什么选择这个业务场景作为需求原型,并记录下我分析需求和梳理业务流程的过程。

在公司需求分析工作大多数情况是由PO(产品经理)完成的,我虽然偶尔会提出一些建议,但缺少需求分析的专业知识,所以可能会有许多错误,见笑了。

为什么要选取“机票秒杀业务”作为需求原型呢?

这里我主要有以下几个考量:

  1. 业务场景很典型,熟知度比较高,业务理解上不存在很大的障碍。
  2. 能将我所要表达的微服务特性和高并发特性融入进去。
  3. 业务复杂度比较低,便于上手开发,因为门槛太高反而不利于技术实践,需要花大量的时间去写业务。

原始需求

很多人应该都用过去哪儿,携程之类的软件购买机票。这类APP会把所有航空公司的航班、票价等信息都获取到,然后再聚合。 本次我就是以这个场景为业务原型开展,业务需求经过简化相对实际业务来说非常简单。简化业务的原因是因为不想花太多时间在业务逻辑上面,通过这次实践能掌握到微服务技术栈和高并发技术栈即可。

原始需求描述如下:

  • 用户可以通过订票系统可以同时获取多家航空公司的航班信息。
  • 用过可以通过订票系统购买指定航空公司机票。
  • 在订票系统后台可以看到用户的支付流水,订单信息。

需求分析

依据原始需求,整合分析后可归集为以下业务模块:

  • 用户。用户信息(主要是姓名、余额),航公公司机票信息(主要是公司名、航班号、航班信息、价格、机票数量)。
  • 机票资源。用户购买机票后,航空公司机票库存扣减,订票系统实时显示航空公司实最新机票信息。
  • 计费。用户成功购买机票后收费。
  • 财务。机票购买的支付流水,收入统计。
  • 消息。机票支付消息。

用户故事、任务整理

以上述需求归集情况,罗列几个代表性的用户故事,取代传统的需求文档。

  • 作为一个普通用户。我希望可以快速查询到,指定出发时间内所有航空公司的机票信息,以便于购买最划算的机票。
  • 作为一个订票系统用户。我希望可以快速查询到所有航空公司的航班信息,并聚合展示给用户。
  • 作为一个订票系统用户。我希望可以代用户向航空公司购买机票,看到用户支付流水和订单信息。
  • 作为一个航公公司用户。我希望可以看到机票的销售情况,用户的支付流水。

下面基于以上故事,将故事拆解成较细的任务,拿第二个故事举例。

1.1 订票系统接收用户传入的查询信息,例如 2022/10/1 18:00 深圳飞往三亚

1.2 订票系统把所有航空公司的航班、票价等信息都获取到

1.3 将机票信息聚合,展示给用户

关键业务流程梳理

基于需求情况,找出核心的业务流程,指导后期的核心业务开发。

GO微服务处理大量并发需要考虑什么_GO微服务处理大量并发需要考虑什么

留个问题

你会用什么方式获取和聚合机票信息?

站在巨人的肩膀上:

  • 码闻强—SpringCloud微服务实战
  • 徐隆曦—Java并发编程78讲