火车票抢购软件(12306明确加速包不能优先购票 还有这些风险)
火车票抢购软件文章列表:
- 1、12306明确加速包不能优先购票 还有这些风险
- 2、揭秘网购抢单灰产:抢单软件代拍低至8块8 非法薅羊毛涉嫌犯罪
- 3、茅台官方i茅台平台——不拼网速、不拼手速,只拼运气抢茅台
- 4、嘀嗒清单 TickTick for Android v6.1.9 高效日程管理软件
- 5、最近很火的京东抢购飞天茅台是怎么回事?从架构原理来分析一波
12306明确加速包不能优先购票 还有这些风险
原标题:12306明确“加速包”不能优先购票!抢票软件背后暗藏哪些风险?
近日,铁路12306表示,消费者使用的“加速包”并不能拥有优先购票权,无论是哪款购票软件都需要在铁路12306购票系统排队。而除了交“智商税”,使用抢票软件抢购火车票的背后,还可能暗藏哪些风险隐患呢?
“加速包”不能优先抢到票
最终都要在12306系统排队
家住河南的冯雷平时在浙江湖州工作,今年国庆期间,他提前3天通过某抢票软件购买了20元不等的“加速包”并朋友圈让好友助力抢票,可是并没有起效。最终,冯雷取消了“加速包”并在第二天成功在12306抢到票,这让他觉得自己上当受骗了。
冯雷说,当时自己心里特别焦虑,“每天打开看好几下,一方面怕抢不到票,另一方面害怕是不是自己钱花得不够,加速没有加到最快。”
沈阳市民王强告诉记者,自己因为买了一张没有座位的票,所以临时选择用“加速包”重新抢票。自己明明在12306官网上看到平台已经放票,可以直接买到票,然而在使用“加速包”的这个平台上,依然显示还在抢票中。
记者在网上搜索发现,目前市面上的抢票软件至少有几十种,有的直接收费抢票,有的需要转发朋友圈增加曝光度,有的甚至会默认付费抢票。
某抢票平台客服表示,抢票成功率90%以上。“我们二等座收费100元一张,硬座60元一张。”
记者调查发现,无论哪款抢票软件,最终都要在12306系统排队,如果真没票,花钱也抢不到,另外花钱购买加速包也不一定能保证效果。
12306工作人员介绍,那属于第三方网站,第三方网站不会平白无故给你买票,“所有的票都是从我们网站出的,他们有可能高价收了钱,来我们这儿买不到车票。”
抢票软件存在个人隐私泄露风险
遇到退改签等可能遭遇麻烦
使用抢票软件的背后暗藏哪些风险?首先就是个人隐私的泄露。
上海铁路局合肥站宣传助理员苏楠介绍,第三方抢票软件留存旅客信息,利用这些信息可能做了很多旅客并不知道的商业行为,这对泄露旅客信息存在一定的安全隐患。
其次,使用抢票软件,如果遇到退改签等情况也可能遭遇麻烦。杭州铁路公安处乘警支队一级警员韩剑介绍,因为铁路12306没有官方授权对接第三方软件,导致车次信息、退票改签等操作有所差异,使用第三方抢票软件可能存在多收旅客退票、改签费用,无法退票改签,或是列车运行信息有误等情况,给旅客带来损失或影响行程。
10月20日16时33分,深圳北开往厦门的D668次车抵达厦门站,一名男性旅客驻足在站台迟迟未出站。经了解,该名旅客是要到厦门北站转车去莆田,却坐到了厦门站。“这位旅客为了‘图方便’,使用的是第三方购票软件购买的车票,但该购票软件更新不及时,列车运行信息有误,所以造成了到站错误。”韩剑说。
耽误行程软件平台应担责
旅客应通过官方渠道12306在线购票
湖南金州律师事务所高级合伙人、律师邢鑫分析,如果发生使用抢票软件但最终耽误行程的情况,抢票软件平台应该对此担责。
“消费者与软件平台之间存在合同关系,而这一合同的目的,是消费者能买到‘可以正常乘车’的票,但是如果发车后才提供出票信息耽误行程,明显无法实现合同目的,软件平台应为此承担违约责任。”
除了不少大平台的抢票软件,在部分电商平台和社交网络,还有不少声称是“黄牛专用抢票脚本”“抢票插件”等各类软件。
对此,杭州铁路公安处乘警支队一级警员韩剑提醒:各地警方还发现有不法分子将木马病毒伪装成“最新抢票软件”“火车票抢票插件”“专业12306抢票订购工具”等抢票软件在社交聊天工具、网络群共享等渠道中传播扩散,存在较大安全隐患。
那么遇到抢票高峰,旅客应该怎么做呢?
上海铁路局合肥站宣传助理员苏楠提醒:“旅客通过官方渠道12306在线购票,如遇到所需车次和席位无票的情况,可以进行排队候补,当遇到所需车次和席位有票的时候,系统将自动购买车票。”
总台记者/王逸群 张国亮 梁明星
揭秘网购抢单灰产:抢单软件代拍低至8块8 非法薅羊毛涉嫌犯罪
刚刚过去的“6·18大促”中,商家提供的限量版商品以及“折扣秒杀”成为消费者争相抢夺的“心头好”。如何抢购?为何会“秒杀”失败?
贝壳财经记者调查发现,使用“抢单软件”通过自动化的方式进行抢购或者直接找人“代拍代抢”成为了抢购商品的“捷径”之一。
“抢单软件”的存在,直接导致了部分消费者网购“秒杀”失败,不仅影响消费者正常交易,还可能造成资金损失。6月19日,数美科技黑灰产研究专家吴茗告诉贝壳财经记者,“抢购工具中有可能暗藏木马病毒,使得账号密码泄露、甚至交易密码泄露,造成资金损失等。不过相比个人行为,这样的工具在黑灰产手中往往就是操作成百上千个账号‘批量作案’,这会影响消费者正常交易,也会对商家的营销活动造成影响。”
非法“薅羊毛”涉嫌犯罪,如海淀区人民检察院官微曾披露一则案件,其中被告人黄小天(化名)针对某母婴APP的优惠活动,使用技术手段批量虚假注册账号,并利用这些账号“薅羊毛”,最终其因涉嫌提供侵入、非法控制计算机信息系统程序罪被判处有期徒刑三年六个月。
“必中代拍”服务售价8.8元到25元 记者下载到“抢单软件”
“百分之百稳定!0秒下单1秒付款!”“你自己接代拍,利润爆炸!”6·18期间,贝壳财经记者在网购平台上不止看到了热销商品,还看到了“代抢购”商品的服务。
一个售价9.9元“教代拍方法”的卖家告诉贝壳财经记者,其可以出售给记者一款支持京东、淘宝、拼多多等多个平台的“抢购软件”,通过该软件可以实现自动抢拍;另一个售价8.8元的卖家则表示会提供给记者软件的下载链接,“手机不卡就行,百分之百稳定。”
提供代拍服务的卖家店铺简介。
在一些黑灰产论坛中,贝壳财经记者也找到了不少抢单工具,在一款名为“快抢京东助手”的软件中,记者发现其可以自动设置下单时间、抢单次数、抢单ID等,甚至还能设置是否开发票。该软件开发者在“说明教程”中称,抢购的关键在于设置好参数,“秒杀时根据你不同的网络环境,不同的参与人数都略有不同,需要自己根据经验判断,如果不会设置请保持默认即可。”
贝壳财经记者下载到的抢单软件。
除售卖抢单软件的卖家外,还有不少卖家直接表示提供抢单服务,如一个标价25元提供“稳定代拍”的卖家表示,其可以稳定在0秒下单,1秒付款,须提前发送需要抢单的商品链接,并提前垫付资金,“专业代拍,基本百分百中,拍不到全额退款。”而另一个代拍卖家则表示,代拍价格需要根据买到的商品来定,“收取商品价格5%的代拍费”。
对此,吴茗告诉贝壳财经记者,早期黑灰产进行抢购主要依靠网速快或者简单的自动点击工具,后来则逐渐演变为“打接口”的自动化工具,“目前抢购类黑灰产往往通过BP链接 定时跳转进行抢购(BP即Buypass,其可以跳过商品页缓存、选择尺码、结算这一繁琐的步骤,直接进入订单确认页),可以在抢购开始的一刻自动跳转进入订单确认页面,从此不再需要掐表看时间,不再因为需要选择商品属性消耗时间,跳转的一瞬间点击提交,轻松实现毫秒级抢购。比如晚上8点开始抢购,真人的反应再快可能也需要几十毫秒或几百毫秒,而工具可以做到在0秒000毫秒就‘出手’。”
不过,需要注意的是,为了保障能够“自动下单”,使用此类抢购软件的前提是首先在软件中上传好自己的网购账号、密码以及支付密码和自己的具体收件地址和联系方式,这就为信息泄露甚至财产安全埋下了隐患。
“抢购工具中有可能暗藏木马病毒,使账号密码甚至交易密码泄露,造成资金损失;此外,在使用代抢服务时,收件人地址、联系方式甚至身份证号码等隐私信息也有泄露的危险。”吴茗对贝壳财经记者表示。
这一行为或已涉嫌犯罪。贝壳财经记者查阅中国裁判文书网发现,2018年有两名黑灰产从业人员因开发并销售针对淘宝优惠活动的“联合抢拍器”,最终被法院认为其行为已构成提供侵入、非法控制计算机信息系统程序罪。
卖卡密、非法薅羊毛扰乱市场秩序 黑灰产涉嫌犯罪
需要注意的是,通过特殊工具进行抢单在商家层面依然属于“真实交易”,当商家的优惠活动开启时,最为忌惮的是组团“薅羊毛”的专业黑灰产“抢单团队”。
“黑灰产使用特殊技术工具产生的利益比普通人要大得多,比如6·18来临,其会通过组建VIP群、羊毛群并发放抢购工具的方式引流,最后在这款工具中添加‘卡密’等方式收取工具租金;一些拥有大量账号的黑灰产则会在有利可图的活动中抢购低价商品或稀缺商品再进行转卖以赚取差价,这会导致囤积商品,哄抬物价,影响了消费者的正常交易,也对卖家的营销活动造成影响。”吴茗对记者表示。
抢单黑产产业链。数美科技供图。
在数美科技方面向记者提供的一则案例中,某电商平台发售新款球鞋,每次的发售量在1万至3万双,官方售价1299元,而二次交易的价格远高于官方发售价格,贵的甚至高达万元。在这一情况下,黑灰产使用特殊工具进行抢购,抢走了首次发售中90%以上的球鞋,让正常用户很难买到。据统计黑灰产倒卖一双球鞋获利的均值在1000元左右,这意味着一次新款球鞋发布,黑灰产获利在千万元量级。
东鹏特饮技术负责人、深圳市鹏讯云商科技有限公司总监董文波曾公开表示,东鹏特饮在进行“扫码抢红包”促销时曾发现,有不少异常的扫码行为,内部估算有5%被羊毛党薅掉,后来引入技术团队发现,事实上被羊毛党薅掉的红包大概有8%-10%。
非法“薅羊毛”涉嫌犯罪,如海淀区人民检察院官微曾披露一则案件,其中被告人黄小天(化名)针对某母婴APP的优惠活动,使用技术手段批量虚假注册账号,并利用这些账号“薅羊毛”,最终其因涉嫌提供侵入、非法控制计算机信息系统程序罪被判处有期徒刑三年六个月。
中国政法大学传播法研究中心副主任朱巍表示,针对羊毛党攻击,且原因不明时,分两类情况:第一,若是不涉及系统破坏,仅是利用漏洞,这类情形严重的话,实践中涉及盗窃罪、侵害知识产权罪,不严重的话,薅到的券属于不当得利,应予返还,情节严重或者数额巨大的则可能触犯刑法;第二,若是涉及计算机系统破坏出现Bug的,属于《刑法》破坏计算机信息系统罪,情节特别严重有五年以上的刑期;第三,传播这类信息的可能涉及前面罪名的共犯,也可以单独构成传授犯罪方法罪,或构成扰乱市场秩序的行政处罚。
湖北尊而光律师事务所张梅律师认为,薅羊毛黑灰产严重扰乱了正常的市场竞争秩序,直接侵害了经营者的财产权,并大幅提高企业的经营成本。薅羊毛黑灰产还会直接损害消费者的利益,因为经营者推出优惠活动的总金额有限,黑灰产大肆攫取了优惠券,真正的消费者获得优惠券的概率就少了。对于薅羊毛这种新型的违法犯罪行为,执法和司法机关应当顺应形势需要,强化技术手段和侦查能力,在黑灰产形成之际抓住典型案件进行重点打击,对不法分子进行法律威慑,避免因放任违法行为而出现“破窗效应”。
新京报贝壳财经记者 罗亦丹 编辑 陈莉 校对 薛京宁
茅台官方i茅台平台——不拼网速、不拼手速,只拼运气抢茅台
最近抢茅台似乎成了一件很流行的活动,各个平台和商超都以平价茅台作为引流的一种方式。如今茅台官方也推出了自己的线上抢茅台的途径——“i茅台”APP。这个APP一上线就很火爆呀,我在各个平台一瓶茅台都抢不到的人,也打算在这里试试水。没想到经过近一个月的尝试,居然中了一瓶虎茅。下面给大家介绍一下i茅台上茅台酒的抢购方法。
“i茅台”APP在各个应用商店里都能下载到,加载界面的飞天标志,让人看了就蠢蠢欲动。
在APP的首页,是关于贵州茅台的简介,在这里我们可以先了解茅台的相关信息。申购之前要做实名认证,需要用身份证号和手机号,每个身份证只能绑定一个账号,要注意的是,手机号的机主要和身份证是同一个人的,我媳妇的就因为手机号是我的,用她的身份证就认证失败了。
在申购界面展示出了所有现在可以申购的茅台酒,现在有4种酒可以申购,分别是虎年茅台、茅台1935、贵州茅台珍品、虎年茅台礼盒装。每天抢购的时间段是9:00-10:00,只要在这个时间段点击申购,中签的概率都是一样的。
现在比较受欢迎的是两款虎年茅台,不管是自己收藏还是用来出手,价值都比较高。
茅台1935因为是刚刚上市,据说酒质略逊于飞天茅台,不过可能是遵义1935升级而来,之前的售价远低于现在的价格,暂时升值潜力不大。
贵州茅台珍品,也是新上市不久的一款酒,因为本身价格就比较高,而且数量很少,基本也抢不到,现在似乎也不太容易出手。
预约申购选择本地的经销商,如果本地没有的话要选择就近的经销商,需要本人现场去领取,所以选择太远的就不值得了。
预约的过程很简单,而且没有其他平台那样一定要整点去抢购那么几瓶那么激烈,申购完就可以静静地等待结果了。中签结果是由抽签而来,这样就完全凭运气了。我比较喜欢这种抢购方式,因为有时候抢购的那个时间点刚好在工作或者在开车,就错过了一次抢购机会,而且网速不好,手速不快的就没有中签的可能性。i茅台的这种抢购方法,比较适合我这种佛系的人。
每天18点会公布中签结果,并且会有短信通知。中签后一定要在24点完成确认,可以选择到店付款或者线上付款。为了避免拿不到酒,钱又打了水漂,所以我选择了到店付款。
每天的中签结果也会进行公示,这里可以看到店铺的投放量以及申购人数,每天我们可以根据这个结果,分析下在哪个店铺申购中签率会比较高。
一切都搞定了就是去店铺领取茅台了,中签后需要在3天内去领取,如果有特殊原因,可以打电话和店铺协商,具体能不能延后领取就要看店铺是否同意了。
整个领取过程非常流畅,拿身份证,扫中奖码,开盒验酒,开票一气呵成。店里的服务员已经非常熟悉这一套流程了,看来已经给不少人兑换过酒了。领完酒之后出来,并没有很多人说的黄牛会围上来收酒,我也没能了解到本地的出手价格,让我一度怀疑我的酒能否变现。不过我也没想出手了,等入手了两瓶以上再去考虑变现问题吧。开的票一定要留着,如果出手的话,这张票可以省去很多麻烦。
下面让我们看一下这一瓶虎年茅台吧。本以为两瓶才会有礼品袋,没想到茅台还为它制作了单瓶的礼品袋,
今年的虎年茅台是以绿色为主色调,包装还是茅台的包装风格。包装正面大大的贵州茅台酒表明了它的身份。
生肖茅台与飞天不同,是五星标的,其实五星标与飞天标是没有区别的,生肖茅台因为一直是使用五星标,为了保证它的一致性,所以就延续了五星标了。
包装上充满了虎的元素,形成了具有收藏价值的虎年生肖茅台。
包装的一侧是来自孟祥顺的《王者气》,它与壬寅虎年生肖茅台酒精神气质的契合,成为了虎年生肖茅台酒重要的文化设计元素。
另一侧是著名书法家鄢福初的书法作品。
它的包装瓶与飞天茅台一样,只是瓷瓶变成了绿色。
它的瓶盖与飞天茅台不同,并没有丝带包裹,不过金黄色的瓶盖也很好看,盖子的顶端还有一个繁体的虎字。
对比一下家里的375ml的出口飞天,500ml的比375ml要大了不少。
对比瓶子,感觉还是飞天的白色瓶子比较好看,而且虎茅的瓶盖也没有飞天的丝带,少了一些仪式感。
总结
i茅台APP抢购非常简单,据说以后还会上架飞天茅台,那样就更值得一抢了。而且i茅台不拼网速,不拼手速,每天不用卡整点去抢购,只要有时间点一下就可以,降低了抢茅台的难度,比较适合每天工作比较忙的人。
嘀嗒清单 TickTick for Android v6.1.9 高效日程管理软件
嘀嗒清单 TickTick for Android 直装内购正式版是一款轻便的待办事项、日程管理应用,全球逾千万用户的共同选择。它可以帮你制定项目计划、设置会议提醒、安排行程规划、保持工作专注,还能用于记录备忘、整理购物清单。滴答清单集计划表、备忘录、日程清单、笔记、便签、闹钟、日历、番茄钟、在线协作等多种实用功能于一体,是你高效办公、目标管理、习惯养成及便捷生活的得力助手。可以用它生成例如学习计划、工作计划、书单、购物清单、旅行和娱乐清单等,除此之外,还可以随时随地记录自己的点子,提醒家人和朋友的生日、抢购商品等一切未来发生的任务。
嘀嗒清单 TickTick for Android 直装内购正式版是国外大神 Balatan 基于国际版滴答清单 TickTick 修改制作,已经河蟹了功能限制,去除了数据收集等敏感权限,登录账号后就显示永久会员。
嘀嗒清单破解版
主要功能
快速添加:支持文本创建、语音输入添加任务
智能识别:自动识别语音输入中的日期和时间,快速设置提醒
全能提醒:为任务设置日期和提醒,我们有灵活的提醒机制确保你不会错过重要的事情
日历视图:在日历中方便地查看每一天的日程安排
清晰分类:添加清单或文件夹来管理任务,还可以通过标签来分类,同时可以设置优先级来区分任务的重要程度
轻松记录:支持“文本”和“子任务”两种任务模式,为任务添加图片、录音等重要详情
共享协作:与家人、好友和同事共享清单,多人协同完成任务
多平台快速同步:在Phone、Tablet、Wear、网页等11个平台快速同步任务
私信:(221001)获取下载链接
最近很火的京东抢购飞天茅台是怎么回事?从架构原理来分析一波
背景
大家好,这篇文章给大家介绍一个非常经典的去大厂面试经常被问的一个问题,就是瞬时高并发抢购问题。
通常来说,大厂开发的系统经常会遇到一些类似电商秒杀抢购、景点门票高并发抢购、特殊商品(比如口罩)高并发抢购、类似 12306 的高并发抢票类的系统。
所以经常会问这一类高并发抢购类的问题,这个时候,小伙伴们如果不能有理有据的给出一整套高并发场景下系统可能遇到的各种问题,以及你对应的架构设计和解决方案,那基本面试可能就会凉掉。
所以今天就手把手带着大家来分析一下,假设在特殊物品库存紧缺的场景下,1 分钟内要抢购 10w 个口罩这类特殊物品,此时可能有数十万人这个量级瞬时涌入来进行抢购,这个时候系统可能会遇到哪些问题,我们应该如何来设计架构解决这类问题呢?
业务架构设计
首先在分析这一类问题的时候,我们先不要考虑这个瞬时高并发到底有多高,先得把实现购买这类特殊商品的一个基础业务架构图画出来,同时把业务流程分析清楚。
大家看下图,如果你要搞一个商品抢购的系统,肯定得有一个抢购系统,这个抢购系统你得依赖商品系统吧,毕竟抢购过程中需要对商品数据进行读写,你还得依赖库存系统进行库存扣减,同时你还得依赖价格系统来计算当前商品的购买价格,还得依赖营销系统来验证商品购买的优惠。
最后还得依赖鉴权认证、风控拦截类的基础系统来确定本次抢购是否可以执行,所以说,一次抢购涉及到的各种系统其实是很多的,完整的基础高并发抢购系统基础业务架构图。
如下图 1 所示:
网络拓扑架构设计
另外的话,大家还得对你的抢购请求是如何一步一步到达你的抢购系统的,这个事情流程大家也是要画出来的。
一般来说,我们的 APP 移动端对后端访问都是通过一个域名来发起请求的,这个域名会经过 DNS 进行解析得到我们的 SLB 负载均衡系统的 ip 地址。
然后请求会发送到我们的 SLB 负载均衡系统上去,接着 SLB 负载均衡系统会把请求均匀分发给我们后端的 API 网关系统,然后 API 网关系统再把流量分发给我们的抢购系统。
所以大致如下图 2 所示:
好的,当大家能当着面试官的面,麻溜儿的把上面那套业务架构图和生产部署网络拓扑图大致画出来以后,我们可以跟大家保证,虽然这个时候面试官看起来面无表情,但是心里的真实反映应该是这样的:小兄弟可以啊,一般人听到这个问题就直接懵逼了,这小子居然知道先从业务架构和网络拓扑架构入手进行分析。
但是大家别高兴的太早,距离你圆满的完成这个问题的分析,大致是才刚刚走完了西游记十万八千里中的八千里而已,剩下的十万还要继续走呢!这一路上大家马上要遇到各种妖魔鬼怪了!打起精神,接着一起来往下看。
秒杀业务流量洪峰
往往到这里,我们下一步应该分析的,就是日常流量和抢购流量的区别了,什么意思呢?
先来说说日常流量,这个意思就是说,平时没有抢购的时候,就是别人正常来买各种商品,系统的大致流量应该是每秒会有多少请求。
这个问题的话,不大好说,因为不同的公司其实是不太一样的,但是我们可以取一个较为中间的值,整个系统日常的话每秒也就 1000 次请求,这个是比较中肯的一个值,不高也不低。
如下图 3 所示:
一般来说,但凡你的抢购系统以及他依赖的每个系统部署在 2 台机器以上,每秒 1000 次请求这种常规流量,各个系统兄弟们同心协力,一起扛一抗,还是没太大问题的。
但是如果说搞这么一个活动,某个特殊商品,限量 10w 份,大家又特别需要他,然后呢,限定就是每天上午 10:00 开抢,每次都有几十万人眼睛放出红光盯着手机屏幕准备抢他,志在必得,这个时候,流量会搞成什么样子呢?
注意,重头戏来了,大体上来说,根据一般的抢购经验,往往你的 10w 件商品会在 1 分钟内抢光,而且根据二八法则,80% 的商品会在 20% 的时间内被抢光。
也就是说 8w 件商品可能会在 10s 内被抢购,而且参与抢购这 8w 件商品的流量达到了 80% 的人群数量,假设一共有 50w 人参与抢购,就是有 40w 人在 10s 内发起抢购请求,抢光了 8w 件商品。
这个时候,每秒的请求数量应该是 40w/10s = 4w/s 的 QPS,大家看下图 4:
不知道大家看到上图是何感想?脑子别发蒙啊,面试官听得津津有味,咱们赶紧继续往下讲啊,不然你这时候停下来,你们会大眼瞪小眼的!那这个时候如果对你的抢购系统发起的请求量达到了每秒 4w,大家觉得会如何呢?
很简单,系统绝对会被打死,网络带宽打满、CPU 使用率达到 90% 多、数据库负载过高、下游依赖频繁超时,这一切问题都可能会发生,你要问为什么?
那就是因为你的系统常规化部署下,就是抗每秒 1000 的请求的,他们又不是设计来抗你每秒 4w 请求的。
架构设计优化
所以这个时候问题就牵扯到了一个点,那就是怎么才能让你的抢购系统可以抗下来每秒 4w 请求呢?
为了解决这个问题,就得趁着面试官打瞌睡的时候,咱兄弟偷偷给你传授一点武林秘籍了。
正常情况下,一台 4 核 8G 的机器,开 200 个线程处理请求,如果他要调用别的服务,或者是访问数据库,基本上每秒单台机器也就抗个 1000 的请求量。
| 并发抢购系统性能瓶颈分析
但是,注意,敲黑板划重点了,不是说你的 4 核 8G 机器就菜鸡到了只能抗每秒 1000 个请求,他的关键问题在于,他要调用别的服务,而且他还要访问数据库,就是因为这种通过网络去访问外部系统,才导致了他每秒抗的请求量比较菜鸡一些。
大家看下图 5:
大家要知道一点,类似 Redis、RocketMQ 这种中间件系统,经过深度优化之后,往往单台抗个上万甚至几万 QPS 都没问题,所谓的深度优化是什么意思?
简而言之就一点,你最好就是每次请求过来,完全就基于自己的内存来读写数据,然后就直接返回了。
不要随便通过网络去访问外部的系统,这种情况下,往往你的并发量可以提升几个数量级。
如下图 6 所示:
| 并发抢购系统架构优化
所以说,一般这种场景下,有三个非常强悍的优化手段,那就是大幅度减少对外部服务的依赖调用吗;写数据尽量直接写缓存,然后异步写 DB;读数据尽量优先把数据缓存在系统 JVM 内存里,本地读取返回。
这里可以给大家举一些例子,比如说,对于特殊商品固定价格抢购,那么对价格系统、营销系统的调用是否就可以省略了,毕竟价格固定,也没有优惠这一说。
对于风控和鉴权类的通用操作,是否可以前置到 API 网关层面让他去执行,从我们的业务系统里移除这类通用逻辑?这不就一下子减少了对 4 个系统的调用了。
再比如说,对库存的扣减,是否可以让库存系统把数据同步到 Redis 里,我们直接同步扣 Redis 里的库存,然后发 MQ 消息异步去库存系统的 DB 里扣库存?
还有比如对商品数据的大量查询,是否可以将商品数据缓存到 Redis 里,同时对热门商品数据全部提前加载到抢购系统的 JVM 内存里本地缓存?
经过优化后的抢购系统大致看起来是下面图 7 这样子的:
大家看上图,这个时候经过一通优化之后,我们的抢购系统已经不再直接调用任何服务了。
他在读商品数据的时候,优先都是从自己的 JVM 本地缓存里读取预缓存的数据,几乎就是纯内存操作,然后扣减库存是去写 Redis 的,对于库存系统甚至是订单系统的数据库中的扣减库存和下单,都是通过 MQ 异步化执行的。
基本上系统优化到这个水准,主要给抢购系统多部署几台机器,就可以抗下每秒几万高并发的请求了。
但是这个时候完了吗?当然没有,这个时候系统里存在的问题还非常的多,我们得继续往下分析,进一步一步一步的优化。
①高并发抢购系统缓存击穿问题分析与解决方案
首先,分析第一个问题,就是商品数据缓存在抢购系统 JVM 本地缓存时的击穿问题,我们在抢购系统的 JVM 本地缓存中放的数据,一般都是要设置一个过期时间的,因为如果你一直缓存在 JVM 里,会导致商品数据有变化了,你也不知道。
所以假设我们设置一个 30min 的过期时间,每隔 30min 过期下,过期之后,抢购系统就得去 Redis 里查商品数据缓存,如果没查到,那就得去调用商品系统的接口从数据库里查了。
如下图 8:
那么当你的抢购系统里的本地缓存过期了,此时本地缓存没数据了,然后 Redis 里缓存可能此时也没有的时候,就在这个非常要紧的关头,偏偏就进来了大量的请求,此时这大量请求在本地缓存都没找到,去 Redis 里也没找到,然后呢?
然后当然就是完犊子了,因为这些请求都会涌入到商品系统里去,让商品系统从数据库里查询,直接把商品系统击穿。
如下图 9:
所以这个时候,我们往往需要对这种本地缓存做一个特殊的方案设计,那就是对于本地缓存不要采取这种让他自动过期然后请求过来的时候读取不到再去商品系统那里查找的模式,而是采取抢购系统针对本地缓存自动定时刷新。
也就是说,抢购系统内可以开一个后台线程,然后让他每隔 30min 自动去 Redis 里查最新缓存数据,或者去商品系统查最新缓存数据,然后刷新本地缓存,这样就可以避免说自动过期后突然大量请求查不到缓存都涌入商品系统了。
如下图 10:
②高并发抢购系统数据不一致问题分析与解决方案
再来看下一个比较常见的问题,就是扣库存的缓存与 DB 不一致问题,这个问题的场景可能发生在如下情况。
就是说你在 Redis 里扣完了库存之后,通过 MQ 发送了一个消息异步让那个库存系统在 DB 里扣库存,可是人家库存系统还没在 DB 里扣减呢,这个时候你突然因为异常回滚了这次库存扣减,此时 Redis 里把扣的库存恢复了,然后发了一个消息到 MQ 去恢复库存扣减。
如下图 11:
但是这个时候 Redis 里的库存是恢复了,可是库存系统 DB 那里就是未必了,因为库存系统从 MQ 里获取消息的时候,很有可能是乱序获取的,就是先获取到恢复库存的消息。
此时库存系统一般会判断一下,之前是否对这次抢购有过库存扣减日志,如果没有,他就不会去恢复库存,然后接着再获取到扣减库存的消息,此时他就扣减了库存,可是恢复库存的消息再也没机会处理了。
如下图 12:
那么上面会导致什么呢?会导致 Redis 里扣减了库存,又恢复了库存,可是库存系统的 DB 里先获取了恢复库存指令,结果什么都没干,然后又获取了扣减库存指令,反而把库存给扣了,此时缓存和 DB 里的库存是不一致的。
所以针对这个问题,通常都会实现 MQ 顺序消息,也就是说,把同一个抢购订单的多个库存操作指令发送到 MQ 的一个分区里去,让他们实现有序,强制要求库存系统必须按照顺序依次获取后执行,这样就会先执行扣减库存指令,再执行恢复库存指令了。
如下图 13:
总结
好了,今天这篇文章到这里为止,就给大家讲了一下大厂里我们经常遇到的高并发抢购类系统的架构设计和优化过程,以及缓存击穿与数据乱序不一致问题的分析和解决方案。
希望大家在阅读后能在未来面试遇到这类问题的时候,有理有据的逐步分析逐步展开,让面试官看到大家沉稳如水、细致如丝的应变能力。
------------- END -------------
另外推荐儒猿课堂的1元系列课程给您,欢迎加入一起学习~
互联网Java工程师面试突击课(1元专享):
https://tod.h5.xeknow.com/s/3o8O0w
SpringCloudAlibaba零基础入门到项目实战(1元专享):
https://tod.h5.xeknow.com/s/1NRrqb
亿级流量下的电商详情页系统实战项目(1元专享):
https://tod.h5.xeknow.com/s/xItYJ
Kafka消息中间件内核源码精讲(1元专享):
https://tod.h5.xeknow.com/s/1T0B9m
12个实战案例带你玩转Java并发编程(1元专享):
https://tod.h5.xeknow.com/s/2nTSHI
Elasticsearch零基础入门到精通(1元专享):
https://tod.h5.xeknow.com/s/40xOVv
基于Java手写分布式中间件系统实战(1元专享):
https://tod.h5.xeknow.com/s/1MUj1A
基于ShardingSphere的分库分表实战课(1元专享):
https://tod.h5.xeknow.com/s/3o6jC