像Twitter的Finagle这样的RPC系统和像Mule这样的企业服务总线有什么区别?他们每个人都有什么好的解决方法?
答案 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,将名称拆分为名字和姓氏等)。
这只是简化的解释。有关详细信息,请查看以下链接:
答案 2 :(得分:2)
两者都解决了完全不同的问题: