Microsoft提供新模块,支持实时Node.js应用的水平伸缩

Microsoft最近贡献了一个新的开源模块,该模块使用Windows Azure服务器总线为实时Node.js应用提供水平伸缩性。这个名叫socket.io-servicebus的模块能连接多个运行在Socket.IO模块上的服务器。此次开源贡献是Microsoft拥抱Node.js、并将Microsoft产品和服务与Node.js整合在一起的又一例证。

\u0026#xD;

Socket.IO由富有创造力的Guillermo Rauch创建,对于那些在主要浏览器里运行的实时Node.js应用,开发人员可以通过Socket.IO在应用里使用WebSockets。这个重要模块每个月的下载量都超过十五万次,开发人员会用它把服务器端的消息推送给任意的或所有的已连接客户端。使用Socket.IO的单个Node.js服务器可以保持成千上万个并发连接,但在构建跨多个服务器的应用时却有点儿力不能支。Socket.IO最近新增了对“存储”的支持,该功能提供中间人式的存储,可以在多个服务器之间共享信息。Microsoft提供的socket.io-servicebus模块将Windows Azure服务总线作为存储,所有集中在一起的Node.js服务器可以借此把消息分发到已连接的客户端上。

\u0026#xD;

在过去的几年里,Microsoft对Node.js可谓是颇为偏爱。在他们的Windows Azure门户上有一个专门的Node.js开发中心,有很多指导开发人员往Microsoft云上部署Node.js应用的教程和参考资料。他们还为Node.js开发人员创建了几个开源模块。借助开源模块Azure SDK for Node,开发人员能轻松访问包括Windows Azure存储(table/queue/blob)、Windows Azure服务总线、Windows Azure SQL数据库在内的服务子集。此外,针对Node.js的Microsoft SQL Server驱动模块提供了一套基本接口,运行在Microsoft Windows上的Node.js应用可以用它访问Microsoft SQL Server。还有由Microsoft的Tomasz Janczuk创建的Edge.js模块将.NET代码集成到了Node.js代码里,开发人员可以在需要的时候访问稳健的.NET框架。Microsoft甚至在他们免费的WebMatrix开发环境里提供了开发和部署Node.js的功能

\u0026#xD;

为了进一步了解这个新模块,InfoQ联系到了Glenn Block并对他进行了简单的采访。Glenn Block是Windows Azure团队的高级项目经理,也是Microsoft开源项目的公开布道者。

\u0026#xD;

InfoQ:这个模块解决了Socket.IO的什么问题?

\u0026#xD;
\u0026#xD;

Block:设计这个模块是为了让大家对使用Socket.IO、跨多个节点实例的应用进行水平伸缩,这些节点实例可以位于不同的物理机或虚拟机上。在单个数据中心里,这个模块可以对多个实例上的单个应用进行水平伸缩;对分布在多个数据中心上的实例来说,这个模块则可以用来同步实例的实时数据。

\u0026#xD;

应用本身并不一定要由Windows Azure托管,但Windows Azure能提供更多功能。

\u0026#xD;
\u0026#xD;

InfoQ:为什么由Windows Azure服务总线提供这个功能?出于它的什么特性?

\u0026#xD;
\u0026#xD;

Block:Windows Azure服务总线是一个具备高度伸缩性和冗余度的发布/订阅消息处理平台,它基于Windows Azure平台、可地理定位。这使得它非常适合处理可水平伸缩的场景。

\u0026#xD;
\u0026#xD;

InfoQ:它的工作原理究竟是怎样的?

\u0026#xD;
\u0026#xD;

Block: Socket.IO提出了“存储”的抽象概念,以确定消息保存在哪里。在新模块里,我们提供了SbStore,它利用服务总线的主题同步多个监听该主题的Socket.IO实例。每当接收到Socket.IO客户端发送的消息,消息就会被发送到存储里,并通过服务总线发送给各个实例。接着,每个Socket.IO实例就可以和与它相连的客户端直接通信了。

\u0026#xD;

有一点很重要,这是我们的第一个版本,它是第一次接受检验。我们很可能会根据用户的使用情况对模块进行性能调优。

\u0026#xD;
\u0026#xD;

InfoQ:你觉得对可伸缩性的支持会不会让Socket.IO在全新的场景里发挥作用?

\u0026#xD;
\u0026#xD;

Block:对托管在Windows Azure里的应用来说,答案是肯定的,因为服务本身就在Azure里。还有一些其他的存储替代方案,比如RedisStore,它允许使用内存数据库Redis,结合Redis To Go之类的服务也能提供相似的功能。

\u0026#xD;
\u0026#xD;

InfoQ:Microsoft似乎迷上了Node.js,已经创建并分享了很多有创造性的模块和教程。是Node.js满足了其他Microsoft产品目前还不能满足的独特需求呢?还是这仅仅是Microsoft拥抱流行平台、展示相关整合情况的一个例子而已?

\u0026#xD;
\u0026#xD;

Block:这是个很好的问题。我不觉得这是非此即彼的。Node.js是个很棒的平台,越来越深入人心,而且有着非常丰富的模块生态系统,一些开发人员很喜欢这一点。我们在Windows Azure里支持Node.js的确是要为开发人员提供一种替代方案,让更多的开发人员使用我们的平台,尤其是那些不使用.NET框架开发、或者是正在构建混合解决方案的开发人员。

\u0026#xD;
\u0026#xD;

查看英文原文:Microsoft Offers Module to Scale Out Real-time Node.js Applications

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2名名名名名名名名名名名名名名名名名名名

谢谢啊011702

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值