asp.net-mvc-3 – Azure服务总线 – 双向通信性能挑战
我需要在发布服务器和订阅服务器之间建立双向通信.这是为了方便前端MVC3应用程序使用关联过滤器定义订阅,然后将消息放到主题上.最后,MVC3控制器调用SubscriptionClient上的BeginReceive(),并等待响应.
问题似乎是创建和删除这些Subscription对象.开销很大,并且会使应用程序变慢.这并不是说要解决的各种限制,例如主题上的订阅数量不超过2000个. 在发布者和订阅者之间建立这种双向通信的最佳实践是什么?我们希望MVC3应用程序发布消息,然后等待对该确切消息的响应(通过CorrelationId属性和CorrelationFilter).我们已经缓存了NamespaceManager和MessagingFactory,因为它们在资源方面也非常昂贵,并且还因为我们被告知Service Bus使用显式配置模型,我们需要在角色启动期间预先创建大部分这些内容. 因此,这给我们带来了将请求与响应相关联的挑战,以及创建和删除订阅的巨大开销.还有什么更好的做法?我们应该保留SubscriptionClient的缓存,并每次交换过滤器吗?其他人都做了什么?我需要通过Web角色群集获得每秒5到10,000个MVC3请求的请求吞吐量.我们已经在使用AsyncController并在SubscriptionClient上使用异步BeginReceive().它似乎是数以千计的订阅的创建和删除,此时系统正在窒息. UPDATE1: 但是,这仍然没有缩放.似乎AcceptMessageSession()是一个非常昂贵的操作. MessageSession对象是否也应该被缓存并重新使用?每个打开的MessageSession对象是否都使用与服务总线的连接?如果是这样,这是否与订阅的并发连接配额相对应? 非常感谢.我想我们到了那里. Web上的大多数示例代码显示:在客户端上创建Topic(),然后是CreateSubscription(),然后是CreateSubscriptionClient(),然后是BeginReceive(),然后拆除所有对象.我只能说,如果你在现实生活中这样做,你的服务器就会被粉碎,你最快就能连接起来了. 我们需要通过这个东西每秒发出数千个请求,很明显这些对象必须被高速缓存和重用.那么,MessageSession还有另一个要缓存的项目吗?我将获得有趣的缓存,因为我们必须实现一个引用计数机制,其中一次只能给出一个对MessageSession的引用,因为这是针对http请求特定的请求/响应,我们不能有其他订阅者同时使用MessageSession对象. UPDATE2: 发明内容/评注 如果有人有另一种观点,我很乐意听到. 解决方法
此场景是一个经典的请求/响应,也是使用会话的好选择.这是另一种相关机制.创建一个简单的请求队列和响应队列.每个Web角色线程都为请求创建一个唯一的sessionid,并将该值放入brokeredmessage的“ReplyToSessionID”属性中.此线程还使用sessionid值在响应队列上调用
AcceptMessageSession,以便锁定它.代理消息被发送到请求队列,并且所有工作者角色竞争消息.当一个辅助角色获得一个请求时,它会处理它,创建一个响应消息并在请求的响应消息= replytosessinid上设置sessionid属性.然后将其发送到响应队列,并仅传递给已锁定该会话ID的线程.详细样本
using sessions is here.此处有2个额外样本使用
Queues和
Topics来实现请求响应关联.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 无法自动进入服务器.无法确定停止位置
- 如何在VBScript中将二进制数据写入磁盘?
- 单元测试 – MVCContrib测试路径与区域
- asp.net-mvc-3 – MVC3 EditorFor动态属性(或需要解决方法)
- asp.net – 在部署过程中如何显示维护页面?
- 如何从ASP.NET变量中提供JavaScript变量数据?
- asp.net – 从.net应用程序下载4GB文件
- asp.net-mvc-3 – AZURE ACS – Windows Live ID – 如何获
- asp。net内置委托
- asp.net-mvc – 当在视图中使用ko时,ko.applyBindings给出错
- 经典ASP亚马逊s3休闲授权
- asp.net-web-api – 在WebApi OData中为OData服务
- Asp.net MVC json还是Json.net?
- IIS和ASP.NET中的时间差异
- asp.net-mvc – MVC4 SimpleMemberhip’提供商遇
- ASP.NET MVC – Ajaxified RenderAction
- asp.net – 使用Typescript时Visual Studio 2015
- asp.net-mvc – TDD工作单元模式Moq无法实例化类
- asp.net-web-api – 将属性注入Web API的`System
- asp.net – 无法获得typeahead.js基本示例