1. 引言
系统设计又称系统架构,软件领域负责系统设计的工程师通常被称为架构师。在阿里,架构师多以角色存在于具体的项目中,而非专门设置的职位,对于复杂的系统,通常由 P8 或 P9 级别的资深工程师负责设计。
在实践中,根据复杂度的不同,有些小系统只需画个流程图即可梳理清楚;但是,复杂系统的设计则困难得多,以 12306 为例,2020 年春运期间高峰日点击量达 1495 亿/天,170 万/秒,单从这两个数据看,其设计、实现就不容易。在 12306 系统设计方案评审的时候,官方曾邀请了数名阿里的资深工程师参与,本主题的撰稿人之一便是当年的亲历者,在通过官方提供的资料详细地了解了铁路交通票务相关的信息后,他才意识到自己严重低估了铁路票务的复杂度。在此,读者不妨设想一下,如果你是 12306 项目的设计师,你准备如何设计这个系统呢?你的设计套路(方法)是怎样的?
在笔者看来,不论采用何种设计方案,首先需要明确一个问题——你了解铁路票务吗?如果根本不了解铁路票务,那么,又怎么可能设计出满足铁路票务业务需求的系统呢?在实践中,设计一个复杂的系统,并不单纯是技术层面的问题,首要任务是深入了解其业务,鉴于此,作为系统设计主题的上篇&