【故障补牢】贪吃的 Bing 爬虫,限量供应的应对措施 环球滚动


(资料图片)

相对于【故障公告】,【故障补牢】分享的是园子在发生故障后采取的亡羊补牢措施。

在上次被微软 Bing 爬宕机后(详见 【故障公告】被放出的 Bing 爬虫,又被爬宕机的园子),我们采取了2个应对措施,然后解除了对 Bing 爬虫的屏蔽。

措施1:限流——采用滑动窗口进行限流

我们之前采用的限流措施没有采用滑动窗口,只能防君子不能防小人,比如限制同一个IP一天只能请求2万次,但如果遇到大胃口的爬虫,1秒请求2万次,虽然没有超过限制,但服务器已趴下。

我们通过 ASP.NET Core 内置的 rate limiting middleware 进行滑动窗口限流,参考博文 ASP.NET Core rate limiting middleware in .NET 7

services.AddRateLimiter(    _ =>    {        _.GlobalLimiter = PartitionedRateLimiter.CreateChained(            PartitionedRateLimiter.Create(                _ => RateLimitPartition.GetSlidingWindowLimiter(                    "total",                    _ => new SlidingWindowRateLimiterOptions()                    {                        AutoReplenishment = true,                        PermitLimit = limitOptions.TotalPermitLimit,                        QueueLimit = 0,                        Window = TimeSpan.FromSeconds(limitOptions.WindowSize),                        SegmentsPerWindow = limitOptions.WindowSize,                        QueueProcessingOrder = QueueProcessingOrder.OldestFirst                    })),            PartitionedRateLimiter.Create(                context => RateLimitPartition.GetFixedWindowLimiter(                    partitionKey: context.GetUserIp() ?? "unspecified",                    factory: _ => new FixedWindowRateLimiterOptions                    {                        AutoReplenishment = true,                        PermitLimit = limitOptions.PermitLimit,                        QueueLimit = limitOptions.QueueLimit,                        Window = TimeSpan.FromSeconds(limitOptions.WindowSize),                        QueueProcessingOrder = QueueProcessingOrder.OldestFirst                    })));        _.OnRejected = (context, _) =>        {            context.HttpContext.Response.StatusCode = StatusCodes.Status429TooManyRequests;            return default;        };    });

措施2:隔离——专用 pod 限制计算资源、专用负载均衡限制带宽

借助 k8s 的资源隔离能力,部署专用的 pod 给 Bing 爬虫使用,最多把 pod 爬挂,不会造成服务器宕机,对其他应用 pod 毫无影响。

部署专门的负载均衡给 Bing 爬虫通行,这样可以避免因爬虫抢占带宽而造成其他正常请求无法正常响应,而且可以通过限制带宽控制爬虫的并发请求量以及带宽成本。

标签:

最近更新

【故障补牢】贪吃的 Bing 爬虫,限量供应的应对措施 环球滚动
2023-05-09 09:24:37
《人境》第96期导读:青春奋斗正当时
2023-05-09 08:55:50
光大银行:5月8日融资买入1.63亿元,融资融券余额15.06亿元-天天报资讯
2023-05-09 08:36:51
纽约6月黄金期价8日上涨0.41%
2023-05-09 08:01:46
世界热头条丨苏丹首都喀土穆的冲突仍在持续 冲突双方对话暂无重大进展
2023-05-09 07:45:09
【新要闻】通报!王某华(男,40岁),采取刑事强制措施
2023-05-09 06:47:25
强化高端引领加快发展先进制造业 世界快讯
2023-05-09 05:46:52
两百亿元超高清基金在穗起航,三方联手共建超高清产业生态
2023-05-09 04:53:32
天天热消息:乾坤袋许娘娘歌词_乾坤袋
2023-05-09 02:10:47
广联航空:发布股东减持计划
2023-05-08 23:44:42
蓝天湖丰都(蓝天湖)
2023-05-08 22:15:56
同安区发出厦门首张纸质房票及首张转让房票
2023-05-08 21:44:46
天天最资讯丨控制过程的三个关键步骤是_控制过程的三个关键步骤包括
2023-05-08 21:01:26
水粉画步骤_制作教程介绍
2023-05-08 20:11:47
亿帆医药:获得盐酸多巴胺注射液药品注册证书
2023-05-08 19:27:55
水晶光电(002273.SZ)2022年度拟每10股派2元 5月16日除权除息
2023-05-08 18:46:21
超42万人次!现象级大展收官,上海博物馆昨夜“无眠”,观众穿汉服二刷|全球通讯
2023-05-08 18:11:59
天天快资讯丨【谱写宝鸡高质量发展新篇章】凤县鼎川织业三期预计7月投产 有力助推县域经济高质量发展
2023-05-08 17:46:19
暖!厦门一护士跪地按压2000次 救起倒地大叔-环球快报
2023-05-08 17:26:27
广东:大力推广节能及新能源汽车 基本淘汰国三及以下排放标准的柴油和燃气汽车 世界实时
2023-05-08 16:45:21
环球速讯:都体头版:米兰不想冒险,莱奥不会出战半决赛德比首回合
2023-05-08 16:13:22
焦作支持小微企业发展出实招!稳岗扩岗专项贷款最高3000万元! 观速讯
2023-05-08 15:48:36
151是移动还是联通的号段_151是移动还是联通
2023-05-08 15:27:45
今日关注:四川60岁李叔叔晒藏酒,满屋白酒引起热议,网友:老爷子家底雄厚
2023-05-08 14:53:36
江龙船艇(300589):股价5分钟涨速大于5%(05-08) 每日报道
2023-05-08 14:17:45
速讯:采用全新前脸 新款标致2008官图发布
2023-05-08 13:44:52
缩微技术_关于缩微技术介绍
2023-05-08 12:56:20
世界500强雪松系爆雷,“中国嘉能可”梦碎!旗下一公司跌停
2023-05-08 12:28:35
五一档两个票房冠军?莫让巧立名目带乱好片节奏-当前滚动
2023-05-08 12:04:03
专家详解遇到暴雨如何科学防范保障安全
2023-05-08 12:02:48