.net 在Azure实例中运行非HTTP服务器的开销?

.net 在Azure实例中运行非HTTP服务器的开销?,.net,tcp,azure,.net,Tcp,Azure,我打算在Azure上构建和部署一个自定义服务器,我知道传入的数据在到达实例之前必须首先通过负载平衡器。因此,为了监听请求,我需要监听来自负载平衡器的指定端口。我的问题是,当传入数据必须首先通过LB时,是否存在延迟开销? 我是否需要更改我的代码以便能够跨多个实例传播,或者负载平衡器将为我处理这些事情?当然,负载平衡器会导致一些延迟。但是LB可以非常简单,因此延迟应该最小 LB完全按照锡罐上的指示执行–它只是平衡负载。因此,如果应用程序的编写方式是,如果用户a同时在服务器X上访问应用程序,而用户B同

我打算在Azure上构建和部署一个自定义服务器,我知道传入的数据在到达实例之前必须首先通过负载平衡器。因此,为了监听请求,我需要监听来自负载平衡器的指定端口。我的问题是,当传入数据必须首先通过LB时,是否存在延迟开销?
我是否需要更改我的代码以便能够跨多个实例传播,或者负载平衡器将为我处理这些事情?

当然,负载平衡器会导致一些延迟。但是LB可以非常简单,因此延迟应该最小

LB完全按照锡罐上的指示执行–它只是平衡负载。因此,如果应用程序的编写方式是,如果用户a同时在服务器X上访问应用程序,而用户B同时在服务器Y上访问应用程序,则应用程序无法正常工作,即使两个用户都认为他们正在访问服务器Z,应用程序也无法正常工作。

由于这是路径的另一部分,因此将出现“一些”延迟。但是,从负载平衡器到VM实例的速度将非常快,因为两者位于同一个数据中心。这只是WindowsAzure结构的一部分

负载平衡器本身不可编程,基本上提供循环分布。您需要确保您的服务器不依赖于粘性会话-绝对不能保证访问服务器0的用户在下次访问时会访问服务器0


话虽如此:要跨实例共享状态信息,请查看AppFabric缓存,它大约在一个月前投入生产。这是一种缓存即服务(Cache-as-a-Service),提供了一种非常快速的存储和检索键/值对的方法。有关AppFabric缓存的详细信息如下。

因此,一种可能的解决方案是将所有客户端状态存储在角色实例之间的共享内存中?如果“客户端状态”指的是类似会话的内容,那么您可能不必共享它,因为smart LB始终将一个用户发送到同一服务器。但是,如果你的LB不是那么聪明,是的,你有共同的状态。问题是,这可能无法很好地扩展。是的,您需要找到一种共享状态信息的方法。请参阅我的答案,其中谈到了AppFabric缓存。感谢有关AppFabric缓存的信息,我打算使用一些内存中的数据库(如HSQLDB)作为解决方案,我将查看一下。可惜我的名声太低了,不能给你的答案投票。