(最高版本)dubbo

175 阅读3分钟

dubbo的主要特性:

1、软负载均衡与容错

2、依赖分析与服务降级

3、限流,降级服务

限流:限制连接的线程数

服务降级:当请求过多时,不对请求进行处理,而是返回预设定的值

容错:在调用某个服务失败后,的后续动作

dubbo 的核心组件:1、提供者(暴露服务);2、消费者(调用服务);3、服务发现与注册(注册中心);4、监控者(监控服务的调用情况)

dubbo暴露服务的过程

Dubbo使用之容错机制: Failover Cluster(缺省):失败自动切换,当出现失败,重试其它服务器。通常用于读操作,但重试会带来更长延迟。可通过 retries="2" 来设置重试次数(不含第一次,缺省为2次)。<dubbo:service retries="2" />

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

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

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

Forking Cluster

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

Broadcast Cluster

广播调用所有提供者,逐个调用,任意一台报错则报错。通常用于通知所有提供者更新缓存或日志等本地资源信息。

一般查询操作会使用Failover,事务请求会使用Failfast。

Dubbo服务限流

executes直接限流– 仅提供者端

解释为什么在小数据量传输比较适合

dubbo是实现接口,消费者去调用接口

dubb在springbbot中的使用:引入dubbobao 对于提供者,配置端口、配置注册到zookeeper的地址、 实现类上,要增加@Service注解 主程序@Enabledubbo

客户端 配置yml 调用方法上,增加@reference 主程序增加@Enabledubbo
明确指定那个方法超时

负载均衡是在消费者端用的 本地注册存的是本地有哪些接口的方法 实现注册中心的功能,要求工具可以实现发布订阅,知道消费端和提供者端是否可用

幂等问题:对于非幂等的操作,如新增,让dubbo失败后,不重试

dubbo的层级结构 说明:dubbo作为服务端,开启以后,建议将客户端和服务端都注册到注册中心,dubbo通过获取注册中心的信息,在客户端,通过代理,去访问生产者,在生产者集群的条件下,dubbo也提供了负载均衡的能力

hessian序列化协议:将数据转换成可以在网络中传输的技术 dubbo支持多种协议传输: 但是主要还是dubbo协议的使用

2、面试官心里分析

继续深问吧,这些都是用dubbo必须知道的一些东西,你得知道基本原理,知道序列化是什么协议,还得知道具体用dubbo的时候,如何负载均衡,如何高可用,如何动态代理。

说白了,就是看你对dubbo熟悉不熟悉:

(1)dubbo工作原理:服务注册,注册中心,消费者,代理通信,负载均衡 (2)网络通信、序列化:dubbo协议,长连接,NIO,hessian序列化协议 (3)负载均衡策略,集群容错策略,动态代理策略:dubbo跑起来的时候一些功能是如何运转的,怎么做负载均衡?怎么做集群容错?怎么生成动态代理? (4)dubbo SPI机制:你了解不了解dubbo的SPI机制?如何基于SPI机制对dubbo进行扩展?

spi:思想,dubbo提供了一个接口,自己可以去实现这个接口

幂等性问题的解决方案: