C# Windows Azure VPS上的高I/O应用程序负载平衡

C# Windows Azure VPS上的高I/O应用程序负载平衡,c#,azure,load-balancing,C#,Azure,Load Balancing,我目前正试图掌握整个云计算的内容,我已经阅读了很多关于Stackoverflow的类似问题 我试图构建的是类似于高I/O存储服务的东西。它将通过FTP检索大量数据(我们经常谈论50-100 Mbit/sec),然后对接收到的一些数据进行一些后处理 该应用程序目前正在用C#编写,以便在Windows Azure VPS上部署。我正在做我自己的简单FTP服务器,以实现最高级别的控制和安全性(如我自己的身份验证过程)。这不是问题,因为我已经非常熟练地使用套接字服务器和高性能.NET应用程序 但是,始终

我目前正试图掌握整个云计算的内容,我已经阅读了很多关于Stackoverflow的类似问题

我试图构建的是类似于高I/O存储服务的东西。它将通过FTP检索大量数据(我们经常谈论50-100 Mbit/sec),然后对接收到的一些数据进行一些后处理

该应用程序目前正在用C#编写,以便在Windows Azure VPS上部署。我正在做我自己的简单FTP服务器,以实现最高级别的控制和安全性(如我自己的身份验证过程)。这不是问题,因为我已经非常熟练地使用套接字服务器和高性能.NET应用程序

但是,始终作为单个实例运行。在某些VPS服务器上运行的单个Windows服务/控制台应用程序的性能一直都很差

不过这次我必须面对事实。无论虚拟机的规模有多大,如果数据增加(它是由客户生成的,所以更多客户=更多数据!),数据都会很快超过服务器的I/O容量

那么,您将如何在云中进行负载平衡呢?我读过关于“云工作者”等“云服务”的文章,但我认为它变得如此复杂,当我使用一种服务的存储、另一种服务的数据库和第三种服务的工作时,定价似乎如此模糊,同时考虑到带宽和其他东西。我真的很想在一个我知道并且我有信心与之合作的环境中保持简单。就是这样

但是我应该如何进行负载平衡呢?这是我第一次,我知道这是一个雄心勃勃的项目,但我真的只是想学习

总而言之:负载平衡一个用C#编写的自定义FTP应用程序,运行在WindowsAzure VPS上。应用程序/服务的每个实例都应该可以访问相同的存储和数据库。不需要实例间通信


所以把你所有的东西都扔给我,我会努力跟上的

使用IIS应用程序请求路由(ARR)设置webrole。

角色 你似乎对什么是角色有点困惑,所以让我简单地旁白一下。角色基本上是VM的模板,它定义代码和配置。这有点像木偶或厨师脚本。有几种类型的角色

  • 虚拟机角色是您可以获得的最“裸机”。你给Azure一个VM映像,他们会为你启动它。您负责it上的一切,包括操作系统更新和维护。这与AmazonEC2的功能相去甚远
  • 工人角色不那么光明磊落。他们离Windows服务不远。您上载的是一个代码和配置包,而不是整个VM映像。Azure设置一个库存Windows服务器操作系统,将您的代码复制到其中,并调用入口点。从那里你可以做任何你想做的事情-接受连接,启动新的线程或进程,等等。微软负责操作系统级的补丁,他们可能会重新映像你的虚拟机,以便在任何时候都可以这样做,所以你不想在驱动器上永久存储数据
  • Web角色基本上是工作者角色,但Azure也安装IIS并配置您请求的任何IIS站点和虚拟应用程序
负载平衡 在简单的情况下(例如,web服务),Azure将自动在您的机器之间平衡传入请求的负载。它应该同样适用于任何涉及来自互联网的请求的服务。我认为FTP PASV模式可能更复杂,但我不是这方面的专家。有一个,还有一个。也许他们的方法可以应用于您的自定义FTP软件

根据您所说的,我认为您可以为FTP服务器使用工作者角色。在WorkerRole.cs文件中,您只需启动FTP代码,然后就可以开始了。您还可以生成线程或进程,让每个VM作为图像处理器执行双重任务。如果您愿意,您可以在虚拟机角色中完成所有这些,这只是一个问题,您需要做更多的工作

存储
这是Blob存储的教科书用例。上传的文件一定要放在那里。听起来不同的计费模式让你有点困惑,但Blob存储非常便宜。你可以在墙上看看

请澄清:1)您正在运行FTP站点,您的客户将上传给您,对吗?2) 您需要对数据进行多少处理?也就是说,您可以将其作为流处理,还是必须脱机处理?3) 当你说“VPS”时,你基本上是指你自己配置的“裸”虚拟机吗?(用Azure的说法,这将是一个“VM角色”)4)您需要在您的FTP服务器上进行大量客户安装或配置吗?很抱歉没有进一步说明,我对Azure的概念还是新手。我刚刚安装了培训套件,尝试学习更多内容。1) 是的,我正在运行FTP服务器。一个我可以访问源代码的自定义程序。2) 这是相当繁重的工作。这是用神经网络进行的图像处理。(我有一个人在做这件事)。3) 是的,我指的是一个简单的虚拟机(“虚拟机角色”)。我不确定这是否是最好的选择,但这正是我目前的想法。4)如果我需要进行大量安装,我不确定你的意思。每次我都要检查数据库中的客户机凭据(在内存列表中缓存5分钟,因为将有大量的登录和注销)。但我想不会,随着时间的推移,可能会有几百个客户每月新增5-25个。非常感谢!这样剪下来真的很有帮助!我决定尝试选择工人角色,因为。。。为什么不呢?我喜欢挑战!:)今天我接到一个微软代表的电话,一位非常可爱的女士。她帮忙