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

8
RPC系统(如Twitter的Finagle)和企业服务总线(如Mule)有何区别?它们各自擅长解决哪些问题?
3个回答

6
我将尝试以软性解释的方式回答,而不是技术特性的详细分析:
可以说Finagle是一种异步消息传递库,允许服务自由地连接在一起(不紧密地绑定到架构系统集成标准),同时支持多种协议。
Finagle网站上可以看到:
“Finagle是JVM的网络堆栈,您可以使用它来在Java、Scala或任何JVM托管语言中构建异步远程过程调用(RPC)客户端和服务器。Finagle提供了丰富的协议无关工具。”
另一方面,企业服务总线(ESB)是一种异步消息传递架构,通常遵循行业标准和协议。ESB促进了控制和路由系统之间消息流的系统,并且服务器可以注册其服务,客户端可以注册其感兴趣的消息。服务器提供的服务可以注册和版本化。
您通常会在网站和后端服务之间找到Finagle的使用。但是,在大型公司内部,您通常会发现ESB,它负责整合财务、支持、销售等系统。
两种解决方案都提供异步消息传递和缓冲,但它们的设计目的不同。对于ESB,您可能会想到“严格、企业级”,但对于Finagle,您可能会想到“灵活、Web”。希望这可以帮助您。
更新:虽然不是完全相关的,但如果您正在探索此领域,我建议您看一下Kafka

3
RPC和ESB是两种架构模式。虽然RPC通常是请求-响应和同步的,但ESB基于消息传递(简化解释)和异步性的概念工作。 ESB是任何SOA实现的基础。 ESB实现了松散耦合,从而促进真正的灵活性。从实施角度来看,一个简化的例子如下:
Web服务是典型的RPC。消费者与生产者紧密绑定,生产者端的任何合同变更都需要在消费者端进行更改。
在ESB中,服务消费者不直接调用服务生产者。它只是将消息放入总线中,并根据规则(中介程序)处理适当的服务生产者。如果服务消费者和服务生产者使用不同的格式进行交流,则ESB提供了进行转换的功能(例如将邮政编码格式化为xxxxx-xxxx,将名称拆分为名字和姓氏等)。
这只是简化的说明。有关更多信息,请查看以下链接: 开发人员为什么需要企业服务总线? 企业服务总线

2

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

  • ESB 是一种中介软件,提供消息转换和路由、协议适配以及其他增值操作(如编排、保证交付、幂等过滤等)。它位于服务消费者和提供者之间,透明地为它们提供不同的功能,而无需更改消费者或提供者。
  • RPC 系统提供客户端和服务器技术,用于执行 RPC 操作。

请您创建一个Finagle标签,我没有权限。 - Jack

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接