zoukankan      html  css  js  c++  java
  • Dubbox

    Dubbox是什么

      Dubbox是一个分布式服务框架,前身是阿里巴巴的开源项目Dubbo,后来阿里不再维护此框架;进而当当网进行了进一步维护,为了和Dubbo区分就取名为Dubbox。

      简单而言,在Dubbox中主要存在三种角色:注册中心(Registry)、 提供者(Provider)、消费者(Customer)。

    而作为分布式框架之一的Dubbox就能够实现消费方和提供方之间的远程调用,即对分别部署在不同服务器端的服务提供了一个相互交互的平台。

          

      节点角色说明:   

            Provider: 暴露服务的提供方

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

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

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

          Container: 服务运行容器

      调用关系说明: 

              服务容器负责启动、加载,运行服务提供者

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

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

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

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

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

    一、部署环境

      1、下载源码:

        网址:https://github.com/dangdangdotcom/dubbox/tree/dubbox-2.8.4

        然后解压;

      2、在源码路径下运行: mvn clean install -Dmaven.test.skip=true

        如: cmd进入D:softdubbox-master 然后执行 mvn clean install -Dmaven.test.skip=true

        

         

      3、运行  mvn install:install-file -Dfile=E:accpY2Dubbodubbox-dubbox-2.8.4dubbo argetdubbo-2.8.4.jar -DgroupId=com.alibaba -DartifactId=dubbo -Dversion=2.8.4 -Dpackaging=jar -DgeneratePom=true

           

         

     二、导入依赖  

    <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.11</version>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>com.alibaba</groupId>
          <artifactId>dubbo</artifactId>
          <version>2.8.4</version>
        </dependency>
        <!-- 添加zk客户端依赖 -->
        <dependency>
          <groupId>com.github.sgroschupf</groupId>
          <artifactId>zkclient</artifactId>
          <version>0.1</version>
        </dependency>
        <dependency>
          <groupId>org.jboss.resteasy</groupId>
          <artifactId>resteasy-jaxrs</artifactId>
          <version>3.0.7.Final</version>
        </dependency>
        <dependency>
          <groupId>org.jboss.resteasy</groupId>
          <artifactId>resteasy-client</artifactId>
          <version>3.0.7.Final</version>
        </dependency>
        <dependency>
          <groupId>javax.validation</groupId>
          <artifactId>validation-api</artifactId>
          <version>1.0.0.GA</version>
        </dependency>
    
        <!-- 如果要使用json序列化 -->
        <dependency>
          <groupId>org.jboss.resteasy</groupId>
          <artifactId>resteasy-jackson-provider</artifactId>
          <version>3.0.7.Final</version>
        </dependency>
    
        <!-- 如果要使用xml序列化 -->
        <dependency>
          <groupId>org.jboss.resteasy</groupId>
          <artifactId>resteasy-jaxb-provider</artifactId>
          <version>3.0.7.Final</version>
        </dependency>
    
        <!-- 如果要使用netty server -->
        <dependency>
          <groupId>org.jboss.resteasy</groupId>
          <artifactId>resteasy-netty</artifactId>
          <version>3.0.7.Final</version>
        </dependency>
    
        <!-- 如果要使用Sun HTTP server -->
        <dependency>
          <groupId>org.jboss.resteasy</groupId>
          <artifactId>resteasy-jdk-http</artifactId>
          <version>3.0.7.Final</version>
        </dependency>
    
        <!-- 如果要使用tomcat server -->
        <dependency>
          <groupId>org.apache.tomcat.embed</groupId>
          <artifactId>tomcat-embed-core</artifactId>
          <version>8.0.11</version>
        </dependency>
        <dependency>
          <groupId>org.apache.tomcat.embed</groupId>
          <artifactId>tomcat-embed-logging-juli</artifactId>
          <version>8.0.11</version>
        </dependency>
        <dependency>
          <groupId>com.esotericsoftware.kryo</groupId>
          <artifactId>kryo</artifactId>
          <version>2.24.0</version>
        </dependency>
        <dependency>
          <groupId>de.javakaffee</groupId>
          <artifactId>kryo-serializers</artifactId>
          <version>0.26</version>
        </dependency>
        <dependency>
          <groupId>de.ruedigermoeller</groupId>
          <artifactId>fst</artifactId>
          <version>1.55</version>
        </dependency>
        <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-core</artifactId>
          <version>2.3.3</version>
        </dependency>
        <dependency>
          <groupId>org.mortbay.jetty</groupId>
          <artifactId>jetty</artifactId>
          <version>7.0.0.pre5</version>
        </dependency>
        <dependency>
          <groupId>com.dubbo</groupId>
          <artifactId>dubbox_service</artifactId>
          <version>1.0-SNAPSHOT</version>
          <scope>compile</scope>
        </dependency>
      </dependencies>
    View Code

     三、dubbox_service (公用service)

      3.1 目录展示

          

      3.2 DoSomeService

         

     四、dubbox_provider (生产者)

      4.1 目录展示

         

       4.2 DoSomeServiceImpl

         

       4.3 配置文件 applicationContext-provider.xml

        

       4.4 AppTest测试类

        

     五、dubbox_consumer (消费者)

      5.1 目录展示

        

      5.2 DoSomeService

        

      5.3 配置文件 applicationContext-consumer.xml

        

      5.4 AppTest 测试类

        

     六、运行

      6.1 运行 dubbox_provider 的AppTest

         

       6.2 运行 dubbox_consumer 的AppTest

        

       6.3 运行页面

        

         

  • 相关阅读:
    C#--跨线程更新UI--实时显示POST请求传过来的数据
    C#--序列化--JSON和对象互转方法
    C#--winform--Label标签的文字居中
    C#--自定义控件-panel控件(渐变色,文字的绘制)
    C#--自定义控件-开发LED指示灯控件(带闪烁效果)
    艾而特--ModbusTcp通讯测试
    C#--各种方法总结(静态,构造,析构,虚方法,重写方法,抽象,扩展)
    C#--特性的运用试验
    C#--特性基础
    C#--无法将lambda表达式转换为类型‘Delegate’,原因是它不是委托类型
  • 原文地址:https://www.cnblogs.com/Zzzzn/p/12012240.html
Copyright © 2011-2022 走看看