如何通过功能管理与SFTP的并发连接



我们如何管理并发连接,也许是通过将文件批次批量的连接?

我正在创建一个由新斑点触发的Azure函数(这可能更改为简单的计时器触发器(。斑点的一个例子是:

{
"server":"sftp.mysftpserver.com",
"credentials":"topsecret",
"body":"This text will be uploaded to the sftp server above"
}

该功能将登录到服务器,并在body中发送有效载荷。

我们如何限制启动到同一服务器的连接数?

我们可能有500个斑点都触发了该功能,而该功能又开放了500个连接到:sftp.mysftpserver.com

同时,可能只有2个Blobs启动与sftp.otherserver.net的连接。

没有有关特定实现的更多信息,我只能提供一般建议。假设您正在使用某种FTP客户端,则可以使用该客户端的静态实例在功能实例中共享它。如果吞吐量很高,那么功能服务将扩展到多个实例,但是假设您正在使用消费计划,则该计划将在200处最大化。除非有巨大的瓶颈,否则可能会在缩放缩放之前清除500个文档峰值在200个实例附近的任何地方。

例如,您会做这样的事情:

// 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库,则可以创建一个静态助手类,该类可处理创建客户端。

最新更新