• Dubbo 的应用


     ---  用于大规模服务化,通过在消费方获取服务提供方的地址列表,实现负载均衡,减轻服务器压力。

    最简单调用图 

    节点角色说明:

    l  Provider: 暴露服务的服务提供方。

    l  Consumer: 调用远程服务的服务消费方。

    l  Registry: 服务注册与发现的注册中心。

    l  Monitor: 统计服务的调用次调和调用时间的监控中心。

    l  Container: 服务运行容器。

    调用关系说明:

    l  0. 服务容器负责启动,加载,运行服务提供者。

    l  1. 服务提供者在启动时,向注册中心注册自己提供的服务。

    l  2. 服务消费者在启动时,向注册中心订阅自己所需的服务。

    l  3. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。

    l  4. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。

    l  5. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

    简单用法

    需与spring集成(也可以调用api,但官方不推荐,且代码臃肿)。

    Java代码跟正常功能一样,只需要一个接口和一个实现类,像正常spring一样配置。

    需要详细说明的是xml配置:

    提供者(服务端):

     1 <?xml version="1.0" encoding="UTF-8"?>
     2   <beans xmlns="http://www.springframework.org/schema/beans"
     3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4     xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
     5     xsi:schemaLocation="http://www.springframework.org/schema/beans  
     6             http://www.springframework.org/schema/beans/spring-beans.xsd  
     7             http://code.alibabatech.com/schema/dubbo  
     8             http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
     9             
    10     <!-- 提供方应用信息,用于计算依赖关系 -->
    11     <dubbo:application name="ushop-service-mall" />
    12 
    13     <!-- 使用zookeeper注册中心暴露服务地址 -->
    14     <dubbo:registry protocol="zookeeper" address="XXXX(zookeeper服务IP)" />
    15     
    16     <!-- 监控中心配置,protocol="registry",表示从注册中心发现监控中心地址 -->
    17     <dubbo:monitor protocol="registry"/>
    18     
    19     <!-- 当ProtocolConfig和ServiceConfig某属性没有配置时,采用此缺省值 -->
    20     <dubbo:provider timeout="60000" threadpool="fixed"/>
    21     <dubbo:protocol threads="200" name="dubbo" port="20880"/>
    22     
    <!-- 需要提供的服务 --> 23 <dubbo:service executes="200" retries="0" interface="com.XXX.facade.XXXFacade" ref="xXXFacade" />

    24 25 26 </beans>

    消费者(调用客户端):

    <?xml version="1.0" encoding="UTF-8"?>
      <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
        xsi:schemaLocation="http://www.springframework.org/schema/beans  
                http://www.springframework.org/schema/beans/spring-beans.xsd  
                http://code.alibabatech.com/schema/dubbo  
                http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
                
        <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
        <dubbo:application name="ProjectName" />
    
        <!-- 使用zookeeper注册中心暴露服务地址 -->
        <!-- 多注册中心配置,竖号分隔表示同时连接多个不同注册中心,同一注册中心的多个集群地址用逗号分隔 -->
        <!-- 注册中心地址 -->
        <dubbo:registry protocol="zookeeper" address="XXXX(zookeeper服务IP)" />
        
        <!-- 监控中心配置,protocol="registry",表示从注册中心发现监控中心地址 -->
        <dubbo:monitor protocol="registry"/>
    <!-- 需要调用的服务 -->

    <dubbo:reference interface="com.XXX.facade.XXXFacade" id="xXXFacade" check="false" />

    </beans>

    代码简单解释(配置项暂不说明):

    l  在服务端只需用

    <dubbo:service executes="200" retries="0"  interface="com.XXX.facade.XXXFacade" ref="xXXFacade" />

    这段配置来暴露服务的接口,ref的值是spring配置的bean。

    l  在客户端

    <dubbo:reference interface="com.XXX.facade.XXXFacade" id="xXXFacade" check="false" />
    来声明一个spring的bean,然后可以在需要的地方获取这个bean,接着直接调用该接口的所有方法。
     
  • 相关阅读:
    【数据结构】算法 Tree Sub Structure 树的子结构
    【数据结构】算法 Binary Search Tree find Kth largest Node 二叉搜索树的第k大节点
    【数据结构】算法 Count Complete Tree Nodes 完全二叉树的节点个数
    【数据结构】算法 合并K个有序链表Merge k Sorted Lists
    JVisualVM 插件安装中出现网络问题
    [ISSUE] Logback TimeBasedRollingPolicy not rolling every day.
    【数据结构】算法 计算数组中的逆序对
    JQ为元素添加class
    时间戳转换成日期
    JS拖拽
  • 原文地址:https://www.cnblogs.com/kangds/p/6839666.html
Copyright © 2020-2023  润新知