Dubbo入门笔记

SpringBoot版本的Dubbo入门(配合zookeeper):

---------------------------------------------dubbo 简单入门代码----------------------------------------------------------------

1.首先展示下项目结构:

①provider,充当服务

pom.xml:(此处充当服务者时,不需要url访问,即可以不需要tomcat,可以剔除)

<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.sess</groupId>
  <artifactId>dubbo_consumer_two</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  
        <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.4.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>
        <dubbo-spring-boot>1.0.0</dubbo-spring-boot>
        <log4j.version>1.2.17</log4j.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>io.dubbo.springboot</groupId>
            <artifactId>spring-boot-starter-dubbo</artifactId>
            <version>${dubbo-spring-boot}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
<!--             <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions> -->
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>${log4j.version}</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

SpringBootDubboServiceApplication:

package com.sess;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringBootDubboServiceApplication {

    public static void main(String[] args) {
        
        SpringApplication.run(SpringBootDubboServiceApplication.class, args);
    }

}

User:

package com.sess.bean;

import java.io.Serializable;

public class User implements Serializable{

    /**
     * 
     */
    private static final long serialVersionUID = 7842017780313253729L;
    
    private String name;
    private int age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "User [name=" + name + ", age=" + age + "]";
    }
    
}

IDubboService:

package com.sess.service;

import com.sess.bean.User;

public interface IDubboService {

    public User helloDubbo(User user);
}

DubboServiceImpl:(此处的service调用的是dubbo的@service)

package com.sess.service.impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.sess.bean.User;
import com.sess.service.IDubboService;


@Service
public class DubboServiceImpl implements IDubboService{

    public User helloDubbo(User user) {
        System.out.println("hello dubbo,I'm server;传来的消息是:"+user);
        return user ;
    }
}

application.properties:

#Dubbo 服务提供者配置
spring.dubbo.application.name=springboot-dubbo-provider
spring.dubbo.registry.address=zookeeper://xx.xx.xx.xx:2181
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocal.port=20880
spring.dubbo.scan=com.sess.service

②Consumer,充当消费者

pom.xml:(这里要注意的是,如果通过URL访问的话,tomcat还是需要的,不能够剔除)

<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.sess</groupId>
  <artifactId>dubbo_provider_two</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  
      <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.4.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>
        <dubbo-spring-boot>1.0.0</dubbo-spring-boot>
        <log4j.version>1.2.17</log4j.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>io.dubbo.springboot</groupId>
            <artifactId>spring-boot-starter-dubbo</artifactId>
            <version>${dubbo-spring-boot}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>${log4j.version}</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

SpringBootDubboConsumerApplication:

package com.sess;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringBootDubboConsumerApplication {

    public static void main(String[] args) {
        
        SpringApplication.run(SpringBootDubboConsumerApplication.class, args);
    }

}

User:

package com.sess.bean;

import java.io.Serializable;

public class User implements Serializable{

    /**
     * 
     */
    private static final long serialVersionUID = 7842017780313253729L;
    
    private String name;
    private int age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "User [name=" + name + ", age=" + age + "]";
    }
    
    

}

ServiceDemo:

package com.sess.service;

import com.sess.bean.User;

public interface ServiceDemo {
    
    public User test();

}

ServiceDemoImpl:(这里的@Reference是dubbo提供的注解,用来注入远程接口)

package com.sess.service;

import org.springframework.stereotype.Service;

import com.alibaba.dubbo.config.annotation.Reference;
import com.sess.bean.User;

@Service
public class ServiceDemoImpl implements ServiceDemo {
    
    @Reference
    IDubboService iDubboService;

    public User test() {
        
        User user = new User();
        user.setName("jack");
        user.setAge(22);
        return iDubboService.helloDubbo(user);
    }

}

IDubboService:(与service提供的接口一样)

package com.sess.service;

import com.sess.bean.User;

public interface IDubboService {

    public User helloDubbo(User user);
}

ConsumerController:

package com.sess.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.sess.bean.User;
import com.sess.service.ServiceDemo;

@RestController
public class ConsumerController {
    
    @Autowired
    ServiceDemo serviceDemo;
    
    

    @RequestMapping("testhello")
    public User  testController() {
        return serviceDemo.test();
        
    }
    
}

application.properties:

# Dubbo消费者配置
spring.dubbo.application.name=spring-boot-consumer
spring.dubbo.registry.address=zookeeper://xx.xx.xx.xx:2181
spring.dubbo.scan=com.sess.service

server.port=8082

以上代码编辑完成后,首先启动provider,然后启动consumer.

浏览器输入http://localhost:8082/testhello即可访问

-------------------------------------------------zookeeper 配置------------------------------------------------------------------

我的zookeeper是安装在阿里云Centos7上:   zookeeper-3.4.14版本

 ①首先下载zookeeper(可直接通过wget+downloadurl下载)

②解压缩 tar -zxvf zookeeper-3.4.14.tar.gz

 ③cd zookeeper查看里面内容

 ④cd conf,查看里面文件如下

 ⑤cp zoo_sample.cfg zoo.cfg,复制一份zoo_sample.cfg,并重新命名为zoo.cfg

⑥使用vi 命令打开zoo.cfg 并修改配置:

这里主要是修改dataDir的路径,如果路径原先不存在,需要事先创建好对应的文件夹,比如data文件夹

 ⑦启动zookeeper

进入到bin文件夹:

 启动:

./zkServer.sh start

⑧使用命令查看zookeeper状态

./zkServer.sh status

 ⑨也可以通过进程来判断是否成功

ps -ef | grep zookeeper

 进程已启动,说明是成功的。

--------------------------------------------------dubbo-admin-2.6.0的使用----------------------------------------------

作用:主要是对dubbo的管理

下载链接:dubbo-admin-2.6.0.war(百度网盘,永久有效)

提取码:11bm

①下载完了后,将其放入tomcat中

 ②需要修改dubbo.properties(修改完了需要重启tomcat)

 比如我的配置:

dubbo.registry.address=zookeeper://xx.xx.xx.xx:2181
dubbo.admin.root.password=xxxx
dubbo.admin.guest.password=xxxx

(提醒,root的密码默认情况下就是root,guest的密码默认情况下就是guest)

以上内容配置完了后,浏览器打开url:http://localhost:8081/dubbo-admin-2.6.0/  (tomcat默认端口为8080,而我这边因为端口冲突,修改为了8081)

 以上,就是dubbo远程调用+zookeeper服务注册的详细内容。

猜你喜欢

转载自www.cnblogs.com/adreyan-lobster/p/12590916.html