模式的概念:
主要描述发生在我们周遭不断重复的问题,以及该问题的解决方案的核心。模式的核心就是特定的解决方案,它有效而且具有足够的通用性,能解决重复出现的问题。
架构分为两部分理解:
一、最高层次的系统分解,二、系统中不易改变的决定。可以理解为企业应用中主要组成部分,并且希望在项目早期就定下来的东西。如果很容易就发生改变的东西,那就不是架构。
一般的企业级应用都会采用“层次”的概念来组织设计,将应用分成不同的层次,然后让层次之间协同工作。
在模式中,有些是与架构相关的,它们表示了企业应用中各主要组成部分间的重要决定;还有些模式却也是关于设计的,有助于架构的实现。
企业应用一般都涉及到持久化数据,大量数据,很多人同时访问,大量操作数据的用户界面等特点。并且很少单独存在,通常需要与散布在企业周围的其他企业应用集成。企业应用在选择架构时,必须要结合实际情况选择合适的架构,没有一成不变的选择。
关于性能的几个概念性的知识:
响应时间:系统完成一次外部请求处理所需要的时间,举个例子如:我点击一个“修改”按钮,系统需要花费多长时间才能完成修改数据这个操作,并返回处理结果。
响应性:不同于请求处理,它是指系统响应请求的速度有多快。换句话说就是:从用户发起请求,到用户感觉到系统已经接受到请求的的速度。举个例子如:上传文件时,进度条的作用。
等待时间:是指获取系统任何形式响应的最小时间,即使应该做的事不存在。一般在本机上,会立即得到响应。但是在远程程序上运行程序,往往需要数秒才能得到响应,因为中间数据传输也需要一定的时间。所以我们应该尽量避免远程调用。
吞吐量:是指给定时间内能够处理多大的请求量。在企业应用中,通常用每秒事务数(tps)来度量。但是依赖于事务的复杂性。性能有时指响应时间,有时指吞吐量,具体由用户自己决定。无论是提高了吞吐量牺牲了响应时间,还是提高了响应时间而牺牲了吞吐量,对于用户而言,响应性往往比响应时间更为重要,因此,为了提供响应性而牺牲其它两者也是值得的。
负载:是当前系统负荷的描述,也可以用当前有多少个用户与系统相连来表示。有时也是其它指标的背景,如:当10个人同时在线时,系统的响应时间是0.5秒。但是20个人在线时,系统的响应时间是2秒。
负载敏感度:是指响应时间随着负载变化的程度,假如A系统10-20个用户在线的情况下,响应时间一直是0.5秒。而B系统10个用户在线的情况下,响应时间是0.2秒,但是在20个用户在线的情况下,响应时间变化为2秒时。我们说,此时A系统的负载灵敏度是低于B系统的,或者说系统B衰减的比系统A快。
效率是性能除以资源,如:一个双CPU资源的性能是30tps,另一个系统有4个同样的CPU,性能是40tps,那么我们说前者效率是高于后者的。
一般系统的容量是指最大有效负载或者吞吐量的指标。它可以是一个绝对最大值或者性能衰减到低于一个可接受阈值之前的临界点。
可伸缩性是指向系统中增加资源(通常是硬件)对系统性能的影响。一个可伸缩性的系统允许在增加了硬件后,能够有性能上的合理提高。例如:为了提高一倍吞吐量,应该增加多少台服务器等。垂直可伸缩性或称垂直延展,通常是指提高单个服务器的性能,例如增加内存。水平可伸缩性或称水平延展,通常是指增加服务器数量。