1. 最早的Web应用 服务端 -- -- 客户端
服务器这端的所有内容包含应用、中间件、DB都由一台服务器承担,结构简单,但效率低下。
2. 服务端分化为多台机器协作
服务端分化成多台机器,每台机器不同职责,如 数据库服务器,Application服务器,Web服务器,各台机器之间通过网络相互通讯,相互协作。
3. 进一步分化每个职能以提高效率
比如数据库服务器,可将每个表按主键分区存储至不同服务器。某表的1-3000存储在DB服务器A,3001-6000存储在DB服务器B,等等。将对一个表的访问压力分散到多台服务器上。服务器可以更高效率地为上层提供数据。
4. 冗余 效率与安全性的提高 负载均衡
我们发现,同样功能的服务器,可以通过使用多台相同服务器来实现效率的提高以及安全性的保证,可扩展性也很好。机房出问题的时候,只有一部分服务器受损,其他服务器还可以照常工作。为实现对各台相同服务器请求的压力均衡分布,需要添加负载均衡服务器,专门分析并指派当前压力较为小的服务器,讲请求转发至该服务器。
5. 缓存的引入
在不同的层之间,可以设置用于缓存服务器来进一步提高访问效率。把频繁请求的信息或数据放入缓存,可以大幅提高响应速率。合适的缓存算法决定了缓存的命中率。
6. 雇佣云服务
以上的系统结构虽好,但大量的服务器以及各种设备,需要企业投入极大的购买与维护成本。服务器忙闲时的请求量起伏较大,而服务器却要按峰值时的压力来购置。如某应用忙时需要5台冗余DB服务器才能应付数据访问量,而深夜闲时只需要1台或两台服务器便绰绰有余,我们仍需要投入购买5台服务器。闲时的剩余“生产力”白白浪费了。
这时,便可以通过购买云服务,将这部分的服务交给云服务提供商来解决,我们只需要指定性能需求指标。由中间商对各个客户服务的统一调配调配,实现对硬件的利用最大化。这是一个互利的合作。比如说对于中国,凌晨请求量降到低谷时,正是对美国请求量峰值时间,合理调配,可以很好地实现对硬件资源的合理调配使用。
7. WebService
对于一些常用的功能和应用,我们发现,通过购买WebService可以节约成本。而且,某些特定服务需要实时性,专业性较强,比如我们想得到天气预报,某条道路通畅与否这类信息,用专业的供应商提供的服务比自己去做这方面的事要简单得多。于是开始购买WebService。
8. WebService 的规范化
企业为了选择最合适的WebService,内部维护一张各供应商提供的WebService的目录,记录每个WebService的价格,访问速度,服务质量等信息,综合评定购买最合适的服务。这当中涉及WebService的规范(WSDL WebService Description Language 对外描述服务的格式)。