RPC系统与企业服务总线的区别

时间:2011-08-24 13:44:17

标签: soa rpc esb mule finagle

像Twitter的Finagle这样的RPC系统和像Mule这样的企业服务总线有什么区别?他们每个人都有什么好的解决方法?

3 个答案:

答案 0 :(得分:4)

我将尝试回答这个问题作为一个简单的解释,而不是功能的技术细分:

可以说Finagle是一个异步消息传递库,允许服务在支持多种协议的同时自由连接(不与架构系统集成标准紧密相关)。

来自Finagle网站:

  

Finagle是JVM的网络堆栈,您可以使用它来构建Java,Scala或任何JVM托管语言的异步远程过程调用(RPC)客户端和服务器。 Finagle提供了一组丰富的协议独立工具。

另一方面,企业服务总线(ESB)是一种异步消息传递体系结构,通常遵循行业标准和协议。 ESB推广了一个系统,在这个系统中,消息流在系统之间进行控制和路由,服务器可以注册其服务,客户端可以注册他们感兴趣的消息。服务器提供的服务可以注册和版本化。

您通常会发现Finagle被用于网站和后端服务之间。但是,您通常会在大型企业中找到一个ESB,负责集成财务,支持,销售等系统。

这两种解决方案都为各种扩展提供异步消息传递和缓冲,但不是为解决同样的问题而设计的。对于ESB,您可能会认为“严格,企业”,但对于Finagle,您可能会认为“灵活,网络”。

希望这有帮助

<强>更新

不太相关,但如果你正在探索这个空间,那么我最近会看Kafka

答案 1 :(得分:3)

RPC和ESB是两种架构模式。虽然RPC本质上是一个请求 - 回复和同步,但ESB的工作原理是消息传递(简化解释)和异步的概念。 ESB是任何SOA实现的基础。 ESB可实现松散耦合,从而提高真正的敏捷性。实现角度的简化示例如下:

Web服务是典型的RPC。消费者与生产者紧密联系,生产者方面的任何合同变更都需要消费者方面的改变。

在ESB中,服务使用者不直接调用服务生产者。它只是将消息放入总线并根据规则(中介),适当的服务生产者将处理它。如果服务使用者和服务生产者以不同的格式说话,ESB提供了进行转换的工具(例如将邮政编码格式化为xxxxx-xxxx,将名称拆分为名字和姓氏等)。

这只是简化的解释。有关详细信息,请查看以下链接:

Why do developers need an Enterprise Service Bus?

Enterprise Service Bus

答案 2 :(得分:2)

两者都解决了完全不同的问题:

  • ESB是一种中介中间件,提供消息转换和路由,协议适配和其他增值操作(如编排,保证传递,幂等过滤......)。它位于您的服务使用者和提供者之间,并且透明地(即消费者或提供者没有任何变化)提供其不同的功能。
  • RPC系统提供用于执行RPC操作的客户端和服务器技术。