【问题标题】:Connection between programs over the network通过网络连接程序
【发布时间】:2018-04-27 07:50:19
【问题描述】:

我想深入了解通过网络提供程序之间连接的各种工具。

为了澄清问题,我将其划分为子问题:

  • 为什么某些程序组(或可以使用该框架的特定工具/框架/具有编程语言的方法)在每个时期都很流行?(我希望描述解决的问题、工具描述、为什么这些工具在当时被认为是解决这些问题的最佳解决方案、为什么有些工具失去了人气)
  • 通过网络进行软件通信的整个历史是怎样的?(工具/方法的流行度精确到几十年)
  • 这个问题的现代解决方案是什么

我只能区分两种重要的方法。

  1. RPC、RMI及其实现(我看到this,但它是关于具体问题和解决这个问题的具体工具,我想看看这个问题在哪里网络互连程序的全貌。我听说过实现:ONC RPC,XML-RPCCORBADCOMgRPC,但是现在哪些是活动的?哪些是合理的使用?哪些是可取的和为什么?我希望答案不是基于意见的,所以我接受诸如“技术 A 比技术 B 解决问题 X 因为 ...”之类的答案,前提是有可靠的研究/统计数据或事实)。听说 RPC 和 RMI 在 10 年前很流行。他们还在吗?

  2. 网络服务RESTSOAP

我错过了什么吗?也许有一些技术以全新的方式解决问题?也许有些技术可以替代 RPC(RMI) 和 Web 服务?对于任何任务,我们可以用 REST 替换 RPC(RMI) 吗?我们可以只为现代任务用 REST 替换 RPC(RMI) 吗?我是否应该不以 RPC 和 Web 服务,而是以其他方式将技术分开?

【问题讨论】:

  • Robert Orfali 90 年代中期的《分布式对象生存指南》一书将为您提供有关旧技术历史的一些背景知识。阅读也很有趣:-)

标签: rest web-services distributed-computing middleware corba


【解决方案1】:

作为部分答案,我可以就 RabbitMQ 的使用向您提供反馈。 正如here 的解释,它提供了很多不同的使用方式:

  • 通过实现“回调”队列进行 RPC
  • 一对一、一对多的路由策略,通过整个基础架构传播您的事件并定位正确的目的地。

它具有持久化消息的能力,以避免在出现崩溃时丢失数据,还具有一些插件以增加可能性(例如 x-delayed 插件)

这个用Erlang写的技术很强大,在程序之间的通信方面是必须尝试的。

【讨论】:

  • 我听说过 RabbitMQ,但如何将它与其他类似技术进行比较?我们什么时候应该喜欢它?这项技术有什么缺点?
  • @BhavinChirag,你应该看到this thread :)
【解决方案2】:

对于你的问题“我错过了什么”:是的。

非常流行的通信模式是所谓的事件驱动或消息驱动协议。这种类型的协议通常用于分布式系统,例如 Web 应用程序、微服务和物联网环境。通信是异步完成的,并允许构建可扩展且松散耦合的系统。

事件驱动系统有许多不同的框架和方法,例如 WebSockets、WebHooks、Pub-Sub 和消息传递库,例如 AcitveMQ、OpenMQ、RabbitMQ、ZeroMQ 和 MQTT。

希望这些信息对您的研究有所帮助。

【讨论】:

    猜你喜欢
    • 2012-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-05
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多