秒懂Dubbo接口,dubbo原理

说一下Dubbo的工作原理?注册中心挂了可以继续通信吗?

秒懂Dubbo接口,dubbo原理


【秒懂Dubbo接口,dubbo原理】答案是肯定可以的 , 我将从下面几点进行说明:1.dubbo 的调用流程2.Dubbo整体设计3.从源码上说明注册中心挂了还是可以继续通信的Dubbo 调用流程架构图流程说明:1.Provider(提供者)绑定指定端口并启动服务2.提供者连接注册中心 , 并发本机IP、端口、应用信息和提供服务信息发送至注册中心存储3.Consumer(消费者) , 连接注册中心  , 并发送应用信息、所求服务信息至注册中心4.注册中心根据 消费 者所求服务信息匹配对应的提供者列表发送至Consumer 应用缓存 。
5.Consumer 在发起远程调用时基于缓存的消费者列表择其一发起调用 。6.Provider 状态变更会实时通知注册中心、在由注册中心实时推送至Consumer这么设计的意义:Consumer 与Provider 解偶 , 双方都可以横向增减节点数 。注册中心对本身可做对等集群 , 可动态增减节点 , 并且任意一台宕掉后 , 将自动切换到另一台去中心化 , 双方不直接依懒注册中心 , 即使注册中心全部宕机短时间内也不会影响服务的调用服务提供者无状态 , 任意一台宕掉后 , 不影响使用Dubbo 整体设计config** 配置层**:对外配置接口 , 以 ServiceConfig, ReferenceConfig 为中心 , 可以直接初始化配置类 , 也可以通过 spring 解析配置生成配置类proxy 服务代理层:服务接口透明代理 , 生成动态代理 扩展接口为 ProxyFactoryregistry 注册中心层:封装服务地址的注册与发现 , 以服务 URL 为中心 , 扩展接口为 RegistryFactory, Registry, RegistryServicecluster 路由层:封装多个提供者的路由及负载均衡 , 并桥接注册中心 , 以 Invoker 为中心 , 扩展接口为 Cluster, Directory, Router, LoadBalancemonitor 监控层:RPC 调用次数和调用时间监控 , 以 Statistics 为中心 , 扩展接口为 MonitorFactory, Monitor, MonitorServiceprotocol 远程调用层:封装 RPC 调用 , 以 Invocation, Result 为中心 , 扩展接口为 Protocol, Invoker, Exporterexchange 信息交换层:封装请求响应模式 , 同步转异步 , 以 Request, Response 为中心 , 扩展接口为 Exchanger, ExchangeChannel, ExchangeClient, ExchangeServertransport 网络传输层:抽象 mina 和 netty 为统一接口 , 以 Message 为中心 , 扩展接口为 Channel, Transporter, Client, Server, Codecserialize 数据序列化层:可复用的一些工具 , 扩展接口为 Serialization, ObjectInput, ObjectOutput, ThreadPool其协作流程如下: 从源码上说明注册中心挂了还是可以继续通信的首先要把消费者注册到Zookeeper注册中心然后使用RegistryDirectory 监听一下几个目录(会自动触发一次去获取这些目录上的当前数据)当前所引入的服务的动态配置目录:/dubbo/config/dubbo/org.apache.dubbo.demo.DemoService:1.1.1:g1.configurators当前所引入的服务的提供者目录:/dubbo/org.apache.dubbo.demo.DemoService/providers当前所引入的服务的老版本动态配置目录:/dubbo/org.apache.dubbo.demo.DemoService/configurators当前所引入的服务的老版本路由器目录:/dubbo/org.apache.dubbo.demo.DemoService/routers比如监控providers 目录:当有服务提供者注册 , zookeeper会自动推动给订阅的消费者 , 然后转换为invoker存储到缓存中我们在看调用时的代码:我们看到 FailoverClusterInvoker 的doInvoke方法Invoker

推荐阅读