回顾前两节的内容:我们提到了简单的多线程架构和基于线程池的架构
本节首先给出关于架构评价的一些指标:
[H. Xie 2002]关于架构提出了micro performance和macro performance,以此为参考,在本系列中,对架构好坏的评价分析时也是从这两个层面来讨论,但内涵稍有不同:
用户角度:公平性,响应时间,吞吐率。其中响应时间有包括等待时间和处理时间。对人来说公平性是第一位的,如果一个架构是歧视性的,往往没有生命力,先进先出的策略是公认的公平的策略。每个用户都希望自己提交的任务可以尽快处理,但在耐受力上等待时间和处理时间有不同,去银行办业务,等待4分钟办理业务1分钟的体验和等待1分钟办理业务4分钟的体验会不同。由于任务的处理时间和任务的复杂程度以及资源的竞争使用有关,因此架构主要考虑的是减少等待时间,减少资源的竞争。吞吐率是单位时间处理的请求数,这也是评价服务质量的重要指标。
系统角度:每指令需要耗费的指令周期CPI,缓存命中率,资源的饱和使用程度,开发的难易程度,代码的可维护性等。在资源竞争程度高的架构上CPI会很高,在局部性不强的架构缓存命中率会很低,CPU占用率低,磁盘的IO低的架构是浪费的架构,开发难度大正确性很难保障的架构维护成本也会很大,因此架构越是自然,越是符合业务规律越是好架构。
回顾我们此前提到的架构,这里来做一个定性的评价:
|
公平性 |
响应时间 |
吞吐率 |