Dubbo快速使用

本文参考阿里技术官方文章

Dubbo 是一个服务框架 主要用在分布式业务场景中, 主要实现了远程方法调用. 

1.RMI

Java RMI (Remote Method Invocation) 远程方法调用,能够让客户端像使用本地调用一样调用服务端 Java 虚拟机中的对象方法。RMI 是面向对象语言领域对 RPC (Remote Procedure Call)的完善,用户无需依靠 IDL 的帮助来完成分布式调用,而是通过依赖接口这种更简单自然的方式。

 

Java RMI 工作原理

 

一个典型的 RMI 调用如下图所示:

  1. 服务端向 RMI 注册服务绑定自己的地址;

  2. 客户端通过 RMI 注册服务获取目标地址;

  3. 客户端调用本地的 Stub 对象上的方法,和调用本地对象上的方法一致;

  4. 本地存根对象将调用信息打包,通过网络发送到服务端;

  5. 服务端的 Skeleton 对象收到网络请求之后,将调用信息解包;

  6. 然后找到真正的服务对象发起调用,并将返回结果打包通过网络发送回客户端。

 

(来源:https://www.cs.rutgers.edu/~pxk/417/notes/images/rpc-rmi_flow.png)

 

Java RMI 基本概念

 

Java RMI 是 Java 领域创建分布式应用的技术基石。后续的 EJB 技术,以及现代的分布式服务框架,其中的基本理念依旧是 Java RMI 的延续。在 RMI 调用中,有以下几个核心的概念:

  1. 通过接口进行远程调用

  2. 通过客户端的 Stub 对象和服务端的 Skeleton 对象的帮助将远程调用伪装成本地调用

  3. 通过 RMI 注册服务完成服务的注册和发现

对于第一点,客户端需要依赖接口,而服务端需要提供该接口的实现。对于第二点,在 J2SE 1.5 版本之前需要通过 rmic 预先编译好客户端的 Stub 对象和服务端的 Skeleton 对象。在之后的版本中,不再需要事先生成 Stub 和 Skeleton 对象。

 

2.Dubbo 基础

 

现代的分布式服务框架的基本概念与 RMI 是类似的,同样是使用 Java 的 Interface 作为服务契约,通过注册中心来完成服务的注册和发现,远程通讯的细节也是通过代理类来屏蔽。具体来说,Dubbo 在工作时有以下角色参与:

  1. 服务提供者:启动时在指定端口上暴露服务,并将服务地址和端口注册到注册中心上。

  2. 服务消费者:启动时向注册中心订阅自己感兴趣的服务,以便获得服务提供方的地址列表。

  3. 注册中心 :负责服务的注册和发现,负责保存服务提供方上报的地址信息,并向服务消费方推送。

  4. 监控中心:负责收集服务提供方和消费方的运行状态,比如服务调用次数、延迟等,用于监控。

  5. 运行容器:负责服务提供方的初始化、加载以及运行的生命周期管理。

     

部署阶段

  • 服务提供者在指定端口暴露服务,并向注册中心注册服务信息。

  • 服务消费者向注册中心发起服务地址列表的订阅。

运行阶段

  • 注册中心向服务消费者推送地址列表信息。

  • 服务消费者收到地址列表后,从其中选取一个向目标服务发起调用。

  • 调用过程服务消费者和服务提供者的运行状态上报给监控中心。

在生产环境,Dubbo 的服务需要一个分布式的服务注册中心与之配合,比如,ZooKeeper

3.Dubbo能做什么

核心:

1. 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。

2. 集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。

3. 自动发现: 基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。

主要服务:

1.透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。     

2.软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。

3. 服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。

Dubbo采用全spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值