10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

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

  • 2013-06-14
  • 本文字数:1871 字

    阅读完需:约 6 分钟

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

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

在过去的几年里,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 的功能

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2013-06-14 08:372223
用户头像

发布了 151 篇内容, 共 67.7 次阅读, 收获喜欢 18 次。

关注

评论

发布
暂无评论
发现更多内容

软件测试 /测试开发/全日制|Python全栈开发:使用AJAX进行前后端数据交互

测吧(北京)科技有限公司

测试

软件测试/测试开发/全日制 |从Flask到FastAPI:Python全栈开发中的后端框架比较

测吧(北京)科技有限公司

测试

2023 IoTDB Summit:华润电力技术研究院副院长郭为民《新型时序数据库在智能发电领域的应用探索与展望》

Apache IoTDB

软件测试/测试开发/全日制|pytest如何标记测试用例

霍格沃兹测试开发学社

软件测试/测试开发全日制培训|Pytest跳过用例和失败重试

霍格沃兹测试开发学社

软件测试/测试开发/全日制 | 深入学习React:Python全栈开发中的前端框架精要

测吧(北京)科技有限公司

测试

软件测试/测试开发/全日制 | Python全栈开发:构建基于RESTful API的微服务

测吧(北京)科技有限公司

测试

软件测试/测试开发/全日制 |Python全栈开发实战:搭建强大的Web应用服务器

测吧(北京)科技有限公司

测试

软件测试/测试开发/全日制 |Python全栈开发中的缓存技术应用与性能优化

测吧(北京)科技有限公司

测试

软件测试/测试开发/全日制 | Python全栈开发实战:利用Redis提高系统性能

测吧(北京)科技有限公司

测试

5G之味,在烟火长沙

脑极体

5G

云渲染适合什么场景下使用?

Renderbus瑞云渲染农场

云渲染 渲染农场 动画渲染 效果图渲染

创业清华人丨 乔嘉林:破茧成蝶,时序数据库赋能工业物联网

Apache IoTDB

软件测试/测试开发/全日制 | 理解深度学习在图像识别中的应用

测吧(北京)科技有限公司

测试

软件测试/测试开发/全日制 | Python全栈开发中的自动化部署与持续集成实践

测吧(北京)科技有限公司

测试

软件测试/测试开发/全日制 |Python全栈开发:利用RabbitMQ构建高效的消息队列系统

测吧(北京)科技有限公司

测试

软件测试/测试开发/全日制 |构建智能Web应用

测吧(北京)科技有限公司

测试

博通集成在其Wi-Fi芯片组上集成Alexa Connect Kit

财见

2024年CoinList上第一个项目Subsquid

币离海

Coinlist Subsquid SQD

软件测试/测试开发/全日制 |Python全栈开发:利用OAuth与JWT实现身份验证

测吧(北京)科技有限公司

测试

博通集成发布BK3633 Apple Find My网络配件解决方案

财见

软件测试/测试开发/全日制 |Python全栈开发:构建基于GraphQL的现代Web应用

测吧(北京)科技有限公司

测试

2024第十届上海国际智慧工地展览会

AIOTE智博会

智慧工地展览会 智慧工地展会 智慧工地展

软件测试/测试开发/全日制 |使用Django构建高效的Web应用

测吧(北京)科技有限公司

测试

软件测试/测试开发/全日制|Pytest如何灵活地运行用例

霍格沃兹测试开发学社

软件测试/测试开发/全日制 | Python全栈开发实战:构建安全可靠的Web应用

测吧(北京)科技有限公司

测试

软件测试/测试开发/全日制 | Python全栈开发:学习使用Nginx配置Web服务器

测吧(北京)科技有限公司

测试

敏捷监控与可观察性

FunTester

软件测试/测试开发/全日制 |从Git到Jenkins:Python全栈开发中的版本控制与自动化

测吧(北京)科技有限公司

测试

软件测试/测试开发/全日制 | Python全栈开发:安全防范与Web应用的漏洞预防

测吧(北京)科技有限公司

测试

Microsoft提供新模块,支持实时Node.js应用的水平伸缩_Windows Azure_Richard Seroter_InfoQ精选文章