springboot + dubbo + zookeeper入门到实战超级详解

一,引言

在此之前,本人还是希望各位有一台自己的服务器,不然在虚拟机里面操作真的是会很卡很卡的。由于dubbo最近似乎又开始更新了,所以不得不学了一下dubbo,由于这里只是入门,因此一些概念就先不聊了。

二,安装jdk

在服务器里面安装jdk,附上下载网址:https://www.oracle.com/java/technologies/javase-downloads.html
解压在/usr/local/software 里面,这个software需要手动创建。我大概就装了一下里面的东西
在这里插入图片描述
然后对/etc/profile进行环境配置,输入一下内容即可

vim /etc/profile
export JAVA_HOME=/usr/local/software/jdk1.8.0_281
export JRE_HOME=${
    
    JAVA_HOME}/jre
export CLASSSPATH=.:${
    
    JAVA_HOME}/lib:${
    
    JRE_HOME}/lib
export PATH=${
    
    JAVA_HOME}/bin:$PATH

在这里插入图片描述
再自己测试一下javac或者java -version即可

三,安装tomcat

附上连接https://tomcat.apache.org/download-70.cgi,常规的解压安装即可,我这边装的是tomcat7

四,安装zookeeper

下载地址http://archive.apache.org/dist/zookeeper/zookeeper-3.4.9/
,版本尽量安装3.4.x的,不然安装的版本太高容易启动不了,太多的bug。同样将压缩包放到/usr/local/software目录下,tar -zxvf解压即可。
在这里插入图片描述
修改配置文件 cd …/conf/ : mv zoo_sample.cfg zoo.cfg
在这里插入图片描述
接下来vim zoo.cfg,并修改里面的dataDir数据为当前zookeeper的data目录,该data目录可以在zookeeper下面新建即可
在这里插入图片描述
接下来保存退出,切换到bin目录下
在这里插入图片描述

./zkServer.sh status:查看当前服务状态
./zkServer.sh stop: 停止服务
./zkServer.sh start: 开启服务 

这里开启服务即可,不需要在哪个服务器里面将端口2181打开

五,安装dubbo

这里就需要使用tomcat来安装了,现在一个dubbo.war,附上一个地址可以下载的,https://download.csdn.net/download/fyc__ios/10386974,亲测有效
然后打开tomcat,直接切换到/usr/local/software/tomcat7/webapps/ROOT这个目录,直接 rm -rf *,删除里面的全部

rm -rf *

然后将dubbo.war里面的解压到/usr/local/software/tomcat7/webapps/ROOT这个路径下解压即可,需要使用unzip解压

unzip dubbo.war -d tomcat7/webapps/ROOT

再查看一下 /usr/local/software/tomcat7/webapps/ROOT/WEB-INF
在这里插入图片描述

vim dubbo.properties

在这里插入图片描述
不用改,看看就行了,到时登录dubbo时的账号和密码都是root
在切换到tomcat下面的bin目录,可以看到熟悉的脚本
在这里插入图片描述
直接启动

./startup.sh

需要编译等待一段时间,而且在启动前尽量关闭防火墙,并且打开端口号2181和8080.一段时间后,在浏览器上输入 服务器ip + 8080,出现以下界面,登录账号和密码都是root
在这里插入图片描述

六,接下来就是springboot和dubbo的整合了

新建springboot项目,见一个服务者和消费者作为测试即可
在这里插入图片描述

1,先说服务提供者,即dubbo-provider

pom.xml

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--引入dubbo-->
        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>0.2.0</version>
        </dependency>
    </dependencies>

application.properties

server.port=8081
dubbo.application.name=dubbo2-springboot-provider
dubbo.registry.protocol=zookeeper
#服务注册中心的地址,即服务器地址
dubbo.registry.address=xxx.xxx.xxx.xxx:2181
dubbo.protocol.port=20883

代码比较简单
在主启动类上加上 @EnableDubbo 开启dubbo服务的注解,和前面说的eureka是一样的。
在这里插入图片描述
然后就是新建一个IUserService接口

package com.zheng.dubboprovider.service;

public interface IUserService {
    
    
    public String getUser(String username);
}

具体实现类

package com.zheng.dubboprovider.service.impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.zheng.dubboprovider.service.IUserService;

@Service
public class UserServiceImpl implements IUserService {
    
    
    @Override
    public String getUser(String username) {
    
    
        System.out.println(username);
        return username;
    }
}

启动该微服务
在这里插入图片描述
可以发现该微服务以及注册进来了

2,消费者dubbo-consumer

pom.xml,多了一个服务提供者的依赖

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--引入dubbo-->
        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>0.2.0</version>
        </dependency>
        <dependency>
            <groupId>com.zheng</groupId>
            <artifactId>dubbo-provider</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
    </dependencies>

application.properties

server.port=8082
dubbo.application.name=dubbo2-springboot-consumer
dubbo.registry.protocol=zookeeper
#服务注册中心的地址,即服务器地址
dubbo.registry.address=xxx.xxx.xxx.xxx:2181

controller

package com.zheng.dubboconsumer.controller;

import com.alibaba.dubbo.config.annotation.Reference;
import com.zheng.dubboprovider.service.IUserService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RequestMapping("/t1")
@RestController
public class GetUser {
    
    
    //@Reference(loadbalance = "leastactive")
    @Reference
    private IUserService userService;

    @GetMapping("/qaq")
    public String getUserInfo(String username){
    
    
        System.out.println(username);
        return userService.getUser(username);
    }
}

主启动类,加上 @EnableDubbo 注解即可

3,启动服务调用者并测试

点开服务治理下面的应用,可以看到下图,服务者提供者和消费者都被加进来了
在这里插入图片描述
再来进行接口测试

http://localhost:8082/t1/qaq?username=123456789

在这里插入图片描述
测试成功,dubbo+zookeeper+springboot的整合正式成功!

猜你喜欢

转载自blog.csdn.net/zhenghuishengq/article/details/115007678