美文网首页
Dubbo-面试

Dubbo-面试

作者: 天凉好个秋灬 | 来源:发表于2020-04-04 12:25 被阅读0次

工作原理

  1. service 层:provider 和 consumer,留给自己实现的接口
  2. config 层:配置文件
  3. proxy 层:代理层,provider 和 comsumer dubbo 都会给生成代理,通过代理进行网络通信
  4. registry 层:负责服务注册与发现
  5. cluster 层:集群层,多个provider实例的路由、负载均衡等封装成一个服务
  6. monitor 层:监控层
  7. protocol 层: 远程调用层,封装RPC调用,负责具体的 provider 和 consumer 之间的网络通信
  8. exchange 层:信息交换层
  9. transport 层:网络传输层,抽象 mina 和 netty 为统一接口
  10. serialize 层:序列化

工作流程

通信协议

  1. dubbo 协议:

    • 单一长连接,NIO异步通信,基于 Hessian 序列化
    • 适用场景:传输数据量小(每次请求100KB以内),但是并发量很高
  1. rmi 协议

    • java 二进制序列化,多个短链接
    • 适用场景:消费者和提供者数量差不多,文件传输,较少用
  2. hessian 协议

    • hessian 序列化协议,多个短链接
    • 适用场景:提供者比消费者数量还多,文件传输,较少用
  3. http 协议

    • json 序列化
  4. webservice

    • SOAP 文本序列化

序列化协议

hessian、JAVA二进制序列化、json、SOAP文本序列化多种序列化协议,默认hessian

负载均衡策略

  1. random loadbalance:默认,随机,按权重随机分配,权重越大,流量越大
  2. roundrobin loadbalance:轮询,默认情况下会均匀的将流量打到各个机器上去,可以调整权重
  3. leastactive loadbalance:自动感知,性能越差、越不活跃的接收的请求越少
  4. consistanthash loadbalance:一致性HASH算法,相同参数的请求一定分发到一个 provider 上去,provider 挂掉时,均匀分配剩余的流量,如果是一个类请求都到一个节点,就走一致性HASH策略

容错策略

  1. failover cluster:默认,失败自动切换重试其他节点
  2. failfast cluster:立即失败
  3. failsafe cluster:出现异常时忽略掉,常用于不重要的接口,比如记录日志
  4. failbackc cluster:失败了后台自动记录请求,然后定时重发,比较适合于写消息队列
  5. forking cluster:并行调用多个 provider,有一个成功就立即返回
  6. broadcacst cluster:逐个调用所有 provider

动态代理策略

默认使用 javassist 动态字节码生成,创建代理类

但是可以通过 spi 扩展机制配置自己的动态搭理策略

SPI 机制

service provider interface,指定接口的实现类,这是 JAVA 提供的一个功能

dubbo 自己实现了一套 spi 机制,微内核,可插拔,大量的组件

Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();

可以实现自己的组件,然后配置对应的KEY

服务管理

  1. 调用链路自动生成
  2. 服务访问压力以及时长统计
  3. 其他的
    • 服务分层(避免循环依赖)
    • 调用链路失败监控和报警
    • 服务鉴权
    • 每个服务可用性监控(接口调用成功率)

服务降级

失败重试和超时重试

相关文章

  • Dubbo-面试

    工作原理 service 层:provider 和 consumer,留给自己实现的接口 config 层:配置文...

  • Dubbo-初识

    话说,第一见dubbo是一年前公司第三代技术选型会上。公司架构师在会上对dubbo和spring cloud做了一...

  • dubbo-架构

    http://shiyanjun.cn/archives/325.html

  • Dubbo-概述

    一、总体架构 Container:服务运行容器,为服务的稳定运行提供运行环境。 Provider:提供方,暴露接口...

  • 代码bug、环境bug,如何辨别?微服务架构Failed to

    Jenkins部署服务后,前端报错: 确认是否环境bug登录:dubbo-服务治理--服务名查询:服务是否正常,服...

  • Dubbo + Hystrix 实现服务熔断

    学习完整课程请移步 互联网 Java 全栈工程师 本节视频 【视频】Dubbo 实现微服务架构-Dubbo-使用 ...

  • Dubbo + Hystrix 熔断器仪表盘

    学习完整课程请移步 互联网 Java 全栈工程师 本节视频 【视频】Dubbo 实现微服务架构-Dubbo-使用 ...

  • 第一个 Dubbo 应用程序

    学习完整课程请移步 互联网 Java 全栈工程师 本节视频 【视频】Dubbo 实现微服务架构-Dubbo-服务提...

  • dubbo-环境搭建

    fork并clone 安装并配置zookeeper 启动Provider配置启动 启动Consumer配置启动 架...

  • dubbo-架构分析

    节点角色说明 Provider,暴露服务的提供方 Container,服务运行容器 Consumer,调用远程服务...

网友评论

      本文标题:Dubbo-面试

      本文链接:https://www.haomeiwen.com/subject/whlrphtx.html