看了一些架构相关的资料,在讲非功能性需求时大部分都会提到以下几个词:
Reliability(可靠性)
Availability(可用性)
Scalability(伸缩性),包括水平和垂直两类,水平是指通过添加机器提高伸缩能力,垂直是指通过增加单机的硬件配置提高伸缩能力,显然单机的硬件配置是有上限的,因此水平伸缩才是王道。要做到水平伸缩可以通过以下方式进行:
- Load Balancing(负载均衡)
- Caching(缓存)
- Off-Line Processing(离线处理),也可以认为是异步处理,
- Partition by Function(按功能切分)这一点有点像公司那门海量课程<大系统小做>,数据层也可以按这个方式进行分离,比如典型的分库分表。
Resiliency(弹性)