nginx负载转发,导致重复插入问题

nginx做负载均衡

当一个插入操作被其中一台服务执行时,刚插入数据库后,服务立刻停止。
nginx会将该请求转发给另外一台服务器执行,导致数据被重复插入。
有没有什么好的方法,可以解决这种场景问题。谢谢。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/1005865
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:Nginx配置负载均衡与解决跨域问题
  • 除此之外, 这篇博客: nginx负载均衡,一次调用多次响应问题中的 问题分析:虚拟机配置好负载均衡后,在主机上启动服务调用后,后台查看日志能看到有2台服务均被调用。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    初步判断应该是接口报错或者接口返回慢,导致触发nginx超时转发机制。由于接口在单体服务上调用过,接口是通的,而且1s以内是可以返回的,所以上面2中情况排除。

    好吧,既然找不到原因,那就从nginx配置上想办法,于是我添加了一些参数:

    Location下增加

    porxy_connect_timeout 600;
    porxy_read_timeout 600;
    porxy_send_timeout 600;

    在server节点下增加

    keepalive_timeout 600;

    超时时间600s,我不信还有超过5分钟的接口(几乎没有人可以忍受),想来这样应该可以了,但是现实很残酷。

    经过多轮的修改参数,重新加载,调用…

    还是请求2次(nginx就配了2台服务,我增加了一台,怀疑是每台调用一次,但还是调用2次)。上网一顿搜,参数一顿改,一番操作下来还是不行。好吧,我承认我当时已经有点焦躁了。。。

    后来我冷静下来,想到了还有个重要的地方没有看,那就是nginx的报错日志,也就是开头的那个截图。网上一查,是http版本的问题,location添加参数:

    proxy_http_version 1.1;

    问题解决。

     


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^