<blockquote id="shwb3"><ruby id="shwb3"></ruby></blockquote>
  • <small id="shwb3"><strong id="shwb3"></strong></small>

      1. <big id="shwb3"></big>
        1. 首页 > 其他 > 详细

          在线抢购平台_课程设计报告

          时间:2019-06-16 01:03:23      阅读:67      评论:0      收藏:0      [点我收藏+]

          标签:持续时间   在服务器   gmv   高可用   总结   安装   错乱   收获   ear   

           

           

          第1章 概述

          1.1 课程设计的核心任务

          1. 需求分析、可行性分析、E-R图、关系图、系统架构图等的编写
          2. 总体设计、详细设计、代码实现
          3. 项目测试

          本系统: 后端采用SSM(Spring+SpringMVC+MyBatis)的架构,实现RESTful API 接口,前端采用react进行前后端分离设计,完成商品在线系统。

          1.2 课程设计工作进程

           

          已经完成,用户登录注册,商品的添加,活动促销的添加,商品的查看与秒杀。

          后续继续完成,订单页面的优化与完成,针对高并发下单任务的处理,针对用户重复秒杀商品的处理,加入redis 进行数据缓存,使得系统处理更加高效。

          第2章 
          需求分析

          2.1 用户需求

          2.1.1 业务需求

          1. 电商平台经常进行搞活动,此平台有很大的使用地方。
          2. 低廉的价格,昂贵的商品,会吸引很多人参与。
          3. 从众心理以及贪小便宜的心理使得平台传播广,知名度更高。
          4. 前后台分离模式,前端采用SPA应用,使得用户体验更加友好。
          5. 秒杀时网站的访问?#30475;?#22686;,服务器极易容易崩溃。
          6. 秒杀时购买的请求数量远大于库存,只有部分用户能够成功;
          7. 活动种类丰富,容易造成数据错乱,用户获得错误的页面;

          2.1.2 特殊需求

          2.2 可行性分析

          2.2.1 技术可行性

          A . 采用前后端分离的架构,前端采用react完成SPA单页应用,即使后端压力过大,也不会影响前端页面的显示,前端做好合理的loading动画,使得用户会有更好的体验。

          1. 后端采用 SSM 的架构模式,通过现在市面上或者成熟的企业的架构方法,使得开发成本和运营成本大大降低。
          2. 数据库采用MySQL,关系型数据库比起非关系性数据库有更好的纵向能力,使得数据更加完善规范,降低服务器处理数据出错的概率,大大提高系统的稳定性。
          3. 前端采用NGINX托管,采用反向代理的方式,讲请求代理到服务器的应用端口上面,隐藏服务器端接口对外的?#25104;洌?#38477;低?#32531;?#23458;攻击的风险。使得运营成本大大降低。
          4. 采用此模式。服务器压力已经相比起传统的WEB应用大大降低,因此可?#28304;?#22823;降低服务器的要求。
          5. 前后端的分离,静态资源的托管,服务端的开发更加简洁,同时项目后期迭代更加方便快速。
          6. 目前测试项目放在腾?#23545;?/span>10元学生机上,表现效果依然良好,估计如果是具有很大的并发量,对服务器的升级也不是很多,?#28304;?#23485;的要求也不是很大。同时服务器?#33041;?#32500;成本比起以前的方式大幅度降低。

          2.2.2 经济可行性

           

          2.3 系统功能

          1. 登录注册功能

          客户可以通过此接口进行账户的登录与注册,目前与手机短信验证码的开发与联调正在进行当?#23567;?#20026;了项目的整体安全考虑,不提供管理员注册的接口,如果需要进行管理账户的注册,应该先进行普通账号的注册,然后通过数据库修改用户权限。

          1. 商品的查看

          此部分可以对商品的信息进行查看和修?#27169;?#30475;查看当前所有的商品,包括正在进行活动的商品。针对管理员用户,还有针对对商品进行添加后修改的操作。

          1. 活动的开启

          针对管理用户可以?#38405;?#20010;商品进?#24515;?#19968;段时间的活动开启,设计活动的持续时间已经商品的优惠价格。

          1. 商品的购买

          针对非活动商品,用户只能进行原价的购买,针?#28304;?#25240;的商品,可以进行打折过后的价格进行购买,如果购买用户量过大,后端采用读写事务锁的方式进行数据的读写,能处理并发数目,针对更大流量的高并发处理,目前正在进行当?#23567;?/p>

          第3章 概要设计

          3.1 系统设计模式

          系统采用前后端分离模式,前端采用react web框架和antd ui样式库进行构建,通过axios进行api接口的访问。后端采用ssm的架构模式完成对数据的操作,并向前端提供访问接口,返回json的数据进行前后端交互。

           

          3.2 系统总体结构

          整体架构图

           技术分享?#35745;? src=

           

           

          添加商品流程:

          技术分享?#35745;? src=

           

           

          前端抢购流程:

           技术分享?#35745;? src=

           

          后端处理数据:

           

          技术分享?#35745;? src=

           

           

           

          3.3 持久层设计

          数据库E-R

           技术分享?#35745;? src=

           

           

           

           

           

           

           

          第4章 
          详细设计与系统实现

          4.1 业务逻辑设计与实现

          用户访问网址,通过nginx让浏览器下载我们的web资源。由于前端是一个SPA应用,前端会根据当前访问的URL来进行页面的显示,每个页面,会根据页面的不同或者用户的点击不同,向后端发送http请求,后端根据请求的URL和参数进行数据的处理,然后返回JSON数据,前端通过JSON数据的不同,渲染数据到页面或者提供错误信息。

          前端API请求?#28210;茫?/span>

           技术分享?#35745;? src=

           

          请求?#28210;茫?/p>

          技术分享?#35745;? src=

           

           4.2 表现层设计与实现

          前后端分离,前端采用了React,在前端已经做好了部分的路由控制,可以?#34892;?#30340;避免后端提供页面需要去判别用户权限,能减轻后端的压力。其次采用了antdui库,使得前端样式统一,添加数据方便,格式固定,前端主动提供表单的验证,可以减少表单填写错误的来回请求,大大的提高用户的舒适度。

          前端路由控制:

           技术分享?#35745;? src=

           

          登录时前端进行表单校验:

           技术分享?#35745;? src=

           

          登录页面:

          技术分享?#35745;? src=

           

           

          注册页面:

           

           技术分享?#35745;? src=

           

          商品列表页:

           技术分享?#35745;? src=

           

          商品详情页:

           技术分享?#35745;? src=

           

          添加商品:

           

          技术分享?#35745;? src=

           

          添加抢购活动:

           技术分享?#35745;? src=

           

          4.3 项目难点及解决方案

          针对高并发的处理:由于高并发,可能会造成服务器处理异常,CPU处理缓慢,最终导致有部分用户不能正常的访问页面,所以采用了前端端分离的模式,前端采用nginx做静态资源的分发。这样与后端数据处理不在一个进程中,即使后端并发数量过大造成系统缓慢,但是用户仍然可以看到前端页面,不影响用户的操作。其次,采用前后端分离的模式,后端不用去渲染模板,也能大大提高系统的复杂读,提高高可用性。

          把商品库存的减少和订单的创建写到一个事务里面,从而实现并发数目的处理,解决超卖现象。

          4.4 典型代码片段与设计过程

           

           

           

           

           

           

          第5章 
          测试与部署

          5.1 系统测试

          后端测试:

          1. 通过写脚本的方式,生成一定的并发量,看系统的处理情况,已经当前系统的各个?#24067;?#30340;状态。
          2. 是否存在xss攻击漏洞。√
          3. 授权的token是否可以伪造,过期后是否已经不能用。√
          4. 查看请求的返回结构体,是否和预期的一致。
          5. 不按规定传递参数访问接口,观看数据的拦截情况。

          前端测试:

          1. 多个脚本同时获取我们的前端页面,能否正常显示,速度是多块。
          2. 前端的路由拦截是否已经完善。
          3. 前端是否已经过滤xss的攻击,以及是否能正常显示后端的错误信息。√

          结论:本次测试,虽然各项都已经通过,但是在部分测试项里面,反馈的情况不是很好,如前端加载过慢,可能这和服务器的带宽有很大的联系,其次由于技术限制,对整个系统的更高级的安全测试没有进行。

          5.2 系统部署

          部署环?#24120;?/p>

          服务器: 腾?#23545;?/span>10元学生机,12G1M带宽

          操作系统: centos 7

          服务器框架: nginx 1.12.2

          Java 环?#24120;?java 1.8.

          MySQL版本: 8.0.12

          由于本项目是前后端分离,后端采用spring boot编写,所以后端代码没有部署在传统的tomcat上面,直接打包成jar包,然后部署。

          后端部署:

          1. 在本地通过mvn命令,将项目打包成jar包。
          2. 通过ftp工具将jar包上传到服务器。
          3. 在服务器上安装我们需要的Java环境和MySQL环?#24120;?#24182;成功启动mysql,进入mysql控制台,加载我们提前编写好的sql语句。
          4. 通过命令 java -jar ./miaosha-server.jar &命令,后台?#24066;?#25105;们的代码。
          5. 在服务器上通过,curl 127.0.0.1:8080 判断是否有消息从而判断我们部署后端代码是否成功。

          前端部署:

          1. 由于本项目是采用react开发,需要在本地通过 npm run build打包成静态文件。
          2. 在服务器上安装好我们需要的 nginx版本。
          3. 将前端打包好的代码上传到服务器。
          4. 修改服务器的nginx?#28210;茫?#21152;载我们的前端代码,并?#28210;?#21453;向代理的地址。

          技术分享?#35745;? src=

           

           

          1. 在我们的域名服务商哪里,添加对二级域名的解析。
          2. 为了服务器的安全,这里我们开启服务器的防火墙,只想外暴露80443端口。
          3. 最后,通过访问我们?#28210;?#22909;的二级域名:javaweb.lcylove.cn 便可以正常的访?#23454;?#25105;们的项目。

           

          第6章 课程设计总结

          6.1 系统基本软件度量数据

          系统基本上完成了目前能完成的功能,比如登录注册,商品的添加,活动的添加,商品?#33041;?#35272;以及对于普通商品的下单,对于活动商品的请购。针对抢购,从前端到后端,都具有相关的函数或者数据进行判别,从而实现系统的稳定高效。

          6.2 课程设计项目的收获与展望

          本次项目学会了很多东西,首先肯定是2个人一起小组完成,采用了github做了代码库,这样每个人的代码都暴露在了另外一个人的眼前,从而可以相互的了解双方代码的完成的进度,以及对方代码编写的质量,从而可以及时的提醒对方代码有问题,或者不应该这么写,其次就是看别人的代码也是一种提升。

          本次我们的项目是一个在线抢购平台的项目,虽然目前已经完成了主要代码的编写,但是针对部分问题还是没有解决,目前只能处理一部分的并发量,如果并发数量过高,那么系统有部分的问题。后续应该会采用redis进行并发的处理,其次就是由于时间关系,部分功能也没有完善,包括前端页面管理员和普通用户的页面也耦合在一起,后期可以进行拆分。

          其次,在完成项目的时候还是比较轻松的,但是写文档和测试也是一种学问,个人感觉比写代码难多了,出现了很多问题,希望后面能改正。

           

          在线抢购平台_课程设计报告

          标签:持续时间   在服务器   gmv   高可用   总结   安装   错乱   收获   ear   

          原文:https://www.cnblogs.com/pawn2018/p/11029201.html

          (0)
          (0)
             
          举报
          评论 一句话评论(0
          登录后才能评论!
          ? 2014 bubuko.com 版权所有 鲁ICP备09046678号-4
          打开技术之扣,分享程序人生!
                       

          鲁公网安备 37021202000002号

          t6娱乐平台官方
          <blockquote id="shwb3"><ruby id="shwb3"></ruby></blockquote>
        2. <small id="shwb3"><strong id="shwb3"></strong></small>

            1. <big id="shwb3"></big>
              1. <blockquote id="shwb3"><ruby id="shwb3"></ruby></blockquote>
              2. <small id="shwb3"><strong id="shwb3"></strong></small>

                  1. <big id="shwb3"></big>