分布式环境 如何合并请求

15 天前
 fffq

golang 的 singleflight 是不是只作用在单进程?

1188 次点击
所在节点    程序员
5 条回复
2Nfree
15 天前
没搞懂场景是什么样的,singleflight 是只能作用在单进程的,如果要是到多个进程要用分布式锁吧,etcd ,zookeeper?
showB1
15 天前
分布式环境? request_1 打到 pod_1,request_2 打到 pod_2 ,这种合并起来?
你这合并的规则不清晰。。。
1 、前端限制达到相同的请求只发一次达到“合并”效果
2 、不同的 c 端发来的请求,假设你的规则是参数一样就合并?那直接套一层缓存是不是能达到类似的效果呢?
3 、缓存不行,就要合并,那就在网关搞事情喽、统一、快捷。
4 、singleflight 防止击穿?加上呗、几行代码
asAnotherJack
15 天前
多少服务啊,如果单纯为了防击穿,只合并单进程内的也足够了吧
crysislinux
15 天前
分布式要搞的话可以借助 redis setnx 加个简单的锁。获取锁的进程得到数据之后写入 redis cache 然后 publish 一下,别的进程自己去取。。一般应用很难有这个需求吧。。我们倒是刚好有这需求,应用完全依赖第三方的数据,然后每天有限制调用量,我们就用这种办法减少调用量。
fffq
14 天前
@2Nfree 了解
@showB1 为了防击穿,但是先 select 在 insert ,整个放在 fn 里会不会把流程时间拉长了
@asAnotherJack 防击穿
@crysislinux 场景合适

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1070204

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX