辛星浅谈大型网站架构思路之二分解

第一节中我们讨论了简化,如果简化完毕,或者无法简化,那么就要考虑分解它了,那么如何去分呢?通常来说,可以从横向和纵向去分,也可以从软件和硬件去分,这个和我们构架的设计方面有关。

横向分解之我见:

①所谓横向分解,就是分离出的各个部分不存在明显的层次关系,彼此之间独立性较强,当然完全的独立是不现实的。

②第一点思路就是根据功能去分,比如网站分为bbs来交流问题,blog来展示博文信息,news来展示新闻等等,那么可以考虑根据二级域名来做相应的部署,比如bbs放到一台服务器上,blog放到一台服务器上。

③第二点思路就是根据文件去分,我们知道图片是相当耗费资源的,而它由于是静态资源,占用io较多,而动态解析网页文件主要是占用cpu较多,那么就可以让apache去解析网页文件,让lighttpd或者其他服务器来做图片服务器,或者说我们也可以独立出来一台日志服务器。

④第三点就是服务的划分,我们不一定所有的事情都自己去做,可以考虑去调用其他站点的对外服务,比如说我们使用jquery、bootsrap等类库的时候,就可以使用百度、新浪等cdn来简化调用,分担服务器流量,当然由于很多网站提供对外的服务,这点就看朋友们的知识池深浅了。

⑤第四点就是模块的划分,如果一个模块比较特殊,就可以把它独立出来,单独处理,比如文件的上传和下载,文件上传往往也是黑客攻击中很感兴趣的一个环节,我们也需要对上传的资源进行严格的控制,比如下载的时候需要做好防盗链,需要防止用户多线程无限制的下载等等,这些模块我们可以单独提出来,进行严格的控制,防止它们拖垮我们的性能。

纵向分解之我见:

①首先是web前端,我们把那些可以静态化的页面进行静态化,如果条件允许,就使用纯静态化生成真正的html页面,效率会快很多,比如网站的首页,如果不是实时更新的话,那么就可以考虑使用静态化的方式去做。至于伪静态化,由于它对大网站和小网站的意义差不多,就不介绍了。

②然后就是后端的模型上的分离,如果原来没有使用mvc就可以考虑使用mvc,如果mvc的扩展性不够就考虑hmvc来加一层来增强其扩展性,如果三层构架不足以解决问题就考虑四层构架,当然对于一个已经写好的网站来说,往往面临着重构,也是一个很头疼的话题。

③然后就是缓存了,每个层都可以使用缓存。比如服务器可以使用基于web反向代理的服静态服务器比如nginx,squid,varnish等等,在web前端可以考虑使用页面、图片、css、js等缓存,php也可以使用缓存,比如apc、eaccelarator等等,当然对于和服务器的调用,可以考虑memcache等等。

时间: 2024-12-19 22:27:43

辛星浅谈大型网站架构思路之二分解的相关文章

辛星浅谈大型网站构架优化思路之一简化

其实谈到大型网站,它和小型的站点几乎是两个概念,其概念的差别就像航空母舰和独木舟的区别那样,中国早在黄帝炎帝时代就可以制作独木舟了,但是生产航空母舰呢?因为航空母舰太大了,规模的提升带来了很多问题,那么如何去分析并且解决这些问题呢? 我感觉大型网站更应该去简化,不应该为了复杂而复杂,我感觉一套优秀的简化方案是优化网站的最有效的途径,没有之一,什么意思呢?如果让我们的货车跑得更快,那么少拉一些不必要的货物是最有效的方式,也应该是我们真正去优化一个网站的第一步. 那么该如何去简化呢?我们不妨从可以简

浅谈大型网站架构技术进化

短短几十年国内互联网发生了翻天覆地的变化,特别是国家支持互联网发展,提出了“互联网+”行动计划,国内各行各业的互联网更是日新月异.作为一个九零后小白没有亲身经历互联网的演变历程,如今看的像淘宝.京东.腾讯这样的大型网站充满了无数的好奇心,这些网站是怎么运作的,如何处理大量用户的请求,如何解决海量的数据库处理···于是才有对于大型网站架构核心原理以及实例分析一系列的笔记记录.所有笔记记录参考<大型网站技术架构核心原理以及案例分析>,该系列文章没有太多的代码展示,着重是对理论知识的描述. 互联网无

浅谈大型网站动态应用系统架构【转】

浅谈大型网站动态应用系统架构 动态应用,是相对于网站静态内容而言,是指以c/c++.php.Java.perl..net等服务器端语言开发的网络应用软件,比如论坛.网络相册.交友.BLOG等常见应用.动态应用系统通常与数据库系统.缓存系统.分布式存储系统等密不可分. 大型动态应用系统平台主要是针对于大流量.高并发网站建立的底层系统架构.大型网站的运行需要一个可靠.安全.可扩展.易维护的应用系统平台做为支撑,以保证网站应用的平稳运行. 大型动态应用系统又可分为几个子系统: l l l l l l

【架构】浅谈web网站架构演变过程

浅谈web网站架构演变过程 前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变. 该系统具备的功能: 用户模块:用户注册和管理 商品模块:商品展示和管理 交易模块:创建交易和管理 阶段一.单机构建网站 网站的初期,我们经常会在单机上跑我们所有的程序和软件.此时我们使用一个容器,如tomcat.jetty.jboos,然后直接使用JSP/servlet技术,或者使用一些开源的框架如maven+spring+struct+hibernate.maven+spri

辛星浅谈PHP的混乱的编码风格

我们都知道,各种编程语言都有自己的风格,即使是像C和C++那样一脉相承的语言(C++本意完全兼容C的语法),编程风格上还是有些差别,比如很典型的就是C++风格的单行注释和C风格的多行注释. 而虽然Java在很大程度上借鉴了C的语法,但是不可否认,Java的经典的大括号是左大括号是在类名或者函数名等同一行的,而C++风格的则是大括号另起一行,可能有些Java程序员和C++程序员这两种风格都用,但是如果大家多看看大师的编码风格,会发现其实大括号另起一行是典型的C++的风格,大括号不另起一行是典型的J

我也谈大型网站架构(一)

原文:http://www.cnblogs.com/chenlulouis/archive/2009/07/19/1526498.html 话说大型高并发高负载网站的系统架构 一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构.性能的要求都很简单,随着互联网业务的不断丰富,网站相关的技术经过这些年的发展,已经细分到很细的方方面面,尤其对于大型网站来说,所采用的技术更是涉及面非常广,从硬件到软件.编程

浅谈web网站架构演变过程(转)

原文地址:http://mp.weixin.qq.com/s/24f1XBtE76bkg3p0FnqMzg 前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变. 该系统具备的功能: 用户模块:用户注册和管理 商品模块:商品展示和管理 交易模块:创建交易和管理 阶段一.单机构建网站 网站的初期,我们经常会在单机上跑我们所有的程序和软件.此时我们使用一个容器,如tomcat.jetty.jboos,然后直接使用JSP/servlet技术,或者使用一些开源的框架如

辛星浅谈mysql中的元数据

首先解释一下什么是元数据,所谓元数据,就是表示数据的数据,这些数据五花八门,总之,只要不是我们存储到数据库里的数据,大多都可以理解为元数据.那么我们如何来获取这些元数据呢? 总的来说,有三种思路,第一种,各种show,第二种,各种select,第三种,是mysql的命令行下的命令,不是sql语句. 我们首先看第一种,这里我列举一下大家比较熟悉的show语句的用法,其实咱们经常用show来查看信息,比如: show databases; show tales; show create table

辛星浅谈mysql中的数据碎片以及引擎为MyISAM下的操作

对于mysql中的数据碎片,其实和我们删除数据是息息相关的,删除数据的时候必然会在数据文件中造成不连续的空白空间,对于少量的数据的删除,并不会产生多少的空白空间.如果在一段时间内的大量的删除操作,会使得这种留空的空间变得比存储列表内容所使用的空间更大.可能有人会说,我们向数据库中插入数据的时候,会不会在这些空白空间中插入数据呢?答案是会的.但是,它会造成一个后果,那就是数据的存储位置不连续,以及物理存储顺序与理论上的存储顺序不相同,这就比较麻烦了. 按照数据碎片的大小来分,可以分为单行数据碎片和