对于一个大型门户网站来说,知道。可伸缩性是非常重要的怎么样在纵向和横向有良好的可伸缩性,就需要在做架构设计的时候考虑到一个分的原则,想在多个方面说一下怎么分:
首先是横向的分:
1.大的网站化解为多个小网站:当我一个网站有多个功能的时候,可以考虑把这个网站拆分成几个小模块,每一个模块可以是一个网站,这样的话我时候就可以很灵活地去把这些网站安排到不同的服务器上。
2.静态动态分离:静态文件和动态文件最好分离开成2个网站,知道静态网站和动态网站对服务器来说压力的偏重不同,前者可能重IO后者重CPU那么我选择硬件的时候也可以有侧重,而且静态和动态内容的缓存战略也不一样。典型的应用,一般会有独立的文件或图片服务器。
3.依照功能来分:比如有一个模块是负责上传的上传操作很消耗时间,如果和其它应用混在一起的话很可能,一点点访问就会使服务器瘫痪,这种特殊的模块应该分开。平安的不安全的也要分开,还需要考虑到以后SSL购买。
4.不一定要全部用自己的服务器,搜索、报表可以依靠他人的服务,比方googl搜索和报表服务,自己做的不一定比得过别人,服务器带宽都省了
其次是纵向的分:
1.文件也相当于数据库,IO流量可能比数据库还大,这也算是纵向级别的访问,上传的文件图片一定要和WEB服务器分开。当然,数据库和网站都放在一个服务器上的很少了这是最基本的
2.对于涉及到数据库访问的动态顺序来说,可以使用一个中间层(所谓的应用层或逻辑层)来访问数据库(安排在独立的服务器上)最大的好处就是缓存和灵活性。缓存的内存占用比较大,要把它和网站进程分开,而且这样做我可以很方便的去改变一些数据访问的战略,即使到时候数据库有分布的话在这里可以做一个调配工作,这样灵活性就很大了还有好处是中间层可以做电线网通桥梁,可能网通访问双线再访问电信会比网通直接访问电信服务器快。
有人说我不分,可以做负载均衡,对,可以的但是如果分的话,同样的10台机器肯定比不分10台机器可以接受更多的访问量,而且对硬件的需求可能不会很高,因为知道需要哪个硬件特别好。争取让每一个服务期都不空闲,又都不是太忙,合理进行组合调整和扩充,这样的系统伸缩性就高了能根据访问量来调整的前提就是之前有考虑到分,分的好处是灵活性、伸缩性、隔离性以及平安性。