首页 > 编程知识 正文

mysql考试系统设计,mysql标签如何设计

时间:2023-05-05 18:11:05 阅读:130543 作者:3063

说到秒杀,这件事被认为是有技术含量的。 其实,不是这样的。 秒杀这种网络交易方式其实并不像我们想象的那么复杂。 首先,让我们系统地看看秒杀是如何进行的。

秒杀之流

“秒杀”其实是商家为了促销,以非常便宜的价格销售商品。 例如,一元钱卖了100部iPhone,100万人来抢购。

把技术课题放在一边,首先从用户和产品的角度来看吧。 秒杀的流程是什么样的? 首先,需要秒杀的landing page。 这个秒杀页面上有倒计时按钮。

到了这个倒计时时间,按钮点亮,可以点击按钮进行订购。

一般来说,为了防止机器被抢,订单时需要填写校验码。

从技术上讲,这个倒计时按钮的时间和按钮可以点击的时间需要后台服务器进行校准。 也就是说,前端页面不断要求后端,不开始打开,不开始打开……

每次呼叫后,后端都会给前端时间以匹配前端时间。

如果后端服务指示可以在OK下启动,后端服务将返回URL。

此URL位于该按钮上,可以单击。

点击后,抢库存进入支付页面,否则返回秒杀退出。

继续这个轮询的过程,仿佛在等待大家去抢。 想想看。 我想有100万人来问是否开始这件事,后端也扛不住。

秒杀技术

挑战之后,需要看到“秒杀”的技术挑战。

面对上面我们要解决的技术问题,我们的技术挑战是如何应对这百万人的同步订单要求。 一百万的同时并行会让我们的网站瞬间崩溃。 一方面100万人同时要求,我们的网络带宽不够,另一方面理论上要承担100万个TPS,需要非常多的机器。

但最可怕的是,所有请求都集中在同一个数据库记录上。 无论如何分割表,还是使用分布式数据库都是徒劳的。 因为它面临着一个热点的数据。

这是一个几乎无法解决的技术问题。

秒杀的解决办法

很明显,要使100万用户能够同时打开页面,就必须使用CDN。 因为数据中心肯定负担不起,所以部署CDN。

CDN使这100万用户能够由几十到几百个CDN的边缘节点分担和承担。 然后,我们需要在这些CDN节点上做一点文章。

另一方面,我们需要在CDN节点上部署小服务。 这样,当没有从前台开始时,这个小服务不仅可以告诉前端没有开始,还可以统计知道有多少人在线。 对于每项小型服务,当前在线等待秒杀的人数会每隔一段时间返回到数据中心,从而可以了解整个互联网上在线的人数有多少。

假设我们知道约有100万人在网上等待抢劫,在我们即将开始之前,我们会将概率值(例如0.02% )从数据中心传递给部署在CDN节点上的每个小服务。

于是,秒杀开始时,这100万用户正在点击订单按钮。 首先他们要求的是CDN上的这些服务,这些小服务以0.02%的量让用户进入后面的数据中心,也就是一万人进入两个人,剩下的9998人直接回到秒杀结束。

于是,100万用户被0.02%的用户(即200人左右)漏掉了,但如果这200人在数据中心夺走了那100个iPhone (即200 TPS ),那么这个并发量应该无论如何都能够承担。

这就是整个“秒杀”的技术细节,是不是有点难以置信?

说到这里,我相信你一定会问我12306和奥运会抢票的问题。 我认为抢2008年奥运会门票关掉服务器可以用秒杀这个解决方案。 12306不行。 因为我完全不知道用户是来买哪趟火车票的。 如果不知道这个信息,过滤用户就很困难。 另外,用户在买票前需要做很多查询操作,然后在查询中选择自己的票。

对此,12306最好的应对方式,不是一次性全部出票,而是分期分批在不同时间段出票,可以避免人们集中在一个时间点抢票,分流人肉,降低一些并发性。

另外,我一直认为,12306是预售方式,让大家先把自己的票输入系统比较好。 系统不是真的放票,而是把大家的需求集中起来,再做整体的统一安排,增加车次应该增加的车次,增加车次应该增加的车次,让大家都能去。 真的不行。 那么就抽签了。

更多的思考

要解决特定的秒杀业务场景,需要使用CDN的边缘节点承担业务,然后过滤用户请求(限制用户请求),保护数据中心系统,让整个秒杀顺利进行

那么,像双11一样,如果想卖尽可能多的商品,就不像秒杀了。 这是接受尽可能多的订单,但不能超过库存。 其中有大量银行支付,各仓库的库存查询和分配。 这些是非常慢的操作。 如何确保一致性,使其能够承担像双11这样的大规模并发访问?

使用秒杀这样的解决方案基本上不太科学。 此时,必须认真进行高并发性的体系结构和测试。 每个系统都需要调整自己的性能,仔细制定性能修订计划,进行分布式的弹性设计,最后不断创造性能

能测试,找到整个架构的系统瓶颈,然后不断地做水平扩展,以解决大规模的并发。

但是,从另一方面来说,像我们用边缘结点来解决秒杀这样的场景的玩法,是否也有一定的普适性?这里,我想说,一定是有的。

有些时候,我们总是在想数据中心的解决方案。其实,我们有时候也需要换一换思路,也许,在数据中心解决并不一定是最好的方式,放在边缘来解决可能会更好一些。尤其是针对一些有地域特征的业务,比如像外卖、共享单车、打车这样的业务。其实,把一些简单的业务逻辑放在边缘,比放在数据中心不但能够有更好的性能,还有更便宜的成本。

我觉得,随着请求量越来越大,数据也越来越多,数据中心是有点到瓶颈了,而需要边缘结点来帮忙了。而且,这个边缘化解决方案的趋势也会越来越有优势。

在这里,我先按住不表,因为这是我的创业方向,我会在下一篇文章,也是本系列的最后一篇文章,向你介绍边缘计算以及我想用边缘计算干些什么事。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。