写点什么

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

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

关注

评论

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

Charles 工具如何做断点测试

伤心的辣条

Python 程序人生 软件测试 自动化测试 接口测试

认识一下什么是JSP

华为云开发者联盟

Java jsp 网页 前段

窃取证书的攻击流程及抓包分析

网络安全学海

黑客 网络安全 信息安全 渗透测试 WEB安全

Python自动化测试之模块、包与路径知识讲解

伤心的辣条

Python 程序员 程序人生 软件测试 自动化测试

Nydus —— 下一代容器镜像的探索实践

SOFAStack

开源 云原生 dragonfly 容器镜像

用 docker 创建 jmeter 容器,实现性能测试

伤心的辣条

Python 程序员 软件测试 自动化测试 程序员‘

【协程】ViewModelScope源码解析

yechaoa

android 协程 6月月更 ViewModelScope

使用GeekCode在开发中分离计算和存储

王泰

CloudIDE 云 IDE

ScheduledThreadPoolExecutor

急需上岸的小谢

6月月更

2022,云上开发新纪元

Heighliner

云原生 #k8s 开发者, 远程开发

如何玩转“听到头疼用了爱”的函数计算

明道云

改变世界的开发者丨以梦为码,华工小哥的致青春

华为云开发者联盟

数据库 华为云

Java—线程安全

武师叔

6月月更

直播场景音频降噪,传统算法 VS AI 算法对比和实践

融云 RongCloud

详解GPU虚拟化技术

Finovy Cloud

人工智能 云渲染 GPU服务器

从概念到安全实践:软件供应链基础指南

SEAL安全

DevOps 安全 DevSecOps 软件供应链

手慢无!‘’阿里爸爸‘’6月最新开源新版Spring Cloud Alibaba全体系10w字全彩笔记

Java全栈架构师

Java 程序员 面试题 架构师 SpringCloud

什么是真正的敏捷开发?敏捷开发与瀑布开发有何不同

阿里云云效

云计算 阿里云 敏捷开发 研发 开发模式

基于EasyCV复现ViTDet:单层特征超越FPN

阿里云大数据AI技术

自然语言处理 异构计算 深度学习/机器学习 编译码

测试基础之:自动化测试

甜甜的白桃

软件测试 自动化测试 6月月更

vue-class与style绑定

小恺

6月月更

【题解】剑指 Offer 05. 替换空格(C语言)

未见花闻

6月月更

SOL staking质押现已在 AscendEX Earn 上线

鳄鱼视界

百里带你一文读懂selenium自动化测试(基于Python)

伤心的辣条

Python 程序人生 软件测试 自动化测试

教你搭建一个Telegraf+Influxdb+Grafana 监控系统

华为云开发者联盟

云计算 华为云

好的产品帮助文档可以留住一个用户的心

小炮

始于架构,精于治理|阿里云中间件开发者大会火热报名中

阿里巴巴中间件

阿里云 开发者 中间件

详解MOVE PROTOCOL的测试版,让健康运动如影随形

BlockChain先知

一个算子在深度学习框架中的旅程

OneFlow

深度学习 算法 框架设计

力扣每日一练之二分查找Day10

京与旧铺

6月月更

ConcurrentHashMap性能测试

FunTester

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