TeamsApp升级之路 - 大用户并发的 Teams http 请求优化

针对TeamsApp在高并发下遇到的HTTP请求限制问题,本文提出了延迟发送的优化策略。通过在1到2秒的等待期内合并多次抽奖请求,减少发送给Teams的activity更新请求次数,从而避免调用频率限制。通过使用ConcurrentDictionary和加锁机制确保线程安全,优化后的方案能在15秒内处理3000用户的抽奖请求,只需发送10次请求。
摘要由CSDN通过智能技术生成

我们这篇文章继续上篇文章的优化,来看看如何优化 #6。

经过上一篇文章的分析和优化,我们目前的参与抽奖的步骤是:

增加当前用户到抽奖人列表。一次简单的写操作,只增加当前一个用户
如果第三步报错,说明当前这个用户是否已经参与了本次抽奖,结束这个请求
从 SQL DB 读取抽奖的基本信息,不包含参与有人。一次简单的数据库读操作
判断抽奖是否已经结束,如果已经开奖了,那就结束这个请求
根据当前的抽奖信息,生成 Teams 前端展示的 adaptive card
调用 Teams 的 bot api,更新本次抽奖的 adaptive card

在正常情况下一次抽奖为:一次数据库写操作 (#1),一次数据库读操作 (#3),一次 http 请求 (#6)。

如果是用户反复点击参与抽奖按钮,那就是一次数据库写操作 (#1)。

所以,当我们假设的 3000 用户在 15 秒内参与了同一个抽奖,那每秒要发送 200 个 http 请求给 teams。Teams 实际上对于发给给它的请求有一些调用频次的限制,详细信息可以参考这个官方文档。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值