我们如何管理并发连接,也许是通过将文件批处理到同一连接中来
?我正在创建一个由新blob触发的azure函数(可以将其更改为简单的计时器触发)。一个Blob的示例为:
{
"server":"sftp.mysftpserver.com",
"credentials":"topsecret",
"body":"This text will be uploaded to the sftp server above"
}
该函数将登录到服务器,并在body
中发送有效负载。
我们如何限制正在启动到同一服务器的连接数?
我们可能有500个blob都在触发该功能,这反过来又打开了与sftp.mysftpserver.com
的500个连接。
同时,可能只有2个Blob正在启动与sftp.otherserver.net
的连接。
答案 0 :(得分:-1)
在没有有关特定实现的更多信息的情况下,我只能提供一般建议。假设您正在使用某种FTP客户端,则可以使用static instance of that client在Functions实例中共享它。如果吞吐量那么高,那么Functions服务将扩展到多个实例,但是假设您正在使用消耗计划,它将max out at 200。除非存在巨大的瓶颈,否则在缩放比例接近200个实例之前,可能会清除500个文档的峰值。
例如,您将执行以下操作:
// Create a single, static SftpClient
private static SftpClient client = new sftpClient(endpoint, user, pass);
public static async Task Run(string input)
{
var response = await sftpClient.SendAsync("filename.txt", input);
}
如果您不使用默认情况下可以执行此操作的SFTP库,则可以创建一个静态助手类来处理创建客户端的过程。