美文网首页程序员JavaJava 杂谈
SpringBoot+Dubbo+Zookeeper整合搭建简单

SpringBoot+Dubbo+Zookeeper整合搭建简单

作者: 88b61f4ab233 | 来源:发表于2019-06-06 13:47 被阅读21次

    为什么要使用分布式系统?

    容错

    减少延迟/提高性能

    可用性

    负载均衡

    总而言之,其实目的只有一个,”用户体验“。

    什么是分布式系统?

    分布式系统是由使用分发中间件连接的自治计算机组成的网络。它们有助于共享不同的资源和功能,为用户提供单一且集成的连贯网络。

    搭建一个简单的分布式系统

    1)在服务器(虚拟机)上安装Zookeeper(我这里使用Docker安装)。

    (1)去docker-cn.com获取镜像加速地址

    (2)使用docker pull registry.docker-cn.com/library/zookeeper命令下载Zookeeper

    (3)使用docker run --name zk01 -p 2181 --restart always -d zookeeper命令安装zookeeper

    (4)使用docker ps命令查看进程,至此zookeeper已安装完成,具体的安装文档请参照https://hub.docker.com/_/zookeeper

    2)创建服务提供者,服务消费者(我使用的开发工具是IDEA)。

    (1)New Project 选择 Empty Project

    (2)创建一个子工程作为服务提供者。

    2.1 new Model 选择Spring Initalizr为了测试方便引入web模块。

    2.2 创建一个service

    package com.example.ticket.Service;
    
    public interface TicketService {
    
        public String getTicket();
    
    }
    

    2.3 创建serviceimpl,注意引入的包

    package com.example.ticket.Service;
    
    import com.alibaba.dubbo.config.annotation.Service;
    import org.springframework.stereotype.Component;
    
    @Component
    @Service //将服务发布出去
    public class TicketServiceImpl implements TicketService {
        @Override
        public String getTicket() {
            return "《厉害了,我的国》";
        }
    }
    

    2.4 引入dubbo和zklient相关依赖

    <!--引入dubbo-->
            <dependency>
                <groupId>com.alibaba.boot</groupId>
                <artifactId>dubbo-spring-boot-starter</artifactId>
                <version>0.1.0</version>
            </dependency>
            <!--引入zookeeper-->
            <!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient -->
            <dependency>
                <groupId>com.github.sgroschupf</groupId>
                <artifactId>zkclient</artifactId>
                <version>0.1</version>
            </dependency>
    

    2.5 配置dubbo的扫描包和注册中心地址

    #当前应用的名称
    dubbo.application.name=provider-ticket
    #注册中心的地址
    dubbo.registry.address=zookeeper://地址:2181
    #扫描哪些包(发布什么内容)
    dubbo.scan.base-packages=com.example.ticket.Service
    

    (3)子工程作为服务消费者。

    3.1 new Model 选择Spring Initalizr为了测试方便引入web模块。

    3.2 创建一个UserService

    3.3 引入dubbo和zklient相关依赖

    <!--引入dubbo-->
            <dependency>
                <groupId>com.alibaba.boot</groupId>
                <artifactId>dubbo-spring-boot-starter</artifactId>
                <version>0.1.0</version>
            </dependency>
            <!--引入zookeeper-->
            <!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient -->
            <dependency>
                <groupId>com.github.sgroschupf</groupId>
                <artifactId>zkclient</artifactId>
                <version>0.1</version>
            </dependency>
    

    3.4 配置dubbo的注册中心地址

    #应用名称
    dubbo.application.name=consumer-user
    #注册中心的地址
    dubbo.registry.address=zookeeper://地址:2181
    

    3.5 将所需服务提供者工程的service copy过来(一定要全类名相同),之后的目录结构如下图

    3.6 编写UserService

    package com.example.user.Service;
    
    import com.alibaba.dubbo.config.annotation.Reference;
    import com.example.ticket.Service.TicketService;
    import org.springframework.stereotype.Service;
    
    @Service
    public class UserService {
        @Reference
        TicketService ticketService;
    
        public void hello(){
            String ticket = ticketService.getTicket();
            System.out.println("买到票了:"+ticket);
        }
    
    }
    

    至此,一个简单的分布式系统就搭建完毕。

    相关文章

      网友评论

        本文标题:SpringBoot+Dubbo+Zookeeper整合搭建简单

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