我们要的究竟是什么:对于CMS系统的思考(三) 推荐
2009-08-01 00:38
495 查看
继续阐述问题:
1.静态的Web请求和CMS后台的分离:静态页面的请求本身是一个消耗非常低的应用,一台普通的服务器内存大点应该就可以处理一个可观的请求量。但是实际情况中我们很多的服务器不是这样的。他们访问处理速度慢,并发量低,访问峰值的时候很容易就请求阻塞了。一个非常重要的原因,CMS系统和Web应用在一起的问题!当CMS开始工作,尤其是为了在用户访问开始上升的同时更新内容的时候,CMS自己就吃掉了服务器很多的资源。更不用说整站内容更新的时候带来的巨大计算量了。
所以,我希望能将CMS从Web服务器分离出来,使用独立的服务器(我们叫CMS服务器)来部署。写入文件的时候,巨大的计算量在CMS服务器中运行,这样就不会影响Web服务器的效率,运算结果出来之后只需要获得Web服务器的写入权限,讲文件写入Web服务器即可。同时,CMS服务器独立了,这时候使用的时候基本上也不用担心它负载的问题,因为即使是宕机了(最坏的打算),也不会影响用户访问网站。因此,我们甚至可以使用一台服务器来部署多套CMS系统来支持多个站点的内容。这样,多一台服务器,却消除了所有的Web服务器的潜在危险,同时也可以集中进行CMS系统的管理。甚至可以考虑多站使用一套系统,这样系统维护不用准备多套代码,但是得每个站是独自设置的,而且必须便于分离,使得如果有站需要分离出去的时候不会造成麻烦。
2.数据库的冗余性:以往的CMS系统有很大的数据冗余,排除无意义的冗余以外,一定程度上,数据冗余和少量计算是只能选择一种的:或者一次计算出一些数据,存储如表,以便以后直接调用,节省计算,当产生变动的时候再计算一次;或者每次都根据大量的数据从新计算后使用。
当选择了Web和CMS服务器分离的情况下我还是更偏向于后者的,我们可以承受大量的计算来保证我们数据的轻便和清晰。
3.系统设定和数据的存储:数据分为xml和数据库两种方式来存储,所有插件、系统等的设定全部以xml的方式来记录,所有网站内容的东西入库。另外,数据库方面,当网站规模还比较小的时候可以用MySQL,当到一定的规模了之后,还是推荐Oracle的,这样的话,就需要系统兼容两种数据库了。
兼容数据库有两种方式,和第2点的方案是比较雷同的:(1).语句静态化,根据业务需要和不同的数据库选择,生成一批SQL语句,供调用。当数据库产生变化的时候,再重新生成一次。这样的好处是:生成一次,以后只要调用就好了。(2).原理和Hibernate一样,写伪SQL,每次执行的时候,根据当前的数据库环境和条件生成SQL再执行,当然,好处就是没有复杂的SQL静态化机制,但是每条SQL都会产生很多额外的计算量。
1.静态的Web请求和CMS后台的分离:静态页面的请求本身是一个消耗非常低的应用,一台普通的服务器内存大点应该就可以处理一个可观的请求量。但是实际情况中我们很多的服务器不是这样的。他们访问处理速度慢,并发量低,访问峰值的时候很容易就请求阻塞了。一个非常重要的原因,CMS系统和Web应用在一起的问题!当CMS开始工作,尤其是为了在用户访问开始上升的同时更新内容的时候,CMS自己就吃掉了服务器很多的资源。更不用说整站内容更新的时候带来的巨大计算量了。
所以,我希望能将CMS从Web服务器分离出来,使用独立的服务器(我们叫CMS服务器)来部署。写入文件的时候,巨大的计算量在CMS服务器中运行,这样就不会影响Web服务器的效率,运算结果出来之后只需要获得Web服务器的写入权限,讲文件写入Web服务器即可。同时,CMS服务器独立了,这时候使用的时候基本上也不用担心它负载的问题,因为即使是宕机了(最坏的打算),也不会影响用户访问网站。因此,我们甚至可以使用一台服务器来部署多套CMS系统来支持多个站点的内容。这样,多一台服务器,却消除了所有的Web服务器的潜在危险,同时也可以集中进行CMS系统的管理。甚至可以考虑多站使用一套系统,这样系统维护不用准备多套代码,但是得每个站是独自设置的,而且必须便于分离,使得如果有站需要分离出去的时候不会造成麻烦。
2.数据库的冗余性:以往的CMS系统有很大的数据冗余,排除无意义的冗余以外,一定程度上,数据冗余和少量计算是只能选择一种的:或者一次计算出一些数据,存储如表,以便以后直接调用,节省计算,当产生变动的时候再计算一次;或者每次都根据大量的数据从新计算后使用。
当选择了Web和CMS服务器分离的情况下我还是更偏向于后者的,我们可以承受大量的计算来保证我们数据的轻便和清晰。
3.系统设定和数据的存储:数据分为xml和数据库两种方式来存储,所有插件、系统等的设定全部以xml的方式来记录,所有网站内容的东西入库。另外,数据库方面,当网站规模还比较小的时候可以用MySQL,当到一定的规模了之后,还是推荐Oracle的,这样的话,就需要系统兼容两种数据库了。
兼容数据库有两种方式,和第2点的方案是比较雷同的:(1).语句静态化,根据业务需要和不同的数据库选择,生成一批SQL语句,供调用。当数据库产生变化的时候,再重新生成一次。这样的好处是:生成一次,以后只要调用就好了。(2).原理和Hibernate一样,写伪SQL,每次执行的时候,根据当前的数据库环境和条件生成SQL再执行,当然,好处就是没有复杂的SQL静态化机制,但是每条SQL都会产生很多额外的计算量。
相关文章推荐
- 我们要的究竟是什么:对于CMS系统的思考(四) 推荐
- 我们要的究竟是什么:对于CMS系统的思考(六) 推荐
- 我们要的究竟是什么:对于CMS系统的思考(一) 推荐
- 我们要的究竟是什么:对于CMS系统的思考(二) 推荐
- 我们要的究竟是什么:对于CMS系统的思考(五) 推荐
- 我们要的究竟是什么:对于CMS系统的思考
- 思考┊读大学,究竟读什么?【狐狸强烈推荐的一本书】
- 探索 Android 系统启动流程 - 当我们按下电源键,Android 究竟做了些什么?
- 平时我们常常说先做出一个原型系统,那么究竟什么是原型呢?
- 国人对高等教育的普遍误解——“我们能从大学得到什么”系列之一 推荐
- 实战智能推荐系统(4)-- 什么是好的推荐系统?
- 实战智能推荐系统(4)-- 什么是好的推荐系统?
- 实战智能推荐系统(4)-- 什么是好的推荐系统?
- 我们工作到底为了什么(这篇文章很重要)----强烈推荐
- 想系统的学习一下项目管理,有什么好的书籍推荐吗?
- 这个年代,我们还能做什么? 王泽宾 推荐
- WFAS 将给我们带来什么? 推荐
- 一道算法引发的思考:编程之外,我们还要关注什么
- 建站推荐十个免费的CMS内容管理系统(Php+mysql)
- 推荐系统绝对不会向你推荐什么