在哪里调用DynamoDB的实例?每次请求一次或一次?

时间:2015-11-19 06:39:35

标签: node.js amazon-web-services concurrency amazon-dynamodb

我无法在哪里为我的应用程序创建我的dynamodb实例,其中多个用户与应用程序进行交互。我应该在程序加载并拥有客户端时创建它,还是应该将它放入我调用数据库的路由中,因此每次对登录路由的请求都会创建一个实例?

char[] alphabet = "abcdefghijklmnopqrstuvwxyz".toCharArray();

1 个答案:

答案 0 :(得分:1)

从文档看起来,请求将使用节点默认的http连接池(假设,不是100%)。

亚马逊sdk允许您使用自己的代理配置它,指定池的大小。

https://nodejs.org/api/http.html#http_new_agent_options

哪个应该是可以对amazon sdk建立的连接数的上限。以下代码从节点http和amazon节点sdk docs拼凑而成,未经过测试,可能不完全准确:

var http = require('http');

var dynamoAgent = new http.Agent({maxSockets: 20})

AWS.config.update({
    region: "us-west-2",
    endpoint: "http://localhost:8000",
    httpOptions: {
       agent: dynamoAgent
    }
});

这应该允许你有一个20个插槽的池。我不确定maxSockets的细微差别,(如果套接字可用,请求阻止,如何重用套接字?如何保持活着?等等。)

20是任意的,您的应用程序编号可能需要摆弄才能看到最佳效果。

节点全局代理默认为无限多个最大套接字,如果您的帖子端点上的流量非常高,则可能会太多。限制连接数可能更合理。