其实就是 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/
分享到:
相关推荐
2. **事件循环(Event Loop)**:Ruby-Async中的事件循环负责管理所有的异步操作,监控I/O事件,并根据需要调用相应的回调函数。事件循环是异步编程的心脏,它确保了所有任务的有序执行。 3. **组合性...
本资料包主要关注的是基于Ruby编程的基础知识和应用,包括如何使用Ruby进行开发和解决问题。 Ruby的设计哲学强调程序员的生产力和代码的可读性。它的语法直观,使得初学者能够快速上手。Ruby的核心特性包括: 1. ...
标题“叶玎玎:Real Time Solutions with Ruby”中的“Real Time Solutions with Ruby”明确指出本演讲或文章的主题是关于如何利用Ruby编程语言来实现实时应用解决方案。“叶玎玎”则是演讲者或作者的名字。 #### ...
在实际项目中,Ruby-Geocoder常与Ruby on Rails框架结合使用,通过配置ActiveRecord模型,可以方便地将地理位置信息存储在数据库中,并实现基于位置的查询。例如,你可以在模型中添加`geocoded_by`和`acts_as_...
基于Ruby编写的命令行注入版本.zip基于Ruby编写的命令行注入版本.zip基于Ruby编写的命令行注入版本.zip基于Ruby编写的命令行注入版本.zip基于Ruby编写的命令行注入版本.zip基于Ruby编写的命令行注入版本.zip基于Ruby...
它建立在Ruby的EventMachine库之上,主要用于处理一些大量的开放连接 (如Comet系统或streaming APIs),整个过程都使用event-driven I/O。 Cramp使用Rails 3.0的ActiveSupport 和 ActiveModel库, 它会显示两层用于...
2. **事件驱动**:Puma利用Ruby的事件库,如libuv或eventmachine,实现非阻塞I/O,使服务器能够高效地处理大量并发连接。 3. **热重启**:Puma支持热重启功能,这意味着在不中断服务的情况下可以更新应用程序代码。...
本资料包针对Ruby学习者提供了丰富的资源,对于初学者来说是非常有价值的。 1. **Ruby基础知识**: - 变量:Ruby支持局部变量、实例变量、类变量和全局变量,它们以不同的符号开头,如`@`、`$`等。 - 类与对象:...
### Ruby/tk 学习资料知识点详述 #### 核心概念:Ruby/tk简介与基本操作 ...通过学习如何引入库、创建根窗口、启动事件循环以及使用布局管理器等基本操作,开发者可以快速上手Ruby/tk并进一步探索更多高级功能。
Ruby-Falcon是一个专门为Ruby语言设计的高性能Web服务器,它的出现为开发者提供了在处理高并发、低延迟场景下的优秀选择。Falcon的主要特点是其对HTTP/2协议和HTTPS的支持,这使得它在现代Web服务中具备了高效且安全...
1. 高性能:agoo利用异步I/O和事件驱动的机制,有效地处理大量并发请求,减少了CPU和内存的占用。 2. Websocket与SSE支持:agoo内置对WebSocket和SSE协议的支持,可以轻松构建实时通信的应用。 3. 轻量级:相比于...
1. **异步事件驱动**:通过使用Celluloid::IO,Reel可以监听套接字事件,如新的连接、数据到达或连接关闭,这些事件都会触发相应的回调函数,无需等待I/O操作完成。 2. **HTTP/1.1支持**:Reel支持HTTP/1.1协议,...
RubyRetriever是一款基于Ruby语言实现的异步Web爬虫工具,它被设计为一个既可以作为命令行程序运行,也可以作为框架供开发者自定义爬取逻辑的解决方案。这个项目的核心特性在于其异步处理能力,这使得它在抓取大量...
1. **事件驱动模型**:Ruby中的Web服务器通常基于事件驱动模型,如WEBrick或Puma。这些服务器使用非阻塞I/O,以高效地处理并发请求。 2. **路由系统**:Ruby on Rails的路由系统将URL映射到控制器的特定动作,是...
- **学习建议**:通过本教程学习Ruby的基础知识后,尝试自己编写简单的程序来加深理解。 - **极客教程**: - **链接**:[Ruby 教程 | 极客教程](https://geek-docs.com/ruby/ruby-tutorial/ruby-tutorial.html) ...
Ruby on Rails(简称Rails)是一个基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在简化Web应用开发过程,提高开发效率。"ruby-bank"项目正是一个针对初学者设计的实践平台,...
Ruby-OurPC是一个针对gRPC框架的实验性实现,它为开发者提供了在Ruby环境中构建gRPC客户端和服务器的能力。gRPC是一个高性能、开源和通用的RPC(远程过程调用)框架,它基于HTTP/2协议设计,支持多种编程语言,包括...
Ruby是一种面向对象的编程语言,以其简洁、优雅的语法著称,被广泛应用于Web开发,尤其是与Ruby on Rails框架结合使用。"Ruby新手学习书"和"Rails_4_days"这两个资源是为初学者设计的,旨在帮助他们快速掌握Ruby语言...
"云片短息Ruby服务器端API"就是针对Ruby开发者的SDK,允许他们在服务器端通过编程方式发送短信验证码、通知或营销信息。 首先,我们需要了解如何安装这个SDK。通常,它会以Ruby gem的形式发布,可以通过`gem ...
异步是基于nio4r和计时器的可组合的Ruby异步I / O框架。 “最近我一直在研究异步,因为我的一个项目tus-ruby-server会真正受益于非阻塞I / O。实际上,Async是一个基于nio4r和Ruby的可组合的Ruby异步I / O框架。 ...