三生书肆WebApp研发

更新时间:2021-03-12 来源:工程论文 点击:

【www.rjdtv.com--工程论文】

软件开发论文范文三:

  题目:三生书肆WebApp开发与设计
 

  摘要:随着互联网行业的快速发展, 互联网用户对软件的性能越来越重视, 尤其对业务提出了很高的要求, 已经不是原来简单的HTML静态网站所能比拟的。本文以三生书肆Web App为例, 从网站开发的角度出发, 以用户体验为基础。首先分析了前端的优化设计, 包括页面静态化、缓存等, 其次介绍了后端服务器的优化, 包括图片服务器分离、反向代理和负载均衡

  关键词:HTML静态化; 图片服务器分离; 缓存; 反向代理和负载均衡;

  三生书肆Web App是以Java语言为基础的分布式系统。在开发过程中应用成熟开源框架SSM, 并且实现了前后端分离。前端设计中实现了订单、搜索、登录等功能, 后端设计中实现了商品管理、商品添加等功能。本文主要介绍前后端开发中应用用的优化技术。
 

软件开发

 

  一、前端设计

  (一) HTML静态化

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

  (二) 缓存

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


                                        Spring Mvc的配置如下图:
 

  :

  二、后端设计

  (一) 图片服务器分离

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

                                



 

  (二) 反向代理和负载均衡

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

          






     负载均衡的实现:

  

  三、总结

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

  参考文献

  [1]https://blog.csdn.net/hudashi/article/details/51063079
  [2]https://redis.io/commands
  [3]https://www.aliyun.com/jiaocheng/topic_12518.html
  [4]http://blog.csdn.net/cywosp/article/details/38026809


     论文一:软件开发论文
  论文二:Linux下AACS水印写入的系统结构和功能要求
  论文三:三生书肆WebApp研发
  论文四:计算机软件开发中分层研发技术与实践
  论文五:计算机软件开发设计的难点和解决方案

本文来源:http://www.rjdtv.com/gongchenglunwen/5060.html