写点什么

使用 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:301277
用户头像

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

关注

评论

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

如何让 Windows 应用程序在 Parallels Desktop 中启动得更快

Rose

pd虚拟机 pd18虚拟机 Parallels Desktop启动

vue3学习-Composition API

格斗家不爱在外太空沉思

Vue 3 三周年连更

华为工单宝助力科视光学实现售后服务自动化,提升客户体验和企业效率

YG科技

Django笔记十一之外键查询优化select_related和prefetch_related

Hunter熊

Python django 外键查询优化 select_related prefetch_related

Docker容器网络的七种武器

王玉川

Docker 容器 网络 VXLAN 网络虚拟化

携程商旅白皮书前瞻:商务旅行,迎来怎样的复苏?

携程商旅

技术 企业管理 数字化 商旅系统 差旅报销

陈小伟:从ChatGPT谈起,预测5个数据库开发趋势

OceanBase 数据库

数据库 oceanbase

基于UDP协议的Socket通信

芯动大师

UDP协议 客户端配置 三周年连更

SpringBoot如何使用Jetty容器?超级详细,建议收藏

bug菌

springboot jetty 三周年连更

近期Master分支代码编译异常的解决方案

坚果

OpenHarmony OpenHarmony3.2 三周年连更

跨平台应用开发进阶(五十一):HTML5(富文本内容)连续数字、字母不自动换行问题分析及解决

No Silver Bullet

html5 跨平台应用开发 三周年连更 问题分析及解决

《一文带你看懂:亿级大表垂直拆分的工程实践》

后台技术汇

数据库 后端 三周年连更

一文读懂物联网 MQTT 协议之基础特性篇

老周聊架构

三周年连更

基于Flutter实现跨平台离线大模型对话应用

轻口味

flutter ios android AI 三周年连更

使用 Amazon SageMaker 构建文本摘要应用

亚马逊云科技 (Amazon Web Services)

基于树莓派设计的音视频播放器(从0开始)

DS小龙哥

三周年连更

PicConvert for mac:以批处理模式转换,调整大小和重命名图像

Rose

苹果软件资源 图片格式转换 PicConvert mac mac图片编辑

测试需求平台 7- 产品管理服务接口一篇搞定

MegaQi

Python 挑战30天学完Python 三周年连更

华为工单宝:助力制造业数字化转型,通过项目管理实现售后服务自动化和规范化

YG科技

逐渐消失的站长圈子,未来个人站长如何转型

石头IT视角

告别祈祷式编程|单元测试在项目里的正确落地姿势

浅羽技术

Java 测试 单元测试 JUnit 三周年连更

强大易用的矢量图形设计工具Sketch v96.1最新中文版

Rose

苹果软件下载 Sketch中文版 Sketch V96.1 mac图形设计工具

Java异常Exception详解

timerring

Java 三周年连更

linux性能调优

乌龟哥哥

三周年连更

深入剖析Go语言中的Channel:高级特性与注意事项

Jack

通俗易懂篇:贝叶斯网络和它的应用

Bob

网络 贝叶斯算法

掌玩科技×OceanBase:HTAP实时数据分析,降低80%存储成本

OceanBase 数据库

数据库 oceanbase

Unity 之 查找游戏物体的几种方式汇总解析

陈言必行

Unity 三周年连更

PDF编辑软件Acrobat Pro DC 2023 最新版+如何取消Acrobat更新教程

Rose

Acrobat Pro DC 2023 Acrobat Pro DC更新 如何取消Acrobat 自动更新

Mac音频采样器Kontakt 7最新版v7.3.0下载

Rose

mac音频采样器 Kontakt 7激活版 Native Instruments Kontakt 7 mac下载

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