RPC 系统(如 Twitter 的 Finagle)和企业服务总线(如 Mule)之间有什么区别?他们各自擅长解决什么样的问题?
3 回答
我将尝试将其作为一种软解释来回答,而不是对功能的技术细分:
有人可能会说 Finagle 是一个异步消息传递库,它允许服务自由地相互连接(不与架构系统集成标准紧密绑定),同时支持多种协议。
来自Finagle网站:
Finagle 是 JVM 的网络堆栈,您可以使用它以 Java、Scala 或任何 JVM 托管语言构建异步远程过程调用 (RPC) 客户端和服务器。Finagle 提供了一套丰富的独立于协议的工具。
另一方面,企业服务总线 (ESB) 是一种异步消息传递架构,通常遵循行业标准和协议。ESB 促进了一个系统,其中消息流在系统之间受到控制和路由,服务器可以注册他们的服务,客户端可以注册他们感兴趣的消息。服务器提供的服务可以注册和版本化。
您通常会发现 Finagle 在网站和后端服务之间的某个地方使用。但是,您通常会在大型公司内部找到 ESB,它负责集成财务、支持、销售等系统。
两种解决方案都为各种扩展提供异步消息传递和缓冲,但并非旨在解决相同的问题。对于 ESB,您可能会想到“严格、企业”,但对于 Finagle,您可能会想到“灵活、网络”。
希望这可以帮助
更新:
不太相关,但如果你正在探索这个领域,我会看看卡夫卡这些天。
RPC 和 ESB 是两种架构模式。虽然 RPC 通常本质上是请求-回复和同步,但 ESB 的工作原理是消息传递(简化解释)和异步本质。ESB 是任何 SOA 实现的基础。ESB 支持松散耦合,从而促进真正的敏捷性。从实现的角度来看一个简化的例子如下:
Web 服务是典型的 RPC。消费者与生产者紧密相连,生产者一方的合约发生任何变化,都需要消费者一方做出改变。
在 ESB 中,服务消费者不直接调用服务生产者。它只是将消息放入总线并根据规则(中介),适当的服务生产者将处理它。如果服务消费者和服务生产者以不同的格式交谈,ESB 提供了进行转换的工具(例如将邮政编码格式化为 xxxxx-xxxx,将姓名拆分为名字和姓氏等)。
这只是简化的解释。欲了解更多信息,请查看以下链接:
两者都解决了完全不同的问题:
- ESB 是一种中介中间件,它提供消息转换和路由、协议适配和其他增值操作(如编排、保证交付、幂等过滤......)。它位于您的服务消费者和提供者之间,并且透明地(即消费者或提供者没有任何变化)提供其不同的功能。
- RPC 系统提供用于执行 RPC 操作的客户端和服务器技术。