在了解分布式之前,先讲述一些一些常见的评价指标。这些概念在之后的系统介绍中将会经常提起。
有些中文有些歧义,建议以英文为准。

性能指标 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

可用性也有带性能的意思,可用指在一定(正常)响应时间的范围内可用,超出就算不可用。不强调性能上限,但是受下限影响。

  • 两种计算方法
    1. 可以提供服务的时间/(可提供服务时间+不可提供服务时间)
    2. 请求成功次数/总请求次数 (不常用,因为请求失败海可能是由网络等非系统本身问题导致的exception,并不是系统的锅)

可靠性 reliability

听上去类似availablibity, 但是availablibity强调占比,reliability强调时长

可用性好不一定可靠性好,比如一个系统每隔1h挂1s,他的可用性就是99.9999以上,看上去很高,但是间隔1h这个还不如那种一年只宕机2星期的。

  • 计算方法
    平均失败间隔时长 = 平均连续运行时长

一致性 consistency

严格程度依次下降如下:

  • strict 分布式基本不采用这个
  • sequential
  • causal
  • eventual

分区容错性 Partition tolerance

分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。

注意区分 容错性 fault tolerance:定义更加广泛,比分区容错性更广,就指发生错误时候的恢复能力和业务能否继续正常运行。比如设置checkpoint。

其他

可维护性 maintainability

发生故障的系统被恢复的难易程度

Reference