zoukankan      html  css  js  c++  java
  • Dubbo模块介绍

    一、Dubbo 整体框架

     

      Dubbo主要有:Config 配置层、Proxy服务代理层、Registry注册中心层、Cluster 路由层、Monitor监控层、Protocol远程调用层、Exchange信息交换层、Transport 网络传输层、Serialize数据序列化层几个模块构成。

    二、Dubbo 的各个角色

      

     

       如上图所示,一个抽象出来的基本框架,consumer和provider是框架中必然存在的,Registry做为全局配置信息管理模块,推荐生产环境使用Registry,可实时推送现存活的服务提供者,Monitor一般用于监控和统计RPC调用情况、成功率、失败率等情况,让开发及运维了解线上运行情况。

    应用执行过程大致如下:
      服务提供者启动,根据协议信息绑定到配置的IP和端口上,如果已有服务绑定过相同IP和端口的则跳过
      注册服务信息至注册中心
      客户端启动,根据接口和协议信息订阅注册中心中注册的服务,注册中心将存活的服务地址通知到客户端,当有服务信息变更时客户端可以通过定时通知得到变更信息
      在客户端需要调用服务时,从内存中拿到上次通知的所有存活服务地址,根据路由信息和负载均衡机制选择最终调用的服务地址,发起调用
      通过filter分别在客户端发送请求前和服务端接收请求后,通过异步记录一些需要的信息传递到monitor做监控或者统计 

    三、模块介绍
    3.1 dubbo-config 配置层
    作用:
      负责所有dubbo相关的xml配置和注释配置转换为config对象 ( dubbo.xsd )
      Api配置的对象类,用于生成对应的register,protocol等对象
    核心类:
      ServiceBean、ReferenceBean (对应<dubbo:service /> <dubbo:reference/>)
      ProtocolConfig、RegisterConfig (<dubbo:protocol /> <dubbo:register />)

    3.2 dubbo-rpc Proxy 服务代理层
    作用:
      负责生成消费者的代理对象,以及服务提供方的Invoke
    核心类:
      ProxyFactory接口的2种实现 JdkProxyFactory JavassistProxyFactory

    3.3 dubbo-registry Registry注册中心层
    作用:
      负责服务注册与查询服务,以及注册服务的本地缓存
      支持多种协议注册发现服务,例如redis、zookeeper、Multicast
    核心类:
      接口 RegistryFactory、Registry
      AbstractRegistry 以及 ZookeeperRegistry、ZookeeperRegistryFactory

    3.4 dubbo-cluster Cluster 路由层
    作用:
      负责负载均衡的策略,以及失败策略
      缺省设置:RandomLoadBalance,FailoverCluster
      支持轮询、随机、一致性哈希等负载均衡策略
    核心类:
      接口 LoadBalance、Cluster
      RandomLoadBalance以及 RoundRobinLoadBalance等

    3.5 dubbo-monitor Monitor监控层
    作用:
      RPC调用次数和调用时间监控
      dubbo-simple 下面的dubbo-monitor-simple提供了简单的控制台
    核心类:
      核心类DubboMonitor、Statistics

    3.6 dubbo-rpc Protocol远程调用层
    作用:
      封将RPC调用、支持多种RPC协议,不包含IO通信部分
      支持RMI 、Hessian、Http、Webservice、thrift等rpc调用方式
    核心类:
      接口 Protocol Exporter Invoker
      DubboProtocol、DubboInvoker、DubboExporter、DubboCodec

    3.7 dubbo-remoting Exchange信息交换层
    作用:
      封装请求响应模式,同步转异步
      处理各种协议的通信请求,支持netty、mina、http等
      默认采用Netty进行通信
    核心类:
      接口 Server、Channel、Client
      NettyClient、NettyServer

    3.8 dubbo-common Serialize数据序列化层
    作用:
      数据序列化层和可复用的一些工具,包括序列化线程池等
      dubbo协议缺省为hessian2,rmi协议缺省为java,http协议缺省为json
    核心类:
      接口 ThreadPool、Serialization
      FixedThreadPool、 Hessian2Serialization

    四、Dubbo使用方式:

    4.1 Main函数的生产者和消费者
      适用于纯后台服务集群
      全部采用长连接
      启动方式:com.alibaba.dubbo.container.Main
      默认加载 META-INF/spring/*.xml

    4.2 Java与Tomcat 生产者消费者
      适用于大型web应用拆分服务
      后台Main方法提供服务与tomcat Web应用消费者结合
      用web.xml解析所有xml,加载dubbo

    4.3 Xml 配置与代码配置
    生产者 :
      Xml : <dubbo:register/> Api: RegisterConfig
      Xml : <dubbo:application/> Api: ApplicationConfig
      Xml : <dubbo:protocol/> Api: ProtocolConfig
      Xml : <dubbo:service/> Api: ServiceConfig
    消费者 :
      Xml : <dubbo:register/> Api: RegisterConfig
      Xml : <dubbo:application/> Api: ApplicationConfig
      Xml : <dubbo:reference/> Api: ReferenceConfig

     

  • 相关阅读:
    Android 3.0 r1 API中文文档(108) —— ExpandableListAdapter
    Android 3.0 r1 API中文文档(113) ——SlidingDrawer
    Android 3.0 r1 API中文文档(105) —— ViewParent
    Android 中文 API (102)—— CursorAdapter
    Android开发者指南(4) —— Application Fundamentals
    Android开发者指南(1) —— Android Debug Bridge(adb)
    Android中文API(115)——AudioFormat
    Android中文API(116)——TableLayout
    Android开发者指南(3) —— Other Tools
    Android中文API (110) —— CursorTreeAdapter
  • 原文地址:https://www.cnblogs.com/shawWey/p/6776456.html
Copyright © 2011-2022 走看看