1、定义
Performance:性能 完成某种操作所需时间,通过Response Time来衡量,如web server。另外,在给定时间内,它还与throughput(吞吐量)有关,如ftp server。注意与Latency(时延)的区别,时延是最小的response time,执行任意操作所需要的最小时间。
Scalability:可伸缩性 即规模可调整。 应用程序应对负载改变的能力,比如,一个系统在服务器于100个users和10000个users时的性能差别,如果这种差别在可以接收范围内,就说明这种系统可伸缩性强。或者系统的性能随硬件条件的增加而同步增加,基本成比例增长。如一个服务器的响应时间是100ms,四个是25ms,当然这是理想情况。它有horizontal 和vertical之分,如cluster。
Performance和Scalability有时是矛盾的,如在一个单独的服务器上high performance的系统可能并不能按比例扩展到cluster的系统上,因为有session replication的问题。另外,high performance的系统未必就会high scalability,如EJB可能在分布式情况下有很高的伸缩性,但未必性能很高,当然增加硬件部署成cluster可能会取得high performance。
Performance一般用Load testing来衡量,scalability用Stress testing来衡量。
2、Performance和Scalability相关因素
从架构的角度考虑performance和scalability,主要有下面几个因素:
一、Distribution (分布式)
二、Cluster (集群)
三、访问持久化数据方式
Distribution主要指Object Distribution,应用程序主要是基于分布式组件。它考虑到了scalability,但以牺牲performance为代价的。如EJB中RMI调用代价很昂贵,虽然有些模式可以一定程度上optimize这些问题,如DTO和session façade。从长远考虑,异步分布式,如message queues是一个更好的解决方案
Cluster主要是指Deployment Clustering。有很多种cluster的方式,如farm,应用程序运行在多个server上,但它们彼此之间并不需要通讯,除了它们都需要访问某些资源,如database,这意味着state replication并不需要,著名的ebay.com就是这样的。Cluster主要要考虑两个问题:Routing和Replication。同时cluster需要考虑到应用程序各层的情况,如web tier(session 状态复制), Business layer, ORM layer(cluster缓存),以及database的cluster
阅读(1800) | 评论(0) | 转发(0) |