写点什么

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

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

关注

评论

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

向量数据库入坑:入门向量数据库 Milvus 的 Docker 工具镜像

Java-fenn

Java

算法、算力、数据,AI落地现在还需要AI工程化

Java-fenn

Java

Java程序员:为了跳槽刷完1000道真题,没想到老板直接给我升职了!

收到请回复

Java 云计算 开源 架构 编程语言

跟着卷卷龙一起学Camera--CameraService

卷卷龙

ISP 9月月更

终于懂了,RPC和OpenApi的区别

知识浅谈

RPC OpenAPI 9月月更

Plato Labs推出的SeedX,公测15天570万美金净利润

鳄鱼视界

整理的5种Linux 安装包管理工具

CTO技术共享

基于.NET6的简单三层管理系统

Java-fenn

Java

pod(一):Kubernetes(k8s)创建pod的两种方式

Java-fenn

Java

Java 多线程:并发编程的三大特性

Java快了!

Java多线程

Java进阶(二十三)java中long类型转换为int类型

No Silver Bullet

Java 类型转换 9月月更

腾讯云数据库自研内核全新升级 新架构比原先性能提升20%

Java-fenn

Java

SpringBoot数据库管理 - 用Liquibase对数据库管理和迁移?

Java快了!

数据库 spring-boot

《Java面试考点大全》全网首发,带你摸熟20+互联网公司的面试考点!

收到请回复

Java 云计算 开源 架构 编程语言

npm,pnpm,yarn,npx的那些事儿

Java-fenn

Java

Cryptocell-712安全引擎概述

Java-fenn

Java

户外LED广告屏如何才能保养好?

Dylan

LED显示屏 led显示屏厂家

只要32天就能拿下Offer?框架+性能优化+微服务+分布式,Java程序员必备!

收到请回复

Java 云计算 开源 架构 编程语言

一个不错的开源项目风控引擎(Radar)

Java-fenn

Java

MySQL 如何查找删除重复行

CTO技术共享

Kubernetes 网络排查骨灰级

CTO技术共享

从 ABAP Netweaver 到 ABAP Platform,我们一直在努力

汪子熙

SAP abap Netweaver 企业级应用 9月月更

MyBatis-Plus(三、增删改查)

MySQL MyBatisPlus 9月月更

继GitHub的Copilot收费后,亚马逊推出了 CodeWhisperer,感觉不错哟!

Python猫

Python

阿里、字节、美团我都面了,offer也拿到了,全靠这份Java面试题!

收到请回复

Java 云计算 开源 架构 编程语言

COSI:使用 Kubernetes API 管理对象存储

Java-fenn

Java

羊了个羊”通关修改思路

Java-fenn

Java

Elasticsearch聚合学习之四:结果排序

程序员欣宸

elasticsearch 9月月更

【Vue3】 评论列表(简易)-- 思路与实现分析

Sam9029

JavaScript Vue Vue3 9月月更

阿里前端常见面试题总结

loveX001

JavaScript 前端

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