我最近一个项目的架构与演变过程


            想发帖了,记录下最近做的一个项目的架构与演变过程。
            首先我不是个爱胡侃的人,所以拿点实际的例子说事,架构并不复杂。
            

         最近做完了一个Web项目,因为这个项目是我们学校的一个对外的门户,并且学校方面特别要求具有较高的扩展性,目的
是要我把架构设计考虑的全面些。需求在开发前没有给,但是有一些功能方面的描述,比如说把学校的校报,图片,视频资料和电视
台都网络化等等。因为这个项目考虑以后
Linux平台部署,而我比较拿手的就是Java,所以就采用Java开发,我这里不会描述太多
Java的名词,以免不太懂Java的朋友不太明白。毕竟本文是说我这个架构的设计思路的。

              因为确切的说这个项目的除了页面不是俺设计和制作的外,别的东西都是单干的,所以项目开发周期拉的比较长,俩月,
又因为纯
Java代码已经上万行级别。就算一个中型的CMS吧

          
不多啰嗦,上架构图,第一次画图,比较丑:


设计思路是这样的:

这个架构设计主要就是考虑web项目的高并发高性能的特点,所以用了一些性能优化技术。

这个架构不是一蹴而就的,有每一步实现的考虑。

1.项目的最开始先重写了FCK在线编辑器,加入了权限控制,上传资源管理,视图的调整。

2.接下来重新实现了一套基于角色的N级审核权限管理,不是我非要重写,因为我还没有什么这方面太好的实现。

3.上面说的啰嗦了点,最先加入的就是一个第三方缓存框架,用的最新版本,我的项目一般有最新的就用最新的,粗略统计了一下命中率99%左右。

4.后来在指导老师的要求下,加入了模板引擎,抛弃了很土的replaceAll,这里比较痛苦,修改了所有的前端的已经弄好的页面模板,而且写
了两套,一套提供给二级动态页,一套纯静态,首先二级分页静态,我这没有什么太好的想法,不想用
Ajax分页,因为不利于搜索引擎收录。
所以只好采用第一版静态,保证首页的所有链接打开的都是静态页。当然即使是二级动态页与后台的交互的响应时间也是迅猛的,毕竟是从缓存里
读的。三级页面纯静态没有问题,所有实时交互数据都
Ajax了他。

5.考虑到配置文件和静态页的加载,于是采用了文件级别的缓存,为了怕页面多了溢出,于是做了持久化。

6.考虑到路由的灵活配置,整合了一个路由转向框架。.

7.考虑到后台信息搜索性能,于是整合了全文搜索引擎,抛弃SQL查询,整合最新的第三方分词器(感谢下IK作者)。

8.本来想就此打住,发现Mysql有个很不爽的超时机制,改数据库配置不是长久之计,于是加了一个池子。

9.服务端开了一个线程池接收请求并整合一个静态页处理器。

 

由于学校的硬件目前没有到位,所以暂且部署在一台IBM服务器上。个人觉得本文通俗易懂,对技术基础没什么要求。如果园友有更好的设计思路
可以交流一下,谢谢。

posted on 2009-09-03 21:02  施杨  阅读(...)  评论(... 编辑 收藏

导航