• dubbo快速入门


    注册中心

    在本套课程中,使用docker容器化技术进行部署和开发,如果对docker不熟悉的同学可以采用传统的部署方式,效果是一样的。
    之所以采用docker部署的形式,是考虑到微服务节点的部署,以及后续的集群扩展的便捷性。
    环境:ubuntu-16.04.3 + docker 17.03.2-ce
    参考资料中的《VMware Workstation 中安装 Ubuntu16.04 虚拟机.docx》文档进行安装,统一环境
    虚拟机安装后必须记住
    用户密码:itcast/itcast123 root/root123
    ip地址 192.168.58.136

    《VMware Workstation 中安装 Ubuntu16.04 虚拟机.docx》下载
    链接:https://pan.baidu.com/s/1n_yrwwLl6s20mjG6Nv9Hxw?pwd=3hnt
    提取码:3hnt
    –来自百度网盘超级会员V3的分享
    ubuntu.iso下载
    链接:https://pan.baidu.com/s/1Tba9ChJhT7l22s7nnYrfyg?pwd=k3nv
    提取码:k3nv
    –来自百度网盘超级会员V3的分享
    jdk包下载
    链接:https://pan.baidu.com/s/1SAxoFoTfSA0osLS2-ryHZA?pwd=l74t
    提取码:l74t
    –来自百度网盘超级会员V3的分享

    #拉取zk镜像
    docker pull zookeeper:3.5
    #创建容器
    docker create --name zk -p 2181:2181 zookeeper:3.5
    #启动容器
    docker start zk
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    zooinspector下载
    链接:https://pan.baidu.com/s/1UhNA-5qeM-jvJ2z1gAlczQ?pwd=42ak
    提取码:42ak
    –来自百度网盘超级会员V3的分享
    打开zooinspector,根文件夹下的build文件夹下的startZK.bat进行测试(地址ipaddress:2181启动有点慢,需要耐心等待)
    在这里插入图片描述
    保存虚拟机快照
    在这里插入图片描述

    编写服务提供方

    创建工程

    groupid:cn.itcast.dubbo
    artifactid:itcast-dubbo
    右击“itcast-dubbo”–>“new”–>“Module”
    artifactid:itcast-dubbo-service

    导入依赖

    在itcast-dubbo工程中编写pom.xml

    
    <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.0modelVersion>
    
        
        <parent>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-parentartifactId>
            <version>2.1.0.RELEASEversion>
        parent>
    
        <groupId>cn.itcast.dubbogroupId>
        <artifactId>itcast-dubboartifactId>
        <packaging>pompackaging>
        <version>1.0-SNAPSHOTversion>
        <modules>
            <module>itcast-dubbo-servicemodule>
            <module>itcast-dubbo-consumermodule>
        modules>
    
        <dependencies>
            
            <dependency>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-starter-testartifactId>
                <scope>testscope>
            dependency>
    
            
            <dependency>
                <groupId>com.alibaba.bootgroupId>
                <artifactId>dubbo-spring-boot-starterartifactId>
                <version>0.2.0version>
            dependency>
    
            
            <dependency>
                <groupId>com.alibabagroupId>
                <artifactId>dubboartifactId>
                <version>2.6.4version>
            dependency>
    
        dependencies>
    
        <build>
            <plugins>
                
                <plugin>
                    <groupId>org.springframework.bootgroupId>
                    <artifactId>spring-boot-maven-pluginartifactId>
                plugin>
            plugins>
        build>
    
    
    project>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58

    itcast-dubbo-service依赖

    
    <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">
        <parent>
            <artifactId>itcast-dubboartifactId>
            <groupId>cn.itcast.dubbogroupId>
            <version>1.0-SNAPSHOTversion>
        parent>
        <modelVersion>4.0.0modelVersion>
    
        <artifactId>itcast-dubbo-serviceartifactId>
    
        <dependencies>
            
            <dependency>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-starterartifactId>
            dependency>
            <dependency>
                <groupId>org.apache.zookeepergroupId>
                <artifactId>zookeeperartifactId>
                <version>3.4.13version>
            dependency>
            <dependency>
                <groupId>com.github.sgroschupfgroupId>
                <artifactId>zkclientartifactId>
                <version>0.1version>
            dependency>
        dependencies>
    
    
    project>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    在这里插入图片描述

    创建User对象

    package cn.itcast.dubbo.pojo;
    
    // 使用dubbo要求传输的对象必须实现序列化接口
    public class User implements java.io.Serializable {
    
        private static final long serialVersionUID = -7341603933521593227L;
    
        private Long id;
    
        private String username;
    
        private String password;
    
        private Integer age;
    
        public Long getId() {
            return id;
        }
    
        public void setId(Long id) {
            this.id = id;
        }
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49

    创建UserService(接口)提供查询服务

    package cn.itcast.dubbo.service;
    
    import cn.itcast.dubbo.pojo.User;
    
    import java.util.List;
    
    public interface UserService {
    
        /**
         * 查询所有的用户数据
         *
         * @return
         */
        List<User> queryAll();
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    创建UserServiceImpl实现类

    package cn.itcast.dubbo.service.impl;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import cn.itcast.dubbo.pojo.User;
    import cn.itcast.dubbo.service.UserService;
    import com.alibaba.dubbo.config.annotation.Service;
    
    
    @Service(version = "${dubbo.service.version}") //声明这是一个dubbo服务
    public class UserServiceImpl implements UserService {
    
    	/**
    	 * 实现查询,这里做模拟实现,不做具体的数据库查询
    	 */
    	public List<User> queryAll() {
    		List<User> list = new ArrayList<User>();
    		for (int i = 0; i < 10; i++) {
    			User user = new User();
    			user.setAge(10 + i);
    			user.setId(Long.valueOf(i + 1));
    			user.setPassword("123456");
    			user.setUsername("username_" + i);
    			list.add(user);
    		}
    		System.out.println("---------Service 3------------");
    		return list;
    	}
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    编写application.properties配置文件

    # Spring boot application
    spring.application.name = itcast-dubbo-service
    server.port = 9090
    
    # Service version
    dubbo.service.version = 1.0.0
    
    dubbo.scan.basePackages  = cn.itcast.dubbo.service
    
    dubbo.application.name = dubbo-provider-demo
    
    dubbo.protocol.name = dubbo
    dubbo.protocol.port = 20882
    
    dubbo.registry.address = zookeeper://192.168.58.136:2181
    dubbo.registry.client = zkclient
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    编写启动类

    package cn.itcast.dubbo;
    
    import org.springframework.boot.WebApplicationType;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.builder.SpringApplicationBuilder;
    
    @SpringBootApplication
    public class DubboProvider {
    
        public static void main(String[] args) {
            new SpringApplicationBuilder(DubboProvider.class)
                    .web(WebApplicationType.NONE) // 非 Web 应用
                    .run(args);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    在这里插入图片描述
    在这里插入图片描述

    编写服务消费方

    创建工程

    artifactid:itcast-dubbo-consumer

    导入依赖

    
    <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">
        <parent>
            <artifactId>itcast-dubboartifactId>
            <groupId>cn.itcast.dubbogroupId>
            <version>1.0-SNAPSHOTversion>
        parent>
        <modelVersion>4.0.0modelVersion>
    
        <artifactId>itcast-dubbo-consumerartifactId>
    
        <dependencies>
            
            <dependency>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-starterartifactId>
            dependency>
            <dependency>
                <groupId>org.apache.zookeepergroupId>
                <artifactId>zookeeperartifactId>
                <version>3.4.13version>
            dependency>
            <dependency>
                <groupId>com.github.sgroschupfgroupId>
                <artifactId>zkclientartifactId>
                <version>0.1version>
            dependency>
            
            <dependency>
                <groupId>cn.itcast.dubbogroupId>
                <artifactId>itcast-dubbo-serviceartifactId>
                <version>1.0-SNAPSHOTversion>
            dependency>
        dependencies>
    
    
    project>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39

    编写测试用例

    package cn.itcast.dubbo;
    
    import cn.itcast.dubbo.pojo.User;
    import cn.itcast.dubbo.service.UserService;
    import com.alibaba.dubbo.config.annotation.Reference;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    
    import java.util.List;
    
    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class UserServiceTest {
    
        @Reference(version = "1.0.0", loadbalance = "roundrobin")
        private UserService userService;
    
        @Test
        public void testQueryAll() {
            for (int i = 0; i < 100; i++) {
    
                System.out.println("开始调用远程服务 >>>>>" + i);
    
                List<User> users = this.userService.queryAll();
                for (User user : users) {
                    System.out.println(user);
                }
    
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
    
        }
    
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    编写application.properties配置文件

    # Spring boot application
    spring.application.name = itcast-dubbo-consumer
    server.port = 9091
    
    dubbo.application.name = dubbo-consumer-demo
    
    dubbo.registry.address = zookeeper://192.168.58.136:2181
    dubbo.registry.client = zkclient
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    进行测试

    在这里插入图片描述
    在这里插入图片描述
    测试结果,发现可以获取到数据,说明,已经成功调用了service中提供的接口。

    dubbo Admin

    不太好用的工具,略

    服务的负载均衡

    只要价格DUBBO属性loadbalance = “roundrobin"就可以了
    在这里插入图片描述
    记得在启动dubbo-consumer的时候,启动配置上勾上"allow parallel run”(允许多个实例)

    源代码

    链接:https://pan.baidu.com/s/1wp6jNffq6ZZW5mLgd5_60w?pwd=xh3p
    提取码:xh3p
    –来自百度网盘超级会员V3的分享

  • 相关阅读:
    机器学习中的 SVM(支持向量机)和随机森林及其优缺点
    【微服务部署】五、Jenkins+Docker一键打包部署NodeJS(Vue)项目的Docker镜像步骤详解
    [附源码]计算机毕业设计springboot创新创业管理系统
    Unity3d 商业工程中的 FSM 有限状态机 实现代码
    安全扫描项目
    leetcode每天5题-Day22
    怎么找到贵人?
    UDP/TCP协议报头详细分析
    基于JAVA框架的报修系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署
    《动手学深度学习 Pytorch版》 4.3 多层感知机的简洁实现
  • 原文地址:https://blog.csdn.net/peacezhi/article/details/126021850