首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反向代理锁定特性

反向代理锁定特性
EN

Stack Overflow用户
提问于 2019-10-31 20:45:04
回答 1查看 140关注 0票数 3

我想请求一个不受并发访问保护的Microsoft (用GET提取数据,然后用POST推送数据)。

为了防止任何奇怪的行为,我想在访问这个Api时使用一个锁。

我找到的最简单的方法(不弄错代码)是创建一个中间件服务(它将成为目标,而不是原来的服务)。当请求时,它可以将锁保存在redis中,并将请求转发到Microsoft。当它完成时,锁就被释放了。

然后,如果另一个请求到达服务器,它将被拒绝,我将能够执行指数退避,直到锁是空闲的。

我的问题是:我是否必须对这个东西进行编码,还是在现有的反向代理中可以找到这一特性?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-02 10:52:19

要以一种高度可用的方式来实现这一点,我相信您需要完成您编写的内容,并使用某种分布式锁来确定API是否在使用。

但是,如果不需要高可用性,则可以为该服务器使用一个将HAProxy设置为1的马克斯康恩实例。您还需要将timeout queue设置为简短的内容,这样您就可以处理503响应,并执行所提到的指数退避操作。

代码语言:javascript
复制
backend microsoft_api_backend
    timeout queue 2s
    server microsoft_api 1.1.1.1:80 check maxconn 1

在Nginx,你可以做一些类似的事情:

代码语言:javascript
复制
upstream microsoft_api {
  server 1.1.1.1:80 max_conns=1
  queue 1 timeout=2
}

server {
    location / {
        proxy_pass http://microsoft_api;
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58650938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档