阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

使用 AP4R 在 Ruby 中实现可靠消息传送

  • 2007-06-19
  • 本文字数:870 字

    阅读完需:约 3 分钟

一直以来,篠原俊一(Shunichi Shinohara)和加藤究(Kiwamu Kato)在致力于将可靠消息传送(Reliable Messaging)引入 Ruby。他们以先前设计基于 Java 的高容量消息传送框架的经验为基础,通过他们自主的 API 和协议的项目,试图将这个努力变为现实。 AP4R 这个项目的名称是 Asynchronous Processing for Ruby 的缩写,意即“Ruby 的异步处理”。该项目是一个异步可靠消息处理的实现,提供消息队列和消息分派的功能。篠原和加藤在日本 Ruby 会议 2007(RubyKaigi 2007)上进行了演讲(PDF 幻灯片),介绍了他们的 API,并强调其核心设计哲学:鲁棒性和轻量级。

这个项目问世仅仅一年,但已经能支持:

  1. 不管业务逻辑是非同步调用还是同步调用的,都可以以简单的 Web 应用或者 Ruby 代码的形式实现;
  2. RBMS(MySQL)或者基于文件的消息持久化能力;
  3. 支持在单个或者多个服务器上跨多个 AP4R 进程的负载平衡;
  4. 对以下多个协议的支持:XML-RPC、SOAP 和 HTTP POST 等等。

先前,篠原和加藤已经实现过他们自己的基于 Java 的 API 和协议(称为 RtFA),这项成果被用于一个包含 100 台服务器的大型应用中,该应用每天处理超过 1 亿条消息。篠原和加藤声称,他们已经改进了先前在 AP4R 上的工作,并且也在易用性上花了很大工夫。AP4R 所附带的文档非常完整详尽。

要将 AP4R 整合进 Rails,典型流程如下:

  1. 客户端(如 Web 浏览器)向 Web 服务器(Apache 和 Lighttpd 等)发送请求;(
  2. Rails 应用通过 mod_proxy 或者其它被同步地在 mongrel 上执行;
  3. Rails 应用通过 AP4R 的 API 发送消息,并可以在随后立刻响应给客户端;
  4. AP4R 将消息放入队列,并且异步地将其请求到 Web 服务器;
  5. 异步的业务逻辑(以常见的 Rails Action 的形式实现)被执行。

0.3.x 关注的是后台服务化(Daemonization)、URL 重写过滤器(URL-rewrite filter)、DLQ / SAF 恢复,以及对将 Stomp 和 HTTP 作为底层协议的支持。今后的版本将包含对监控和管理的支持(如线程状态和 Web 前端)、与 Cacti 和 Nagios 等的协作、多进程、动态可配置性、自动恢复和阻塞队列等等。

查看英文原文: Reliable Messaging in Ruby with AP4R

2007-06-19 19:30797
用户头像

发布了 117 篇内容, 共 14.9 次阅读, 收获喜欢 0 次。

关注

评论

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

Protobuf 属性解释

Java 程序员 后端

Redis实现feed流

Java 程序员 后端

Nginx详解Location匹配规则

Java 程序员 后端

nodeJS——网络编程

Java 程序员 后端

OpenFaaS实战之六:of-watchdog(为性能而生)

Java 程序员 后端

macOS 环境安装Flutter

坚果

flutter 11月日更 安装部署

Redis(四):整数集合

Java 程序员 后端

Redis哨兵原理,我忍你很久了!

Java 程序员 后端

Nginx服务器配置

Java 程序员 后端

OpenFaaS实战之六:of-watchdog(为性能而生)(1)

Java 程序员 后端

OpenKruise v0

Java 程序员 后端

Netty编解码方案之Protobuf介绍

Java 程序员 后端

pageHelper----Mybaits分页插件

Java 程序员 后端

redis之单机多节点集群

Java 程序员 后端

netty的线程模型, 调优 及 献上写过注释的源码工程

Java 程序员 后端

OpenTelemetry 简析

Java 程序员 后端

pro、pre、test、dev环境

Java 程序员 后端

Redis 的持久化机制和AOF文件重写原理

Java 程序员 后端

NodeJS快速入门必备技能

Java 程序员 后端

Redis(二十一):复制

Java 程序员 后端

Redis实现feed流(1)

Java 程序员 后端

OpenSSL 生成CA证书及终端用户证书

Java 程序员 后端

ReactJS实战之生命周期

Java 程序员 后端

Redis安装与部署新手入门教程

Java 程序员 后端

Redis小白入门教程

Java 程序员 后端

Nginx超详细的常用两种安装方式

Java 程序员 后端

NoSQL到底怎么用?

Java 程序员 后端

OpenFaaS实战之四:模板操作(template)

Java 程序员 后端

Oracle数据库访问性能优化

Java 程序员 后端

Qt知识点梳理 —— 获取设备CPU、内存、磁盘等硬件信息

Java 程序员 后端

Redis哨兵模式原理剖析,监控、选主、通知客户端你真的懂了吗?

Java 程序员 后端

使用AP4R在Ruby中实现可靠消息传送_Ruby_Sebastien Auvray_InfoQ精选文章