一个程序员老兵的内心灵魂思考
image 工作走的累了,不妨停下来,思考一下这一路走来的艰辛。 算一算,我也是工作时间不短的人了。 但是总是感觉工作中思路、方法或多或少有问题。 前几日和朋友几杯酒下肚,倒是聊出了一些故事,说说自己的感受,也就成了此文。 目标&手段——引子 image 先来说个场景,关于电商的秒杀。 “大秒活动基本都是在整点进行的,整点活动的详情页流量会非常高,为了保证这么大的流量不冲垮机器,业内大致的做法如下: 从详情页开始就做了多层过滤。首先是垃圾请求,普通的电商商品是可以通过拼http/https下单请求参数直接下单的,然而对大秒来说,如果选择了答题,题目参数用户是无法推断的,detail会做一层简单的过滤,将这部分垃圾请求直接拦截掉;接着,由于人的操作速度限制,一秒几十次的请求会被系统直接关进小黑屋,进行若干时间的屏蔽;如果流量依然很大,采取了栅栏方式进行限流(此限流方式有运气成分,平时不会开启,只有在大促限流时偶尔开启),在系统约定的允许请求通过时间点起,会进行一个随机的时间偏移,每个请求的偏移时间不同,如果请求在偏移时间之内,不好意思,运气不好,需要再重试一次”。 在这个故事中,合适的做法,应该先关注“如何从技术角度保证秒杀可以进行”,而不是“怎么让后端服务器同时顶住巨大的流量”。两者的区别,是目标和手段的区别。如果一开始就考虑怎么顶住流量,很有可能就会因为选择了错误的方案