• 学习笔记--Dubbo


    Dubbo学习笔记

    Dubbo是什么

    Dubbo是:

    • 一款分布式服务框架
    • 高性能和透明化的RPC远程服务调用方案
    • SOA服务治理方案

    ZooKeeper服务注册中心

    下载 ZooKeeper ,地址 http://www.apache.org/dyn/closer.cgi/zookeeper
    解压,修改zoo_sample.cfg 重命名为zoo.cfg

    tar zxvf zookeeper-3.4.8.tar.gz
    cd zookeeper-3.3.6/conf
    vim zoo.cfg
    

    zoo.cfg主要配置

    tickTime=2000
    dataDir=/javaee/zookeeper/data 
    dataLogDir=/javaee/zookeeper/log
    clientPort=2181
    

    启动zookeeper

    cd zookeeper-3.3.6/bin
    ./zkServer.sh start
    

    搭建Dubbo Admin,Dubbo的管理界面

    从GitHub下载源码,位置https://github.com/apache/incubator-dubbo-ops
    只需要dubbo-admin项目,导入工程,打成war包放到tomcat下跑

    创建服务提供者

    创建SpringBoot项目
    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.qyluo</groupId>
        <artifactId>dubbo-demo</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>jar</packaging>
    
        <name>dubbo-demo</name>
        <description>Demo project for Spring Boot</description>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.5.0.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <!-- Spring Boot Dubbo 依赖 -->
            <dependency>
                <groupId>io.dubbo.springboot</groupId>
                <artifactId>spring-boot-starter-dubbo</artifactId>
                <version>1.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>dubbo</artifactId>
                <version>2.5.6</version>
            </dependency>
    
            <!-- Spring Boot Web 依赖 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <!-- Spring Boot Test 依赖 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/log4j/log4j -->
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.17</version>
            </dependency>
    
    
            <!-- Junit -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    
    </project>
    
    

    application.properties

    ## Dubbo 服务提供者配置
    spring.dubbo.application.name=provider
    spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
    spring.dubbo.protocol.name=dubbo
    spring.dubbo.protocol.port=20880
    spring.dubbo.scan=com.qyluo.dubbodemo.service
    

    实体类Person

    package com.qyluo.dubbodemo.service;
    
    import com.qyluo.dubbodemo.entity.Person;
    
    public interface FindPerson {
        Person findPersonByName(String name);
    }
    
    

    服务接口FindPerson

    package com.qyluo.dubbodemo.service;
    
    import com.qyluo.dubbodemo.entity.Person;
    
    public interface FindPerson {
        Person findPersonByName(String name);
    }
    
    

    FindPerson实现类

    package com.qyluo.dubbodemo.service;
    
    import com.alibaba.dubbo.config.annotation.Service;
    import com.qyluo.dubbodemo.entity.Person;
    
    /**
     * @author qiyao.luo
     * @create 2018/7/27
     */
    @Service
    public class FindPersonImpl implements FindPerson {
        @Override
        public Person findPersonByName(String name) {
            return new Person(name, 10);
        }
    }
    

    启动应用

    创建服务消费者

    SpringBoot项目
    pom.xml和服务提供者依赖一样
    application.properties

    server.port=8081
    
    ## Dubbo 服务消费者配置
    spring.dubbo.application.name=consumer
    spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
    spring.dubbo.scan=com.qyluo.dubbodemo.service
    spring.dubbo.protocol.name=dubbo
    

    需要在和服务提供者接口相同的包路径下创建FindPerson接口

    package com.qyluo.dubbodemo.service;
    
    import com.qyluo.dubbodemo.entity.Person;
    
    public interface FindPerson {
        Person findPersonByName(String name);
    }
    
    

    服务调用的类FindPersonConsumer

    package com.qyluo.dubbodemo.service.impl;
    
    import com.alibaba.dubbo.config.annotation.Reference;
    import com.qyluo.dubbodemo.service.FindPerson;
    import org.springframework.stereotype.Service;
    
    /**
     * @author qiyao.luo
     * @create 2018/7/27
     */
    @Service
    public class FindPersonConsumer {
    
        @Reference
        FindPerson findPerson;
    
        public void printPerson() {
            String name = "xiaoli";
            System.out.println(findPerson.findPersonByName(name));
        }
    }
    

    创建controller

    package com.qyluo.dubbodemo.controller;
    
    import com.qyluo.dubbodemo.service.impl.FindPersonConsumer;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * @author qiyao.luo
     * @create 2018/7/27
     */
    @RestController
    public class SampleController {
    
        @Autowired
        FindPersonConsumer findPersonConsumer;
    
        @RequestMapping("/test")
        public void testDubbo() {
            findPersonConsumer.printPerson();
        }
    }
    

    访问http://localhost:8081/test

  • 相关阅读:
    Easy-Transfer学习
    录音+语音转文字
    pyQt点击事件和数据传输
    第一个python-ui界面
    python写第一个网页
    pyhthon第一个小脚本——文件备份
    Stones HDU 1896
    Cow Sorting POJ 3270 & HDU 2838
    Stones
    大数相加
  • 原文地址:https://www.cnblogs.com/kioluo/p/9516688.html
Copyright © 2020-2023  润新知