dubbo相关知识点

  1. Dubbo是什么?能做什么?
    Dubbo是阿里巴巴开源的基于Java的高性能RPC分布式服务框架,现已成为Apache基金会孵化项目。致力于提供高性能和透明化的RPC远程服务调用解决方案,以及SOA服务治理方案。
    简单的说,dubbo就是一个服务框架,只有在分布式的时候才用,本质上是一个远程调用的分布式框架。
    其核心部分包含:

    • 远程通讯:提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式,透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需要简单的配置,没有任何api的侵入。
    • 集群容错:提供基于接口方法的透明远程过程调用,包括多种协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持,可以内网替代F5等硬件负载均衡器,降低成本,减少单点。
    • 自动发现:基于注册中心目录服务,服务注册于发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。
  2. dubbo的工作流程
    在这里插入图片描述

    • Start:启动spring容器时,自动启动dubbo的Provider
    • Registry:dubbo的Provider在启动后会去注册中心注册内容,注册的内容包括IP、端口、接口列表(接口类、方法)、版本、Provider的协议。
    • Subscribe:订阅,当Consumer启动时,自动去Registry获取到已注册的服务的信息。
    • Notify:通知,当Provider的信息发生变化时,自动由Registry向Consumer推送通知。
    • Invoke:Consumer调用Provider中的方法,用的是同步请求,会消耗一定性能,但是必须是同步请求,因为需要接收调用方法后的结果。
    • Count:次数,每隔2分钟,Provider和Consumer自动向Monitor发送访问次数,Monitor进行统计
  3. dubbo支持的注册中心有哪些?
    在这里插入图片描述
    在这里插入图片描述

  4. dubbo的集群容错策略有哪些?
    在这里插入图片描述

  5. dubbo支持的协议有哪些?
    在这里插入图片描述

  6. dubbo和SpringCloud的对比
    在这里插入图片描述
    RPC服务性能为什么比Http服务性能好?
    1.rpc一般是基础tcp/ip协议上开发的二进制协议服务,而http一般是基于http1.0/1.1协议上开发的rest服务
    序列化方式:
    RPC服务序列化是针对二进制协议(0/1)来做序列化和反序列化,所以性能高。
    而Http服务是基于文本的序列化和反序列化,需要读一行一行的文本(比如json格式的),进行序列化和反序列化,所以性能低。
    报文长度:
    RPC服务是自定义的传输协议,传输的报文都是干货。
    而Http服务里面包括很多没用的报文内容,比如Http Header里面的accept,referer等等
    连接的复用:
    RPC服务是基于TCP/IP协议的,是长连接。
    而Http服务大都是短连接,虽然Http1.1支持长连接,但是这个也是要取决于服务端是否支持长连接,不太可控。

  7. 简述dubbo的服务暴露过程

  1. 简述dubbo的服务引入过程
  1. 简述dubbo的服务调用过程
  1. dubbo中ZK集群挂掉,发布者和订阅者还能通信吗?
    在这里插入图片描述
  2. ZK实际如何存储生产者和消费者的信息

12.dubbo的工作原理
初始化过程细节:第一步,就是将服务装载到容器中,然后准备注册服务。和Spring中启动过程类似,Spring启动时,将bean装载进容器中的时候,首先要解析bean。所以dubbo也是先读配置文件解析服务。

解析服务
1)、基于dubbo.jar内的META-INF/spring.handlers配置,spring在遇到dubbo名称空间时,会回调DubboNamespaceHandler类。
2)、所有的dubbo标签都统一用DubboBeanDefinitionParser进行解析,基于一对一属性映射,将XML标签解析为Bean对象,生产者或者消费者初始化的时候,会将Bean对象转换为URL格式,将所有Bean属性转换成URL的参数。然后将URL传给Protocal扩展点,基于扩展点的Adaptive机制,根据URL的协议头,进行不同协议的服务暴露和引用。

暴露服务
1)、直接暴露服务端口:在没有注册中心的情况下,配置ServiceConfig解析出的URL,基于扩展点Adaptive机制,通过URL的协议头识别,直接调用DubboProtocol的export()方法,打开服务端口

2)、向注册中心暴露服务:将服务的IP和端口一同暴露给注册中心。ServiceConfig解析出的url格式,基于扩展点的Adaptive机制,通过URL的协议头识别,调用RegistryProtocol的export()方法,将export参数中的提供者URL先注册到注册中心,再重新传给Protocol扩展点进行暴露。

引用服务
1)、直接引用服务:在没有注册中心的情况下,直连提供者,ReferenceConfig解析出URL格式,基于扩展点的Adaptive机制,通过URL协议头识别,直接调用DubboProtocol的refer方法,返回提供者引用。
2)、从注册中心发现引用服务:ReferenceConfig解析出的URL的格式,基于扩展点的Adaptive机制,通过URL协议头识别,就会调用RegistryProtocol的refer方法,从refer参数总的条件,查询提供者URL,通过提供者URL协议头识别,就会调用DubboProtocol的refer()方法,得到提供者引用。然后RegistryProtocol将多个提供者引用通过Cluster扩展点,伪装成单个提供者引用返回。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值