【三生书肆WebApp开发研究】 书肆

三生书肆WebApp开发研究

三生书肆WebApp开发研究 摘要:随着互联网行业的快速发展,互联网用户对软件 的性能越来越重视,尤其对业务提出了很高的要求,已经不 是原来简单的HTML静态网站所能比拟的。本文以三生书肆 WebApp为例,从网站开发的角度出发,以用户体验为基础。

首先分析了前端的优化设计,包括页面静态化、缓存等,其 次介绍了后端服务器的优化,包括图片服务器分离、反向代 理和负载均衡。

关键词:HTML静态化;
图片服务器分离;
缓存;
反向代 理和负载均衡 三生书肆WebApp是以Java语言为基础的分布式系统。在 开发过程中应用成熟开源框架SSM,并且实现了前后端分离。

前端设计中实现了订单、搜索、登录等功能,后端设计中实 现了商品管理、商品添加等功能。本文主要介绍前后端开发 中应用用的优化技术。

一、前端设计 (一)HTML静态化 众所周知HTML页面传输效率最高、损耗资源最少的状态 纯静态化的,所以尽可能使网站上的页面采用静态页面来实 现。在三生书肆WebApp中,考虑用户在高并发环境下对业务 的要求,将商品的页面设计为HTML静态[1]页面。使用 Freemaker工具将每个商品对应生成一个HTML文件,保存到 磁盘,访问文件就不一定使用Tomcat,可以使用Nginx访问。在项目中使用Freemarker整合Spring,把Configuration交 给Spring容器管理,并且添加依赖的jar包。在后台添加、 编辑商品时生成静态网页的时候,需要book-portal项目发 布服务,供后台系统调用。当后台添加或者修改商品时调用 此服务时,book-portal项目的功能就是生成静态页面,当 然用户获得数据的方式还是通过调用book-rest项目发布的 服务获得数据。

(二)缓存 三生书肆WebApp中,考虑到在某一时间段内会产生较多 的请求,为了不让数据库产生额外的压力,以Redis[2]为基 础搭建了Redis集群。集群中应该至少有三个节点,每个节 点有一备份节点,需要6台服务器。首先由于硬件条件限制, 在Linux系统环境下将集群搭建为伪分布式,创建了6个端口 模拟实例。在book-rest项目中导入Jedis依赖的jar包.。在 book-rest项目中创建一个redis操作的接口,分别创建两个 实现类对应redis的单机版和集群版。当使用单机版redis时, 配置单机版的实现类,当使用集群版本的时候,配置集群版 的实现类。

二、后端设计 (一)图片服务器分离 在三生书肆WebApp中,考虑到产品信息主要体现在图片 上,而且产品图片数多,为了让用户有更快的访问速度以及 后台管理更新速度,以FastDFS[3]为基础进行图片服务器分离。FastDFS的搭建可以使用一台虚拟机来模拟,只有一个 Tracker、一个Storage服务.配置nginx访问图片。在项目 book-manager-web中将FastDFS提供的jar包添加pom.xml中, 初始化全局配置。加载clien.conf配置文件。

(二)反向代理和负载均衡 在三生书肆WebApp中,考虑到特殊时间段内(开学前后) 访问量增多,为了不影响用户的正常使用,以nginx[4]为基 础搭建反向代理实现负载均衡。反向代理的实现:首先在 Linux系统环境下安装一个Nginx服务器,由于Nginx应有有 多个应用服务器(可以是tomcat)所以使用一台虚拟机,多 个Tomcat来模拟。负载均衡的实现:只需要在upstream的 server后面添加一个weight即可代表权重。权重越高,分配 请求的数量就越多,默认权重是1。

三、总结 任何一个高并发高流量网站的开发,其中任何一个环节 达到极限都会造成网站性能的下降,影响用户体验,进而造 成巨大的经济损失。三生书肆WebApp分布式系统不仅可以根 据应用需要和存取方便来配置商品资源,而且有利于发挥开 发者在系统开发、维护和商品资源管理方面的积极性和主动 性,并且提高了系统对用户需求变更的适应性和对环境的应 变能力;
最后系统扩展方便,增加一个网络结点一般不会影 响其他结点的工作。