Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nginx Openresty:创建两个异步任务_Nginx_Lua_Scalability_Url Redirection_Openresty - Fatal编程技术网

Nginx Openresty:创建两个异步任务

Nginx Openresty:创建两个异步任务,nginx,lua,scalability,url-redirection,openresty,Nginx,Lua,Scalability,Url Redirection,Openresty,我正在研究一个服务的设计问题,它基本上是重定向 我得到的请求链接将包含一些参数(abc.com/param1=v1¶m2=v2)。 我需要在这个链接上做两个任务 我需要格式化链接,并将用户重定向到另一个域 根据的值传递一些参数(xyz.com/p1=v2),例如, 参数1,此步骤应尽可能快 经过一些处理后,我需要将链接详细信息保存到我的数据库中 我计划用nginx+lua(openresty)+(Redis或Mongodb?)组合来实现这一点 因为这两个任务是不相关的,所以我计划拆分它,

我正在研究一个服务的设计问题,它基本上是重定向

我得到的请求链接将包含一些参数(abc.com/param1=v1¶m2=v2)。 我需要在这个链接上做两个任务

  • 我需要格式化链接,并将用户重定向到另一个域 根据的值传递一些参数(xyz.com/p1=v2),例如, 参数1,此步骤应尽可能快

  • 经过一些处理后,我需要将链接详细信息保存到我的数据库中

  • 我计划用nginx+lua(openresty)+(Redis或Mongodb?)组合来实现这一点

    因为这两个任务是不相关的,所以我计划拆分它,以异步方式完成这两个任务

    作为重定向中的第一个任务,ngx.redirect(“/link”)似乎适合这种情况。 但是文档说重定向调用将终止当前请求的处理

    如何使这两个任务相互独立,重定向将以尽可能快的速度进行,而不应等待第二个任务完成

    我可以让存储由另一个线程完成吗?如何将此任务分配给另一个线程

    是的,您当然可以,首先您必须完全理解,然后在您必须调用的ceperate线程中,让您Mongodb进程,其中$url是位置块中的url:

    location redirect/handling {
       ... // 
       content_by_lua_file url/to/your/code/forRedirectHandling
       ngx.location.capture(mongo/save):
    
    }
    
    location mongo/save {
      content_by_lua_file url/to/mongodbHandlingdCode
    }
    
    ngx.location.capture()将指向您的第二个位置块,并使您的代码位于另一个线程(nginx worker)中

    请参阅openresty文档,了解如何使用know-wich指令(通过\u-lua访问,通过\u-lua记录…)

    希望这有帮助:)

    我可以让存储由另一个线程完成吗?如何将此任务分配给另一个线程

    是的,您当然可以,首先您必须完全理解,然后在您必须调用的ceperate线程中,让您Mongodb进程,其中$url是位置块中的url:

    location redirect/handling {
       ... // 
       content_by_lua_file url/to/your/code/forRedirectHandling
       ngx.location.capture(mongo/save):
    
    }
    
    location mongo/save {
      content_by_lua_file url/to/mongodbHandlingdCode
    }
    
    ngx.location.capture()将指向您的第二个位置块,并使您的代码位于另一个线程(nginx worker)中

    请参阅openresty文档,了解如何使用know-wich指令(通过\u-lua访问,通过\u-lua记录…)


    希望得到以下帮助:)

    也许可以将链接详细信息存储在某个变量/表中,重定向用户,然后冷静地处理数据并对其执行任何操作。谢谢您的回复!!。我可以让存储由另一个线程完成,以及如何将此任务分配给另一个线程吗?我甚至不知道,抱歉:3可能会将链接详细信息存储在某个变量/表中,重定向用户,然后冷静地处理数据并对其执行任何操作。谢谢回复!!。我可以让存储由另一个线程完成,以及如何将此任务分配给另一个线程吗?我甚至不知道,抱歉:3我可以问谁是图形“lua模块指令的顺序”的作者或来源,我发现它非常有教育意义,我想从源代码中了解更多。(一个简单的谷歌搜索并没有得到任何结果)图片的来源是openresty/ngx lua模块的官方github存储库嗯,我已经在那个页面上浏览了几十次,不知道我怎么会错过它。谢谢,我想问谁是图形“lua模块指令的顺序”的作者或来源,我觉得它很有教育意义,我想从来源了解更多。(一个简单的谷歌搜索并没有得到任何结果)图片的来源是openresty/ngx lua模块的官方github存储库嗯,我已经在那个页面上浏览了几十次,不知道我怎么会错过它。谢谢