我们如何管理并发连接,也许是通过将文件批次批量的连接?
我正在创建一个由新斑点触发的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库,则可以创建一个静态助手类,该类可处理创建客户端。