前言

Github:https://github.com/HealerJean

博客:http://blog.healerjean.com

1、dubbo支持什么协议,为什么

dubbo://(推荐)

rmi://

hessian://

http://

webservice://

thrift://

memcached://

redis://

rest://

Dubbo支持dubbo、rmi、hessian、http、webservice、thrift、redis等多种协议,但是dubbo协议是官网推荐使用的,dubbo 缺省协议是dubbo协议,采用单一长连接和 NIO 异步通讯适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况。反之,Dubbo 缺省协议不适合传送大数据量的服务,比如传文件,传视频等,除非请求量很低。

2、Dubbo 核心的配置有哪些

image-20201111185926110

3、Dubbo 服务暴露的过程

Dubbo 会在 Spring 实例化完 bean 之后,在刷新容器最后一步发布 ContextRefreshEvent 事件的时候,通知实现了 ApplicationListener 的 ServiceBean 类进行回调 onApplicationEvent 事件方法,Dubbo 会在这个方法中调用 ServiceBean 父类 ServiceConfig 的 export 方法,而该方法真正实现了服务的(异步或者非异步)发布。

4、Dubbo有哪几种集群容错方案

Failover Cluster,失败自动切换,当出现失败,重试其它服务器。通常用于读操作,但重试会带来更长延迟。

Failfast Cluster,快速失败,只发起一次调用,失败立即报错。通常用于非幂等性的写操作,比如新增记录。

Failsafe Cluster,失败安全,出现异常时,直接忽略。通常用于写入日志等。

Failback Cluster,失败自动恢复,后台记录失败请求,定时重发。通常用于消息通知等。

Forking Cluster,并行调用多个服务器,只要一个成功即返回。通常用于实时性要求较高的读操作,但需要浪费更多服务资源。可通过 forks 来设置最大并行数。

Broadcast Cluster,广播调用所有提供者,逐个调用,任意一台报错则报错。通常用于通知所有提供者更新缓存本地资源信息。 默认 Failover Cluster

5、Dubbo默认使用的是什么通信框架

Dubbo 默认使用 Netty 框架

6、Dubbo推荐使用什么序列化框架

推荐使用Hessian序列化,还有Duddo、FastJson、Java自带序列化。

7、什么是RPC

RPC(Remote Procedure Call Protocol)远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。简言之,RPC使得程序能够像访问本地系统资源一样,去访问远端系统资源。比较关键的一些方面包括:通讯协议、序列化、资源(接口)描述、服务框架、性能、语言支持等。

RPC就是从一台机器(客户端)上通过参数传递的方式调用另一台机器(服务器)上的一个函数或方法(可以统称为服务)并得到返回的结果。

8、Dubbo里面有哪几种节点角色

  1. dubbo是一个分布式开发框架
  2. Provider: 暴露服务的服务提供方。
  3. Consumer: 调用远程服务的服务消费方。
  4. Registry: 服务注册与发现的注册中心。
  5. Monitor: 统计服务的调用次调和调用时间的监控中心。
  6. Container: 服务运行容器。

9、服务注册与发现的流程图

image-20201111191419465

流程说明:

1.Provider(提供者)绑定指定端口并启动服务

2.指供者连接注册中心,并发本机IP、端口、应用信息和提供服务信息发送至注册中心存储

3.Consumer(消费者),连接注册中心 ,并发送应用信息、所求服务信息至注册中心

4.注册中心根据 消费 者所求服务信息匹配对应的提供者列表发送至Consumer 应用缓存。

5.Consumer 在发起远程调用时基于缓存的消费者列表择其一发起调用。

6.Provider 状态变更会实时通知注册中心、在由注册中心实时推送至Consumer

设计的原因:

1.Consumer 与Provider 解偶,双方都可以横向增减节点数。

2.注册中心对本身可做对等集群,可动态增减节点,并且任意一台宕掉后,将自动切换到另一台

3.去中心化,双方不直接依懒注册中心,即使注册中心全部宕机短时间内也不会影响服务的调用

4.服务提供者无状态,任意一台宕掉后,不影响使用 ———————————————

ContactAuthor