分布式系统基础之常见评价指标
在了解分布式之前,先讲述一些一些常见的评价指标。这些概念在之后的系统介绍中将会经常提起。
有些中文有些歧义,建议以英文为准。
性能指标 performance
- 吞吐
Throughout
: Rate of data transmitted over a communication channel- Bytes/s, MB/s,
- Ops/s
- QPS(Queries/s)
- TPS(Transactions/s)
- 带宽
Bandwith
: The maximum possible rate of data can be transmitted)- highlight the upper bound(Bytes/s, MB/s,)
- 并发量
(degree of) Concurrency
: parallelism of workload in a computing system - 响应时间
latency
:(common) round-trip latency(RTT): the total time since a request is sent and the response is recevied
one-way latency: the time from sending to get get acknowledge
avg latency =
Concurrency
/Throughput
(Ops/s)
DO NOT TRUST AVERAGE
一个完整的性能测吞吐量都要做响应时间限定和成功率统计。统计平均值参考价值不大
如P99 ~ 10ns => 99% request get response in 10ns, the other request hit error or take more than 10ns。
并且往往 latency 和 Throughout/QPS/TPS 存在冲突
Reference
可扩展(伸缩)性 scalability
- 指横向扩展性(scale out), 比如增加节点数量
- 注意区分 纵向扩展 (scale up) ,比如 同一个节点加内存、CPU
- 在软件架构中还存在可扩展性(Extensibility) ,指的是架构上好不好增加需求和功能。
可用性 availablibity
可用性也有带性能的意思,可用指在一定(正常)响应时间的范围内可用,超出就算不可用。不强调性能上限,但是受下限影响。
- 两种计算方法
- 可以提供服务的时间/(可提供服务时间+不可提供服务时间)
- 请求成功次数/总请求次数 (不常用,因为请求失败海可能是由网络等非系统本身问题导致的exception,并不是系统的锅)
可靠性 reliability
听上去类似availablibity, 但是availablibity强调占比,reliability强调时长
可用性好不一定可靠性好,比如一个系统每隔1h挂1s,他的可用性就是99.9999以上,看上去很高,但是间隔1h这个还不如那种一年只宕机2星期的。
- 计算方法
平均失败间隔时长 = 平均连续运行时长
一致性 consistency
严格程度依次下降如下:
- strict 分布式基本不采用这个
- sequential
- causal
- eventual
分区容错性 Partition tolerance
分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。
注意区分 容错性 fault tolerance:定义更加广泛,比分区容错性更广,就指发生错误时候的恢复能力和业务能否继续正常运行。比如设置checkpoint。
其他
可维护性 maintainability
发生故障的系统被恢复的难易程度