0%

分布式系统之指标

[TOC]

高并发(High Concurrency)

高并发通常是指,通过设计保证系统能够同时并行处理很多请求。 高并发相关常用的一些指标有响应时间(Response Time),吞吐量(Throughput),每秒查询率QPS(Query Per Second),并发用户数等。

响应时间:系统对请求做出响应的时间。例如系统处理一个HTTP请求需要200ms,这个200ms就是系统的响应时间。

吞吐量:单位时间内处理的请求数量。

QPS:每秒响应请求数。在互联网领域,这个指标和吞吐量区分的没有这么明显。

并发用户数:同时承载正常使用系统功能的用户数量。例如一个即时通讯系统,同时在线量一定程度上代表了系统的并发用户数。

如何提升

  • 垂直扩展(Scale Up)

    • 增强单机硬件性能(优先), 例如更好的磁盘,cpu,网卡,带宽
    • 提升单机架构性能:例如:使用Cache来减少IO次数
  • 水平扩展(Scale Out)

    • 增加服务器数量(前提是系统设计支持水平扩展)

高可用(High Availability)

高可用性(High Availability)通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性(一直都能用),指标通常就是说的多少个9。

  • 6个9的性能:系统可用的概率为99.9999%

如何提升

  • 避免单点:使用单个服务器,一旦该服务器意外宕机,将导致服务不可用
  • 健康检查:监控服务器状态,挂了就进行故障恢复

高性能(High Performance)

高性能(High Performance)就是指程序处理速度快,所占内存少,cpu占用率低

高并发和高性能是紧密相关的,提高应用的性能,是肯定可以提高系统的并发能力的。

应用性能优化的时候,对于计算密集型和IO密集型还是有很大差别,需要分开来考虑。

如何提升

高性能主要是针对代码优化

  • 减少 IO 阻塞导致的 CPU 闲置
  • 减少 锁 导致的串行化
  • 避免大量创建对象和线程(使用对象池和线程池, 或者叫做池化技术

高可靠(High Reliability)

可靠性是指系统可以无故障地持续运行。

与高可用性的区别

可靠性是指系统可以无故障地持续运行。与可用性相反,可靠性是根据时间间隔而不是任何时刻来进行定义的。

有两个极端的例子可以很好的说明这两个概念的区别:

  1. 假想一个服务,可靠性很高,平均来说可以稳定运行10年,但是一旦服务中断,要用一年的时间来恢复,那么它的可用性只有90%。
  2. 假想另一个服务,可靠性很差,运行10秒就会宕机,但是恢复服务只需要1ms, 那么它的可用性是99.99%

可伸缩性/可扩展性(Scalable/scalability)

wiki cn

1
可缩放性(Scalability),又译为“可规模性”,形容词是“可规模化”,是指问题规模和处理器数目之间的函数关系。

wiki en

1
2
3
4
5
Scalability is the property of a system to handle a growing amount of work by adding resources to the system.[1]

In an economic context, a scalable business model implies that a company can increase sales given increased resources. For example, a package delivery system is scalable because more packages can be delivered by adding more delivery vehicles. However, if all packages had to first pass through a single warehouse for sorting, the system would not be scalable, because one warehouse can handle only a limited number of packages.[2]

In computing, scalability is a characteristic of computers, networks, algorithms, networking protocols, programs and applications. An example is a search engine, which must support increasing numbers of users, and the number of topics it indexes.[3] Webscale is a computer architectural approach that brings the capabilities of large-scale cloud computing companies into enterprise data centers.

可扩展性

个人感觉 wiki 的解释很棒,可扩展性,就是可规模性,就是当规模成倍增加时,处理器的数目只需要做对应的增加,就可以达到目标的一种能力。搜索引擎就是一种典型的可扩展的设计,因为当需要索引的数据成倍的增加时,不会因为某个系统的环节而导致无法索引所有的数据。

参考:

高可靠和高可用的区别