【RPC框架】RPC与Dubbo(让你一文搞懂,超级详细好理解!)

目录

什么是RPC框架,Dubbo又是什么,二者之间有什么联系        

是不是说的有些抽象,那我们来说的通俗易懂点吧,这次你一定能听懂

简单举例

实际例子

真实场景demo(说了这么多,实际体会一下代码吧)

首先有这样的一个项目结构​编辑

 我们现在的consumer项目,想要去调用provider项目中某一个接口的服务

 而consumer内部就需要发送一个http请求去获取这个provider项目中锁提供的服务,也就是先请求打到provider项目中的controller里再去调用它的service

 在我们没有用其他工具的时候,我们就需要自己去构建一个httpConnect的工具,再去发送这样一个http的请求(http://localhost:8080/ provider/ service)

此时我们采用Dubbo的话,就会简便很多


什么是RPC框架,Dubbo又是什么,二者之间有什么联系        

        RPC框架是一种用于实现远程过程调用的软件框架。它提供了一套通信协议、编码/解码机制以及远程调用的功能,可以简化分布式系统中不同计算机之间的通信和调用过程

        Dubbo是一个开源的高性能RPC框架,最初由阿里巴巴公司开发并开源。它提供了一种基于Java语言的轻量级分布式服务框架,用于构建可扩展的、高性能的分布式应用程序。Dubbo在RPC的基础上,提供了更多的功能和特性,如服务注册与发现、负载均衡、容错机制等,使得分布式系统的开发和管理更加便捷。

        因此,Dubbo可以被看作是一个完整的分布式服务框架,内部使用RPC来实现远程调用。它通过封装对底层通信协议的使用,提供了更高层次的抽象和功能,使得开发者能够更专注于业务逻辑的开发,而无需关心底层通信细节。

与传统的RPC相比,Dubbo具有以下特点:

1. 高性能:Dubbo采用了一些优化策略,如请求响应模式、线程池复用、自动扩容等,以提供高性能的服务调用能力。
2. 具备扩展机制:Dubbo提供了插件式的扩展机制,可以灵活地扩展和定制各个功能模块,如协议、负载均衡、容错等。
3. 服务治理:Dubbo提供了服务注册与发现、负载均衡、容错机制等功能,方便管理大规模分布式系统中的服务。
4. 配置化:Dubbo支持通过配置文件来定义服务的各项属性,使得服务的部署和配置更加便捷。
5. 应用监控:Dubbo内置了应用监控的功能,可以对服务进行性能统计和监控。

是不是说的有些抽象,那我们来说的通俗易懂点吧,这次你一定能听懂

简单举例

        当我们在一个分布式系统中有多个计算机(或服务器)需要相互通信和协作时,RPC框架就像是一种通信的规则和工具。它定义了计算机之间如何传输数据、发送请求和接收响应等规范。

        就好比你在一个公司的办公楼内,你需要向另一个同事借一本书。如果没有RPC框架,你可能需要自己走到对方的办公室,亲自向他表达你的请求,并等待他将书递给你。这样的过程非常繁琐,并且需要逐个解决每个人之间的通信问题。

        而使用RPC框架,就像是在办公楼里安装了一个内部电话系统。你只需要拿起电话,拨打同事的座机号码并简单地告诉他你需要借书,然后他可以将书快速送到你的办公桌上。这样,整个借书的过程非常迅速而且便捷。

        那么,Dubbo就是这样一种内部电话系统的框架。它在RPC的基础上提供了更多的功能,比如可以帮助你找到某位同事的座机号码(服务注册与发现),确保电话的稳定连接(负载均衡),以及在对方不在办公室时能够找到备用的人(容错机制)等。

实际例子

        在现实世界中,我们可以将分布式的电商系统作为一个例子。这个系统包括了用户界面、商品服务、订单服务和支付服务等模块,它们分布在不同的服务器上。当用户在网页上点击购买按钮时,需要将购买请求发送到后台的商品服务,生成订单并进行支付。这个过程就需要使用RPC框架来进行不同模块之间的远程调用,以实现数据的传输和协调工作。(精髓就在于将没有部署到一台机器上的模块,能够通过网络实现互相之间的调用)

        而Dubbo作为一个RPC框架,可以帮助这些不同的模块之间建立稳定的通信管道,实现商品服务和订单服务之间的远程调用。同时,Dubbo还提供了负载均衡机制来确保请求被均匀分配到多个服务器上,容错机制可以在某些服务器宕机时自动切换到备用服务器。

        通过使用Dubbo这样的框架,开发人员可以更加专注于业务逻辑的实现,而无需过多关注底层的通信细节和管理问题,从而提高了开发效率和系统的稳定性。

真实场景demo(说了这么多,实际体会一下代码吧)

首先有这样的一个项目结构

 我们现在的consumer项目,想要去调用provider项目中某一个接口的服务

 而consumer内部就需要发送一个http请求去获取这个provider项目中锁提供的服务,也就是先请求打到provider项目中的controller里再去调用它的service

 在我们没有用其他工具的时候,我们就需要自己去构建一个httpConnect的工具,再去发送这样一个http的请求(http://localhost:8080/ provider/ service

这样做的缺点就是:

  1. 路径容易写错
  2. 路径修改的时候请求的路径也需要一个一个做出修改
  3. 得到请求之后的结果以后还需要自己去对结果反序列化,才能拿到对象

此时我们采用Dubbo的话,就会简便很多

 我们只需要加上Dubbo所提供的Reference的这样一个注解,就可以将其他模块的服务自动注入

和直接用http去请求的区别就是——它不会经过controller这一层,直接调用的就是service接口所提供的方法

 然后就相当于直接的调用了模块中的方法,而且不需要自己实现反序列化这个流程

只需要关系你调用的是哪个服务中的哪个方法

大概原理就是这样!!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RPC(Remote Procedure Call)是一种用于分布式系统间通信的机制。它允许一个系统中的应用程序调用另一个系统中的远程服务,就像调用本地服务一样。RPC的核心思想是将不同系统间的网络通信、数据传输和序列化等复杂细节进行封装,使开发者可以像调用本地函数一样方便地调用远程函数。 Dubbo是一种基于RPC机制的分布式服务框架。它由阿里巴巴集团开发,用于解决大规模分布式系统中的服务治理问题。Dubbo提供了服务注册与发现、负载均衡、容错处理、服务路由等功能,使得分布式系统的开发和管理更加简单高效。Dubbo框架支持多种远程通信协议,如HTTP、TCP等,可根据实际场景选择适合的协议。 Dubbo的架构由三层组成:服务提供者、注册中心和服务消费者。服务提供者将自己提供的服务注册到注册中心,服务消费者从注册中心获取服务的地址列表,并通过远程调用的方式调用服务提供者提供的功能。Dubbo框架还支持服务的负载均衡,使得调用请求可以在多个服务提供者之间进行分发,提高系统的并发能力和稳定性。 总之,RPC机制和Dubbo框架都是用于构建分布式系统的重要工具。RPC机制提供了远程调用的能力,使得分布式系统中的不同应用程序可以互相调用;而Dubbo框架RPC机制的基础上实现了更加便捷的服务治理功能,简化了分布式系统的开发和管理过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值