大中型网站web程序开发架构思考

Filed under: 开发编程 | 1 Comment »
Posted on

这几天一直在琢磨这个问题,今天一次会上在白板上粗略了画了一下我的想法,会后抽了点时间自己整理了一下。

基本上这个架构也是按照标准的三层结构来设计的,如下图(点击看大图):

Snap1

传统web程序的开发模式基本只有2层:应用层和数据层,有理无理就直接到数据库里去操作(大部分web编程书籍都是这么教的)。

而引入接口层以后,只有对数据的添加、删除和修改是通过接口去数据库里操作,select操作则增加了一个数据缓存,可以大大减轻数据库的压力,而对于一般的大中型网站而言,恐怕更多的访问压力是来自select,而不是对数据的添加、删除和修改的交互性操作。原本,html静态化是解决办法之一,但这个解决办法面临的问题是一旦页面有所变更,则需要全部重新静态化,对于数据量较大的大中型网站,无异是一场噩梦——动静结合,反而能恰到好处。

接口身份验证:采用OAuth,可以做成通用的平台

接口规则:负责将接口方法函数按照select、update、insert、delete进行分类

接口数据缓存:设想是生成数据的XML静态文件,应用层只需要解析这些XML静态文件即可,而接口操作则是输出XML的字符串,可以做成通用平台。引入缓存数据周期,则可以保证不同的应用对于数据本身的实时性的要求得以满足。

接口操作:即实现接口方法函数,根据方法函数到数据库里进行操作,要么输出字符串为XML的结果集,要么输出字符串为XML的操作状态码以告知应用层update、insert、delete操作状态,譬如操作成功、无权限操作等等

应用层:根据业务逻辑的需要调用合适的接口去实现业务逻辑

原则上这样的设计,一方面能平衡网站访问量大带来的程序压力,一方面也能做到应用层与数据层无关。应用层可以采用任何一种开发语言(.net、PHP、java等),而数据库也可以采用任何一种数据库(MS SQL SERVER、MYSQL、ORACLE),对服务器操作系统而言,也能做到WINDOWS+LINUX的混合架构,发挥两种操作系统各自的优势。

时间有限,此图还有待完善,譬如可以结合网站的硬件架构。

Tags : ,