美文网首页
深入学习java笔记-16.SpringBoot2.1之Dubb

深入学习java笔记-16.SpringBoot2.1之Dubb

作者: 笨鸡 | 来源:发表于2019-05-09 18:03 被阅读0次

    1.搭建并开启zookeeper集群

    搭建开启zookeeper集群.png

    2.下载dubbo-admin控制台

    下载地址: https://github.com/apache/incubator-dubbo-admin

    前提安装了node.js
    cd D:\IdeaProjects\incubator-dubbo-admin
    更改application.properties zookeeper 的IP地址
    mvn clean package
    mvn --projects dubbo-admin-server spring-boot:run
    

    访问链接: http://localhost:8080

    dubbo-admin.png

    3.目录结构

    dubbo-service.png

    4.各类文件

    dubbo-service-project pom.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.ctgu</groupId>
        <artifactId>dubbo-service-project</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <modules>
            <module>dubbo-service-api</module>
            <module>dubbo-service-consumer</module>
            <module>dubbo-service-provider-1</module>
            <module>dubbo-service-provider-2</module>
        </modules>
        <packaging>pom</packaging>
    
        <properties>
            <java.version>1.8</java.version>
            <spring-boot.version>2.1.4.RELEASE</spring-boot.version>
            <dubbo.version>2.7.1</dubbo.version>
            <zookeeper.version>3.4.13</zookeeper.version>
            <curator.version>4.1.0</curator.version>
        </properties>
    
        <dependencyManagement>
    
            <dependencies>
                <!-- Spring Boot -->
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-dependencies</artifactId>
                    <version>${spring-boot.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
    
                <!-- Aapche Dubbo  -->
                <dependency>
                    <groupId>org.apache.dubbo</groupId>
                    <artifactId>dubbo-dependencies-bom</artifactId>
                    <version>${dubbo.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
    
                <dependency>
                    <groupId>org.apache.dubbo</groupId>
                    <artifactId>dubbo</artifactId>
                    <version>${dubbo.version}</version>
                    <exclusions>
                        <exclusion>
                            <groupId>org.springframework</groupId>
                            <artifactId>spring</artifactId>
                        </exclusion>
                        <exclusion>
                            <groupId>javax.servlet</groupId>
                            <artifactId>servlet-api</artifactId>
                        </exclusion>
                        <exclusion>
                            <groupId>log4j</groupId>
                            <artifactId>log4j</artifactId>
                        </exclusion>
                    </exclusions>
                </dependency>
            </dependencies>
        </dependencyManagement>
    
    </project>
    
    dubbo-service-api UserService.java
    package com.ctgu.dubbo.service.api;
    
    public interface UserService {
        public String sayHello(String name);
    }
    
    dubbo-service-provider-1 pom.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>com.ctgu</groupId>
            <artifactId>dubbo-service-project</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <relativePath>../pom.xml</relativePath> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.ctgu</groupId>
        <artifactId>dubbo-service-provider-1</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>dubbo-service-provider-1</name>
        <description>Demo project for Spring Boot</description>
    
        <properties>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>com.ctgu</groupId>
                <artifactId>dubbo-service-api</artifactId>
                <version>0.0.1-SNAPSHOT</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo-spring-boot-starter</artifactId>
                <version>${dubbo.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo</artifactId>
            </dependency>
            <dependency>
                <groupId>de.javakaffee</groupId>
                <artifactId>kryo-serializers</artifactId>
                <version>0.45</version>
            </dependency>
            <dependency>
                <groupId>org.apache.curator</groupId>
                <artifactId>curator-framework</artifactId>
                <version>${curator.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.curator</groupId>
                <artifactId>curator-recipes</artifactId>
                <version>${curator.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.zookeeper</groupId>
                <artifactId>zookeeper</artifactId>
                <version>${zookeeper.version}</version>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>
    
    dubbo-service-provider-1 UserServiceImpl.java
    package com.ctgu.dubbo.service.provider1.service;
    
    import com.ctgu.dubbo.service.api.UserService;
    import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
    import com.netflix.hystrix.contrib.javanica.annotation.HystrixProperty;
    import org.apache.dubbo.config.annotation.Service;
    import org.springframework.beans.factory.annotation.Value;
    
    import java.util.Date;
    
    @Service(version = "${user.service.version}")
    public class UserServiceImpl implements UserService {
        @Value("${dubbo.application.name}")
        private String serviceName;
    
        private static Integer i = 0;
    
    //    @HystrixCommand(commandProperties = {
    //            @HystrixProperty(name = "circuitBreaker.requestVolumeThreshold", value = "10"),
    //            @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "2000")
    //    })
        @Override
        public String sayHello(String name) {
            System.out.println(serviceName + ":" + (++i));
    //        return String.format("[%s] : Hello, %s, %s", serviceName, name, new Date());
            throw new RuntimeException("Exception to show hystrix enabled.");
        }
    }
    
    dubbo-service-provider-1 application.yml
    spring:
      application:
        name: dubbo-service-provider1
    
    user:
      service:
        version: 0.0.1
    
    embedded:
      zookeeper:
        port: 2181
    
    dubbo:
      scan:
        base-packages: com.ctgu.dubbo.service.provider1.service
      application:
        id: ${spring.application.name}
        name: ${spring.application.name}
        qos-port: 2222
        qos-enable: true
      protocol:
        id: dubbo
        name: dubbo
        port: 12345
        status: server
        serialization: kryo
      registry:
        id: zookeeper
        address: zookeeper://master:${embedded.zookeeper.port}
      metadata-report:
        address: zookeeper://master:${embedded.zookeeper.port}
    
    
    management:
      endpoint:
        dubbo:
          enabled: true
        dubbo-shutdown:
          enabled: true
        dubbo-configs:
          enabled: true
        dubbo-services:
          enabled: true
        dubbo-references:
          enabled: true
        dubbo-properties:
          enabled: true
      # Dubbo Health
      health:
        dubbo:
          status:
            ## StatusChecker Name defaults (default : "memory", "load" )
            defaults: memory
            ## StatusChecker Name extras (default : empty )
            extras: load,threadpool
    
    dubbo-service-consumer pom.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>com.ctgu</groupId>
            <artifactId>dubbo-service-project</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <relativePath>../pom.xml</relativePath> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.ctgu</groupId>
        <artifactId>dubbo-service-consumer</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>dubbo-service-consumer</name>
        <description>Demo project for Spring Boot</description>
    
        <packaging>jar</packaging>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>com.ctgu</groupId>
                <artifactId>dubbo-service-api</artifactId>
                <version>0.0.1-SNAPSHOT</version>
            </dependency>
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo-spring-boot-starter</artifactId>
                <version>${dubbo.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo</artifactId>
            </dependency>
            <dependency>
                <groupId>de.javakaffee</groupId>
                <artifactId>kryo-serializers</artifactId>
                <version>0.45</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.apache.curator</groupId>
                <artifactId>curator-framework</artifactId>
                <version>${curator.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.curator</groupId>
                <artifactId>curator-recipes</artifactId>
                <version>${curator.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.zookeeper</groupId>
                <artifactId>zookeeper</artifactId>
                <version>${zookeeper.version}</version>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>
    
    dubbo-service-consumer UserController.java
    package com.ctgu.dubbo.service.consumer.controller;
    
    
    import com.ctgu.dubbo.service.api.UserService;
    import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
    import org.apache.dubbo.config.annotation.Reference;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class UserController {
    
        @Reference(version = "${user.service.version}")
        private UserService userService;
    
        @HystrixCommand(fallbackMethod = "hiError")
        @GetMapping("/hi")
        public String test() {
            for( int i=0; i<119; i++ ) {
                userService.sayHello("ct");
            }
            return userService.sayHello("ct");
        }
    
        public String hiError(){
            return "Hystrix fallback";
        }
    }
    
    dubbo-service-consumer application.yml
    spring:
      application:
        name: dubbo-service-consumer
    
    server:
      port: 8083
    
    user:
      service:
        version: 0.0.1
    
    embedded:
      zookeeper:
        port: 2181
    
    dubbo:
      scan:
        base-packages: com.ctgu.dubbo.service.consumer.controller
      application:
        id: ${spring.application.name}
        name: ${spring.application.name}
      protocol:
        id: dubbo
        name: dubbo
        port: 12345
        serialization: kryo
      registry:
        id: zookeeper
        address: zookeeper://master:${embedded.zookeeper.port}
      metadata-report:
        address: zookeeper://master:${embedded.zookeeper.port}
    

    相关文章

      网友评论

          本文标题:深入学习java笔记-16.SpringBoot2.1之Dubb

          本文链接:https://www.haomeiwen.com/subject/vvdgoqtx.html