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 运行页面

        

         

  • 相关阅读:
    iOS开发——判断是否第一次启动
    iOS开发——关于开发者账号引发的血案
    The identity used to sign the executable is no longer valid.
    iOS开发 missing iOS distribution signing identity for 。。。
    iOS开发实现Label中多颜色多字体
    10.8.5如何升级(app store 出错 请稍后重试 100)
    XCode 7上传遇到ERROR ITMS-90535 Unexpected CFBundleExecutable Key. 的解决办法
    mysql索引的类型和优缺点
    .htaccess Rewrite apache重写和配置
    mysql xtrabackup 备份恢复实现,mysql命令备份数据库,打包压缩数据库
  • 原文地址:https://www.cnblogs.com/Zzzzn/p/12012240.html
Copyright © 2011-2022 走看看