当前位置: 首页 > news >正文

实体店做网站有用吗建设网站的功能定位是什么原因

实体店做网站有用吗,建设网站的功能定位是什么原因,wordpress设置配置文件报错,网站制作工作室哪家比较好Java秒杀系统优化-Redis缓存-分布式session-RabbitMQ异步下单-页面静态化项目介绍基于SpringBootMybatis搭建的秒杀系统#xff0c;并且针对高并发场景进行了优化#xff0c;保证线程安全的同时极大地提高了服务器的吞吐量#xff0c;主要优化手段有页面静态化、Redis缓存(页…Java秒杀系统优化-Redis缓存-分布式session-RabbitMQ异步下单-页面静态化项目介绍基于SpringBootMybatis搭建的秒杀系统并且针对高并发场景进行了优化保证线程安全的同时极大地提高了服务器的吞吐量主要优化手段有页面静态化、Redis缓存(页面缓存、对象缓存)、RabbitMQ异步下单项目实现的主要功能为 登录--商品列表浏览--秒杀--付款或返回。本项目利用压测工具Jmeter对优化前后的性能做了详细的评测附带完整的测试报告以及整个系统的设计思路报告。软件说明整个项目的结构为严格的Maven项目结构源码包下的包名即为其主要作用的缩写名易于理解概不赘述。本文重点阐述计思路及优化方案并附在Jmeter下压测的完整结果报告。设计方案以下分功能模块阐述一、登录功能及session登录的设计并不复杂主要思路为两次MD5盐化首先为前端用固定saltpassword做一次MD5然后传至后端后端逻辑首先对用户存在与否做判断然后取出该用户的salt值和前端传来的已经一次MD5的password再次MD5然后比较即可然后生成session并存储在redis缓存中返回cookie。值得注意的是在user表中加入随机的salt可极大降低彩虹表攻击的风险还有就是将session值存储于redis缓存中也极大地降低了对数据库的访问。二、商品列表、订单详情、商品详情功能这部分功能逻辑十分简单即为查数据然后展示无须赘述需注意的是这部分功能的优化策略详见后文。三、秒杀功能该功能为系统的核心功能既要保证程序的线程安全性又要满足高并发场景的需求。在未优化前其主要的逻辑为查库存--查是否秒杀--秒杀又因为该逻辑理论上应为一个原子的操作所以加锁或者作为事务但是这样会大大影响程序的并发性能所以需做优化。四、数据库数据库的主要设计为五张表goods、miaosha_goods、miaosha_user、miaosha_order、order_info具体数据表的主要结构在./sql/中有sql文件并且./java/util/中有用于生成测试用户的脚本有兴趣的读者可以查看。以上即为主要功能接下来阐述对应的一些优化手段。优化方案一、页面缓存页面缓存的主要思路为将一些用户经常请求的页面例如/goods/to_list--商品列表页面存储到redis缓存中在用户请求的时候直接在缓存中获取并返回如果取缓存失败则利用thymeleaf的手动渲染渲染后存入缓存并且返回。我们可以很明显的知道不使用页面缓存的请求每次都先访问数据库然后经thymeleaf渲染然后返回其中渲染的过程可能需要从磁盘中读取html模板而使用页面缓存以后直接在内存缓存中读取无需查库和渲染只有失效的情况下才需要查库渲染所以在些用户经常请求的页面中使用页面缓存优化可大大降低对数据库和服务器的压力。(需要注意的是合理的设置页面缓存的有效期)。二、对象缓存相对于页面缓存对象缓存是个更细粒度的缓存比如说在登录模块中的session中我们把session对应的user对象存储到redis缓存中那么在需要user对象的页面中既不需要登录也不需要更具cookie去查找数据库只需要通过cookie在redis中获取user对象即可使用同理这样类型的缓存也会减小对数据库的压力。三、页面静态化上述的两种缓存都是利用redis缓存服务器来实现的虽然可以降低对数据库和服务器的压力但是redis服务器的容量和处理能力也是有限的所以我们可以考虑将页面模板直接缓存到用户的浏览器那么每次请求用户只需要请求用于渲染的对象即可这不仅仅减轻了redis服务器的压力同时也减少了带宽的消耗此即为页面静态化。在本项目中主要实现的是商品详情、订单详情页面、秒杀页面的静态化主要方法是利用ajax的异步加载请求渲染需要的对象并且通过配置####### spring.resources的相关参数来告诉浏览器是否缓存缓存有效时间等等。四、静态资源优化主要手段包括JS/CSS压缩CDN等此项目中并没有尝试但不失为优化的另外一些好的思路。以上部分的优化手段主要为缓存、页面优化等于前端比较接近的手段对于后端接口的优化将在以下部分阐述五、接口优化主要思路为Redis预减库存RabbitMQ异步下单具体流程如下1、系统初始化加载库存到redis缓存2、收到请求预减库存3、判断库存若剩余则入队列否则秒杀失败4、出队下单分析一、通过将库存加载到redis中使得每次判断、减少库存直接从内存中读取无需访问数据库二、收到请求预见库存然后判断注意这一顺序非常重要保证了线程安全分析因为redis封装的decr()等函数是线程安全的无需外加同步所以你通过decr()减少库存后获取到的库存永远都是你刚刚减少后得到的库存本身就是个原子操作不会存在线程安全问题然后根据这个库存来入队不符合条件的秒杀请求直接返回失败极大地减少了服务器的压力而且整个后台逻辑中需要保证原子性的也仅仅是decr()这一个操作并且由于redis经过了乐观锁优化所以整个系统的并发性相对于自己首先同步代码而言并发性得到了极大的提高。三、完成了上述的操作再去实现接下来的逻辑就很简单了唯一需要注意的是从队列中出来的请求执行秒杀过程是一个事务需完整执行否则回滚。同时订单的详情页面做一个静态化优化前端轮询秒杀结果得到结果后进行渲染即可。以上即为接口优化的阐述接下来是压测报告。测试参数服务器:(Mysq、Redis、RabbitMQ等服务也均安装在本机上CPU: Hasse/战神Z7m Intel-i7-6700HQ 2.6GHz-3.5Ghz 四核心八线程 三级cache 6M内存 8G DDR3L磁盘 5400转/s 1TBJava版本1.8.0_161 Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)MySQL5.7.20-log MySQL Community Server (GPL)Redis4.0.10 容量--100MRabbitMQ3.7.7Mybatis、Druid等具体配置参数见./resource/application.properties文件测试方法测试工具使用Jmeter并发测试工具为保证无非相关变量的影响每次测试的并发线程数均设为1000并发时间1s并发循环次数为10次如图所示/goods/to_list接口测试该接口为商品列表接口对该接口做了页面缓存的优化分别对优化前优化后做压测结果如下优化前的测试结果优化后的测试结果对于上图的两个测试我们比较关注的是聚合报告里的 ThoughPut 的值其值可以作为吞吐量的一个较好估计。由图可见优化前系统吞吐量为921.1/sec优化后系统吞吐量为4046.9/sec也就意味着加速比为4.39。/goods/detail/{goodsId}接口测试该接口为商品详情接口对该接口实现了页面静态化的处理分别对优化前优化后做压测结果如下优化前的测试结果优化后的测试结果对比以上两图会发现似乎区别并不明显很容易让人得出优化无效的结论其实不然据本人分析这种情况应该是由Jmeter自身导致的因为Jmeter做测试的时候并不会依赖于其他浏览器只是发起http请求而浏览器所具备的一些功能他并没有比如缓存所有利用Jmeter进行测试并不能得出一个如意的结果但是我们可以通过浏览器来大致的了解页面静态化后的一些改变。如图可以清楚的看到这个页面大部分的内容都被“已缓存”只有400个字节左右的对象被请求并传输这也就达到了我们优化前的目的了。秒杀接口优化对于接口测试我实现准备了1000个user和cookie具体脚本见./java/util/下代码在Jmeter中使用参数方法可自行百度如图对于秒杀接口我们只对优化后的接口进行压测测试的情况分为两类1、秒杀库存充足2、秒杀库存不足对于秒杀库存充足的情况我们设置初始的库存为200然后并发量和其他测试设置一致结果如图对于秒杀库存不足的情况我们设置初始的库存为0然后并发量和其他测试设置一致结果如图对于处理逻辑比较复杂的接口而言最好和最坏的情况能达到这样的一个吞吐量同时保证线程安全性比较满意。以上为全部测试报告读者若有不明之处欢迎提问。
http://wiki.neutronadmin.com/news/377455/

相关文章:

  • python网站开发代码怎么建设自己的论坛网站
  • 福永招聘网站建设wordpress th7好卡
  • 公司网站域名备案泰安有口碑的网站建设
  • 国外做的比较的ppt网站阳谷网站建设电话
  • 网站百度seo推广怎么做用KEGG网站做通路富集分析
  • 做网站前需要准备什么软件中国建设银行网站首页u盾登入
  • 网站建设的功能要求冠县品牌网站建设推广
  • 成都网站建设顶呱呱九江建设局网站
  • 网站建设公司信科网络网络营销服务管理
  • 用nodejs做的网站阿里云服务器如何用IP做网站
  • 网站建设策划师wordpress更改背景
  • 做前端常用的网站及软件wordpress 插件表
  • 丽江市建设局网站密云郑州阳网站建设
  • 专业网站开发工具外贸公司网站模板
  • 公司网站建设计入科目淘宝网站开发店铺什么类别
  • 网站session关键词站长工具
  • Wordpress增加QQ分享沈阳优化网站公司
  • 响应式网站和传统网站异同小语种外贸网站建设
  • 长沙网站建设外贸做营销型网站 推广的好处
  • 网站建设公司好发信息网淘宝网官方网站电脑版
  • 做网站工作职责python基础教程文档
  • 湖南网站开发企业地图截选做分析图的网站
  • 湖北网站备案需要多久室内设计手绘图
  • 影楼招聘seo技术培训茂名
  • 商标设计网站主要提供哪些服务软件技术毕业设计题目
  • 金华集团网站建设网站地址栏图标文字
  • 湘潭网站seo磐石网络商标设计在线生成器
  • 网站扁平化布局总部在深圳的大企业
  • 网站维护的内容有哪些wordpress手机pc
  • 博物馆网站建设情况说明设计素材图片大全 psd素材