关于泰捷商城项目与如何做一个高可用的网站

news/2024/5/20 1:54:58/文章来源:https://blog.csdn.net/weixin_34302798/article/details/91887149

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

hi 各位, 上两周一直都在做泰捷商城这个项目。这个项目的目的就是卖泰捷出品的WEBOX。这是我第一次做有关电子商务的网站。各种头绪。其实原始需求很简单,只卖一件商品,每星期只卖一次。 但是online to offline是从来不是一件简单的事情。因为这一次你所做的事情不仅仅是在线上,而是很多事情要发生在线下的真实世界里。这是一件非常的消耗精力的事情。但人又是生活在现实生活中。比如订单的流转。因为这一次我们不仅仅是做一个订单,而是要把订单真正的转换成工厂生产出来的货物,而且要通过物流公司真正的把货物运送到顾客的手中。再比如说钱的流转,要做到即时又安全。

6月24日,商城的第一次上线就遇到了很严重的问题。事情是这样。由于程序错误,在中午12点开售的时候,倒计时完成,但是购买入口的按钮一直都没有出现。于是当时所有人开始刷新我们的官网。而我们的官网的首页有非常多的图片,而且有的图片甚至没有进行压缩。比如一张只有几十个像素乘以几十个像素的图片竟然有1.2MB的大小。因此产生了大量的并发连接和502错误。浏览器上我们的官网根本打不开或者是打开速度非常慢,而这又会导致更多的页面刷新。简而言之,我们的官网瘫痪而用户请求像滚雪球一样越来越大,也就是服务器雪崩。

不过不幸中的万幸是虽然我们的官网服务器崩溃了,但是我们商城的服务没有受到太多的影响。因为它们在物理上是隔离的。而且因为官网的崩溃,避免了用户在同一时间蜂拥到商城服务器。因为崩溃的时候,我们的运营人员在论坛和QQ群等地方发布我们商城服务器真正的购买入口URL,但这种场景,用户是没有办法在同一时间蜂拥到商城的。我们卖完1000台的时候已经是中午1点半了,比预计的时间慢了太多。最初我们预计在10分钟之内就会卖光。

第一次泰捷售卖就这么草草收场了。虽然不是特别成功,但是由于这是泰捷成立以来卖出的第一批WEBOX,第二天我们还是在公司开了几瓶香槟。我想这是我最尴尬的一次庆功了。我人生中开过三次香槟。第一次是微信注册用户过2亿(当时是作为编外人员参加的,只吃饭不能抽奖)。第二次是微信海外注册用户超过1亿。这是第三次了。不过这次确实是非常的尴尬,我都没好意思喝香槟。

总结一下这一次的抢购。失败的地方:

1 购买入口放在的页面太多图片,下载速度过慢。

2 程序错误导致购买入口无法展示。

3 大量的用户刷新请求导致雪崩。

成功的地方:

1 官网服务器与商城服务器分离,一边崩溃的时候,另外一边没有受到影响。

总结了第一次的得失,我们改进的地方第一就是把我们官网的展示购买入口的页面做的非常简单,基本上没有图片。第二在倒计时完成的时候不发起任何的动态请求。第三把官网全部改成用CDN的形式访问。其实基本上只需要把图片全部放在CDN上就可以了。不过全部放在CDN上更加保险一点,不过费用也更高。

再做一些更深层次的思考,如何做一个高并发的网站? 如何预估一个网站的设计容量是否足够?

首先要考虑系统可能可能出现瓶颈: 带宽,并发连接数, CPU和IO、内存。如何评估带宽和并发连接数不会超限? 首先需要预估出你的PV。特别是抢购类的网站,用户过来冲垮你可能就是开始的那一两秒钟的事情。所以你必须要搞清楚在那一两秒中的时间有多少人一起刷你的网页。

然后我们发现, 带宽、并发连接数和内存是不太好通过压力测试去模拟真实情况的。因为利用压力测试比较容易模拟的是大量的重复transaction, 而不好模拟的是大量的并发transaction。比如你可以模拟100、200、400、1000个客户端去重复发送请求产生压力,但你很难去模拟1W,2W,10W个真实的客户端请求。不过,可以通过你的PV来计算出真实的带宽、并发连接数和内存。

计算方法如下:

带宽 = PV * 平均每页面的资源数 *平均每个资源的大小

并发连接数 = 带宽 / 平均下载速度 = PV * 平均每页面的资源数 * 平均每个资源的平均下载时间

举例来说明:

PV是100/s, 每个页面要下载30个资源, 平均每个资源大小为100KB。

带宽 =  100/s * 30 * 100 KB = 300MB/s 

平均每个资源下载速度为 100KB/s

并发连接数 = 300MB/s / 100KB/s = 3000

内存需要根据并发连接数来估算,

例如当你在100并发连接时 占用1MB内存, 那么3000并发连接时, 内存估计消耗为30MB。 不尽准确,但可以作为参考。 

CPU基本和平均每秒请求量相关。

IO和平均每秒请求量先关,和CACHE大小和命中率相关。

在优化静态网站的时候,可以根据上面的公式来做优化。比如怎么降低带宽? 回到公式, 带宽 = PV * 平均每页面的资源数 *平均每个资源的大小。 可以有很多方法, 比如我们可以通过降低平均每个页面的资源数量来解决, 减少一些图片或者是其他资源。也可以降低每个资源的平均大小,多使用304或者是压缩一下图片和JS等。 还有就是降低PV, 比如用一些AJAX的请求代替页面的全部刷新等。

另外一个问题就是动态请求的容量如何预估的问题了。首先要压力测试去测试出所有动态请求的最大QPS。 找出QPS最低的那个请求即为系统的短板。系统的最短板的QPS即为动态请求的最大容量了。动态请求的最大容量不能满足系统的请求怎么办? 纵向扩容, 平行扩容, 优化代码, 实在没有办法,还可以做过载保护,实现服务柔性可用。不过这个议题的内容太大,不做过多讨论了。

经过总结, 我们在7月1日的第二次抢购就比第一次进步了许多。人生中总有很多第一次的事情会发生, 第一次可能成功也可能会失败。我想失败不可怕,关键是吸取教训做好下一次。

转载于:https://my.oschina.net/costaxu/blog/287554

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_761999.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux上关闭tls1.0协议,NGINX禁用TLS1.0和TLS1.1使网站更安全

一、为什么要禁用 TLS1.0、TLS1.1:SSL 由于以往发现的漏洞,已经被证实不安全。而 TLS1.0 与 SSL3.0 的区别实际上并不太多,并且 TLS1.0 可以通过某些方式被强制降级为 SSL3.0。由此,支付卡行业安全标准委员会(PCI SSC)强制取消了支…

JSP 网络书签按钮聚合网站

1. http://www.jiathis.com/ JiaThis是一个提供网页地址收藏、分享及发送的WEB2.0按钮工具,网站的浏览者可以方便的分享到人人网、开心网、QQ空间、新浪微博等一系列社会化关系网络站点。 是一个网络书签按钮聚合网站,类似国外的Addthis。 JiaThis™“…

讨论标志设计的全英文论坛形式的网站--界面设计

转载于:https://www.cnblogs.com/kaixinniu/archive/2008/09/28/1301163.html

可进行JavaScript代码测试与调试的12个网站

概述:JavaScript是网站前端开发最为重要的一门编程语言,本文收集了能够在线测试与调试JavaScript代码的12个网站 1、JS Bin JS bin是一个为JavaScript和CSS爱好者们提供特定情况下的代码片段测试的网站。它可以让你和你的同伴合作调试代码。你可以在这里…

分享15款精美的免费 HTML5 网站模板

在过去的几年,网页设计和制作人员就已开始关注和使用 HTML5 了,如今 HTML5 得到了更加广泛的应用,国外有很多网站已使用 HTML5 技术制作。之前的文章和大家分享过精美的HTML5企业网站和HTML5个人网站,大家可以去欣赏一下这些作品。…

(转)Web自动化测试之12306火车票网站自动登录工具

原文地址:http://www.cnblogs.com/TankXiao/archive/2012/02/20/2350421.html还记得2011年春运,12306火车票预订网站经常崩溃无法登录吗。 今天我们就开发一个12306网站自动登录软件。 帮助您轻松订票通过前两篇博客Fiddler教程和HTTP协议详解&#xff0…

分享7个老师们常备的资源网站

教师较常用的网址,通常基本都是资源、通过自学形式的网址,这样的网址我们可以用于通过自学提升自己。 这儿就来分享7个教师常备的资源网,个个基本都是经典,一下子都给你哦。 1、我要自学网 较为知名的一个自学网站,这儿…

网站文件系统发展分布式文件系统fastDFS

网站文件系统发展 1、单机时代的图片服务器架构 初创时期由于时间紧迫,开发人员水平也很有限等原因。所以通常就直接在website文件所在的目录下,建立1个upload子目录,用于保存用户上传的图片文件。如果按业务再细分,可以在upload目…

网站前端_EasyUI.基础入门.0005.使用EasyUI Accordion组件的最佳姿势?

1. 基础的手风琴<div id"a" class"easyui-accordion" data-options"width:500,height:300"><div data-options"iconCls:icon-ok,title:about,bodyCls:accordion_padding"><h3 style"color:#0099FF;">Acco…

Jekyll – 基于纯文本的开源静态网站 博客系统

Jekyll 是一个开源的静态网站 & 博客生成工具&#xff0c;类似 WordPress。但是和 WordPress 又有很大的不同&#xff0c;原因是 Jekyll 只是一个生成静态网页的工具&#xff0c;不需要数据库支持。但是可以配合第三方服务&#xff0c;例如disqus。最关键的是 Jekyll 可以免…

给你一个网站,你该如何测试?你需要记住这4条法则!

我想大多数开始进行web端页面测试的人&#xff0c;一开始会的都是在页面上点点点&#xff0c;然后一看到页面上有什么图片失效啊&#xff0c;页面遮挡就觉得是找到了大bug&#xff1b;一开始我也是这样&#xff0c;尽管我很谨慎&#xff0c;很仔细&#xff0c;把页面上的每一个…

软件测试人员和QA必须关注的15个网站,值得收藏!

相信大家在学习的时候&#xff0c;不管学什么&#xff0c;都会习惯性地寻找各种学习资源。在大家自学软件测试的时候&#xff0c;也不会例外。那么&#xff0c;软件测试网站有哪些&#xff1f;我们到底应该如何精通软件测试呢&#xff1f;我们不妨一探究竟。 日常学习除了在一…

错误配置 MongoDB 数据库:微软招聘网站曝数据泄露安全漏洞

微软刚刚为自家移动版招聘网站封堵了一个注册用户信息泄露漏洞&#xff0c;以帮大公司追索错误配置部署的MongoDB在线数据库而知名的安全研究人员Chris Vickery发现了这一问题&#xff08;且与他此前的多个发现类似&#xff09;。此前&#xff0c;Vickery曾帮MacKeeper找到了泄…

JAVA笔记26-网络编程(不等于网站编程)

一、网络基础&#xff08;TCP/IP详解&#xff09; 1、IP协议&#xff08;Internet Protocol&#xff09;&#xff1a;网络层&#xff0c;支持网间数据报通信。无连接数据报传送&#xff0c;数据报路由选择和差错控制。 IPv4 32位&#xff08;4字节&#xff09;&#xff0c;IPv6…

如何使用nuget管理C#网站项目

2019独角兽企业重金招聘Python工程师标准>>> 接手C#的项目团队后&#xff0c;发现历史遗留的项目dll管理有些混乱&#xff0c;各个开发人员名下的项目有很多自定义dll或者是很老版本的dll文件&#xff0c;往往一个项目从vss拉下来后无法生成成功&#xff0c;提示缺少…

2017淮北计算机会考,2017年安徽淮北高中会考报名网站:淮北教育局

淮北高中会考报名网站&#xff1a;淮北教育局【导语】每个人都会面临大大小小的考试&#xff0c;有可能这一辈子都会逃脱不了考试的命运。无忧考网整理了淮北高中会考报名网站信息。希望对各位有些帮助。参加2017年安徽淮北高中会考的考生可点击进入《淮北教育局》进行淮北高中…

网站品牌列表效果 jQuery效果

用户进入页面时&#xff0c;品牌列表是默认的精简显示的如下图&#xff1a; 单击商品列表下方的查看全部按钮来显示全部的品牌&#xff0c;同时推荐品牌的文字会高亮显示&#xff0c;按钮里面的文字也变成“收起查看” jQuery 代码如何&#xff1a; <script type"text/…

BCrypt加密怎么存入数据库_「安全」3种常用的信息加密技术,让网站固若金汤...

2011年12月被曝的CSDN密码泄露事故中,网站安全措施不力,导致用户数据库被黑客“拖库”并不稀奇&#xff0c;令人错愕的是数据库中的用户密码居然是明文保存&#xff0c;导致密码泄露&#xff0c;成为地下黑市交易的商品。通常&#xff0c;为了保护网站的敏感数据&#xff0c;应…

一键seo提交收录_想让百度100%收录你的页面?那就进来看看

没有收录就没有SEO收录是SEO的第一步&#xff0c;收录越多才有可能获得更高的SEO流量。最近&#xff0c;由于百度收录机制变的更加严格&#xff0c;很多站长发现网站收录变少了、变慢了、甚至不收录了。站长平台提交不能提升收录你可能做了sitemap&#xff0c;也在百度站长平台…

功能性新网站开发一点点经验心得

因为本次是全程参与了松松软文新平台的开发&#xff0c;所以卢松松今天把网站开发的一些经验心得写出来&#xff0c;供大家参考。以后大家在迁移新网站的时候&#xff0c;有一个参考依据&#xff0c;我都做了什么&#xff0c;什么时候做&#xff0c;都会列出来&#xff0c;希望…