如何根据网络使用情况构建自动缩放的 Azure 云服务?
How to build a auto-scale Azure Cloud Service based on network usage?
Azure 云服务具有基于 CPU / 队列的自动缩放功能。我们有一套机器运行API用于上传和处理文件。虽然我们将处理部分移到了 Worker Role 上,该部分根据队列大小进行扩展,但服务器在响应其他操作(如下载)的同时也负责上传。
目前,我们正在使用更多机器以防万一,但我们希望构建一种可扩展且具有成本效益的方法,同时为我们的用户提供出色的上传体验。
您的方法是什么来创建一种方法来检测来自同一云服务的所有计算机的网络使用情况并在必要时自动缩放?
我会:
1) 创建指标来计算 download/upload 一个文件所花费的时间。
2) 在一些持久层中聚合指标(我们在 Azure 中有很多)
3)创建一个看起来那些指标的服务
4)检查阈值
5) 使用 .NET 管理库触发受影响云服务的扩展。
此方法还可以根据您的解决方案进行扩展。您最终可以将缩放部分与检查部分分开,并将它们作为两个不同的服务,异步通信。
我们还有一个旧的、现在开源的项目可以为您完成其中的一些工作,因此您不必重新发明轮子。它叫做芥末。请小心,因为它不再维护,但正如我所说,您可以将其用作灵感。
Azure 云服务具有基于 CPU / 队列的自动缩放功能。我们有一套机器运行API用于上传和处理文件。虽然我们将处理部分移到了 Worker Role 上,该部分根据队列大小进行扩展,但服务器在响应其他操作(如下载)的同时也负责上传。
目前,我们正在使用更多机器以防万一,但我们希望构建一种可扩展且具有成本效益的方法,同时为我们的用户提供出色的上传体验。
您的方法是什么来创建一种方法来检测来自同一云服务的所有计算机的网络使用情况并在必要时自动缩放?
我会: 1) 创建指标来计算 download/upload 一个文件所花费的时间。 2) 在一些持久层中聚合指标(我们在 Azure 中有很多) 3)创建一个看起来那些指标的服务 4)检查阈值 5) 使用 .NET 管理库触发受影响云服务的扩展。
此方法还可以根据您的解决方案进行扩展。您最终可以将缩放部分与检查部分分开,并将它们作为两个不同的服务,异步通信。
我们还有一个旧的、现在开源的项目可以为您完成其中的一些工作,因此您不必重新发明轮子。它叫做芥末。请小心,因为它不再维护,但正如我所说,您可以将其用作灵感。