gpt4 book ai didi

ruby - 发布/订阅 REST-HTTP 简单协议(protocol) Web 服务架构?

转载 作者:数据小太阳 更新时间:2023-10-29 07:17:45 28 4
gpt4 key购买 nike

我正在询问您关于“架构”场景的建议:

我正在寻找一种最简单的发布/订阅架构,让两个分离的服务器在互联网上进行对话,共享“稀疏”但“实时”的消息/事件。

让我解释一下:

  • 发布者:是生成某种事件的服务器( http://www.server.com )(例如events==电子商务网站上的订单数据)。

  • 订阅者(一个或多个):是可以订阅接收 ORDERS 事件的“客户端”(http://www.client.com)。

在现实生活中,发布者是由第三方(在 Rails 中)开发的服务器。目前,我可以通过简单的“轮询”策略将其连接到获取“订单”的接口(interface):每隔 N 秒我调用一次 GET/new_orders。

坏了!

所以我正在考虑使用 REST 方法构建更好的发布/订阅架构,发布者共享事件资源:

  • 客户端订阅接收事件,向发布者提供一个将来调用“URL HOOK”(例如:http://www.client.com/orders)。

  • Publisher,当有新事件(==订单)时简单的 HTTP POST 数据到客户先前提供的客户 URL Hook 。

有意义吗?或者我正在重新发明轮子?

顺便说一句,我使用 Ruby 语言进行开发,并且我知道发布/订阅消息传递系统是 Faye。但是您如何看待这个简单的协议(protocol)(我想简单地使用 Ruby/Sinatra 实现客户端)? (见图 1)

欢迎任何建议。非常感谢

乔治

simple architecture proposed

最佳答案

任何时候您都可以让第三方 POST 到您的网络服务,这是一件好事!很多时候,这不是一种选择,您必须求助于某种低效的轮询架构。我认为您的架构图没有任何问题。

您始终可以使用第三方消息系统(Amazon SQS、RabbitMQ 等),但没有太多理由这样做,除非您需要 durable messaging .

编辑:

如果您担心 HTTP 流量——特别是对您的网络服务的调用次数——您还可以鼓励第三方支持批量 POSTing。也许他们只能作为批处理的一部分每 5 分钟向订阅者发送新订单。

关于ruby - 发布/订阅 REST-HTTP 简单协议(protocol) Web 服务架构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22046328/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com