我们要的究竟是什么:对于CMS系统的思考
2014-02-11 16:01
573 查看
继续阐述问题:
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 究竟做了些什么?
- 究竟是什么导致我们电脑“离奇死机”
- 这些年我们用过的CMS建站系统
- 对于系统中使用临时表的思考
- 我们能从Linux系统上学到什么?谈谈linux的四个维度
- 对于SQL的Join,在学习起来可能是比较乱的。我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚。Coding Horror上有一篇文章,通过文氏图 Venn diagrams 解释了SQL的Join。我觉得清楚易懂,转过来。 交差集" cross join 《Linux命令行与shell脚本编程大全
- 加入.NET圈子带来的思考,什么是RSS?RSS能带给我们什么?
- 讨论系统高可用时,我们在讨论什么?
- 当我们在谈论技术时,技术的本质和价值究竟是什么?
- 一道算法引发的思考:编程之外,我们还要关注什么
- HDFS是什么?HDFS适合做什么?我们应该怎样操作HDFS系统?
- 当我们游览网页的时候, 在输入链接点击回车之后到看到新网页这中间究竟发生了什么?
- 加入.NET圈子带来的思考,什么是RSS?RSS能带给我们什么?