报名了: 本周末学习用Ruby写基于事件的异步服务器

本文介绍了异步服务器的工作原理及其实现方式,通过对比同步服务器,阐述了异步处理的优势,并提到了几种异步技术的实现方法,如Socket.io、Python的Twisted和Ruby的EventMachine等。最后,作者计划利用Faye实现一个多用户在线贪吃蛇游戏。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

其实就是 ruby event based asynchronous server, 服务器/客户端用web sockets通信的

 

传统的网络服务器(Apache等)都是基于同步处理(客户端发Request,服务器处理, 返回结果)。 这样的结果是一个客户端的读写操作会占用服务器系统资源,是得其他客户端得请求要等待其结束才能被处理,或者只能多线程。 异步处理采用基于事件得方式,实现反应器得的样式(reactor pattern). 服务器接到请求后交给后台处理, 然后立刻接下一个请求, 后台处理好之后服务器受到通知,然后再以回叫(callback)的方式通知客户端。 

 

举个呼叫中心的例子: 

 

同步服务器: 

 

客户: 我要找xxx资料

接线员: 你等一下啊别挂。。 我让同事(后台服务)帮我找找看。。 (10分钟后) 找到了。。 你的资料是xxx

客户:谢谢

 

异步服务器:

客户1:我要找xxx资料

接线员: 知道了。挂电话吧, 找到我给你打回去 。 。。 那谁(后台服务),帮我找xxx

客户2:我要找yyy资料

接线员: 知道了。挂电话吧, 找到我给你打回去 。 。。 那谁(后台服务),帮我找yyy

... 

 

 

可见异步是非常有效的方式,可以是服务器能同时处理的请求大大增加。 非常适用于即时网络(real time web), 多用户互动游戏等应用上。 其具体的实现方法有很多种, Socket.io, Python有Twisted, Ruby有基于EventMachine的Coolio, 再高层的抽象有Express.js, Cramp / Goliath等等. 还有商业的应用比如Pusher

 

我做了些研究, 觉得最方便好用的还是Faye - 同时支持Node 和Ruby, 基于Rack,可做中间件, 很方便和Rails集成。 

 

讲了这么多。。 我这周末准备用Faye做一个多用户的贪吃蛇游戏, 便做边学习异步。用到的技术会有 Rails, Faye, HTML5 (drawing and web sockets), jQuery, javascript等。 如果有人想一起学习, 可以报个名,我们可以约下时间一起做, 在网上找个聊天室或者IRC即时交流。

 

新手/中手不要害怕, 只要你有Rails基础就可以来做, 我可以帮助大家。。。高手们,我们需要你们

 

一些阅读资料

 

http://www.slideshare.net/igrigorik/event-driven-architecture-meshu-ilya-grigorik

http://railscasts.com/episodes/260-messaging-with-faye

http://faye.jcoglan.com/

http://www.slideshare.net/ismasan/websockets-and-ruby-eventmachine

http://diveintohtml5.org/

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值