从零开始搭建zookeeper+dubboAdmin+dubbo遇到的情况

本文介绍了如何在Windows上下载并配置Zookeeper,以及启动和连接Zookeeper。接着,详细讲解了下载、解压、打包及启动新版dubbo-admin的过程。通过修改配置文件,实现了dubbo-admin与Zookeeper的连接。然后,展示了使用Spring Boot和Dubbo构建简单服务提供者和消费者的方法,并通过dubbo-admin进行负载均衡的验证。
摘要由CSDN通过智能技术生成

前言

博主使用了虚拟机搭建了zookeeper集群,但是dubboAdmin在宿主机运行,无法连接到虚拟机里面的zookeeper集群,配置了防火墙也没用,但在宿主机上搭建zookeeper服务器,可以秒连接,可能是由于dubboAdmin设置了连接超时,如果dubboAdmin无法连接zookeeper就无法启动,所以这里是在window环境下使用zookeeper,如果想看linux如何搭建zookeeper集群可以看我这篇文章 Linux 从零开始部署zookeeper集群遇到的问题

下载zookeeper

在浏览器运行如下地址就可以下载apache-zookeeper-3.7.0-bin.tar.gz包了
https://dlcdn.apache.org/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz

解压

下载后就是解压了,windows解压使用专门的解压软件即可如WinRAR,解压后得到如下文件夹
在这里插入图片描述

修改配置文件

将conf文件夹下的zoo_sample.cfg名称修改为zoo.cfg,并修改其内容,将dataDir改为如下,其他就无须改变了

dataDir=E:\apache-zookeeper-3.7.0-bin\data

启动zookeeper

最好下个git,这样右键后就有git bush命令行工具了,如果没有下载使用window命令行也可以,window键+R出现运行,然后输入cmd回车,如下
在这里插入图片描述

cd E:\apache-zookeeper-3.7.0-bin
cd bin
./zkServer.cmd

出现如下情况,则启动成功
在这里插入图片描述

下载dubboAdmin

进入网址https://gitcode.net/mirrors/apache/dubbo-admin,点克隆下载zip文件,得到dubbo-admin-develop.zip,这是新版的dubboAdmin,老版本的dubboAdmin打包成war需要部署在tomcat服务器中,然后我试过很多版本的tomcat都无法配置成功

在这里插入图片描述

解压dubbo-admin-develop.zip

得到如下文件夹
在这里插入图片描述

修改配置

打开如下路径dubbo-admin-develop\dubbo-admin-server\src\main\resources下的application.properties,修改其配置,修改端口即可,其他不用变,因为windows下的zookeeper会占用8080端口,而dubbo-admin-develop默认启动端口为8080,下面就是zookeeper服务器的地址,如果是虚拟机将127.0.0.1改为虚拟机中运行ifconfig显示的ip地址,但是很有可能连接不上
在这里插入图片描述

mvn打包

使用mvn必须安装maven并配置好mvn环境变量,使用dubbo必须有jdk,在dubbo-admin-develop目录下运行mvn package -Dmaven.test.skip=true,打包的时候可能会出现问题,因为需要安装node,此时会卡住,但是没关系,解决方法就是关闭命令行,重新运行如下命令打包即可

mvn package -Dmaven.test.skip=true

在这里插入图片描述
打包成功出现如下信息
在这里插入图片描述

启动dubbo-admin服务器

将命令行移动到dubbo-admin-develop\dubbo-admin-server\target目录下,执行如下代码,注意dubbo-admin-server-0.4.0.jar名称以你自己的电脑上名字为准,因为以后可能版本不同

java -jar dubbo-admin-server-0.4.0.jar

出现如下信息,且没有报错则启动成功
在这里插入图片描述

登录dubbo-admin

输入http://localhost:8081/就会默认跳转到登录界面,默认登录的账户是root密码是root,如果不对则在dubbo-admin-develop\dubbo-admin-server\src\main\resources下的application.properties这个配置文件查看,如下配置就是决定账号和密码
在这里插入图片描述

在这里插入图片描述
登录成功出现如下界面,表示dubboAdmin启动成功
在这里插入图片描述

使用dubbo

简单构建

按照如下目录结构创建,且只有6个文件有内容,在下面会一一列出
在这里插入图片描述
pmx.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.lolxxs</groupId>
    <artifactId>springboot_dubbo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.1</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- 整合dubbo -->
        <dependency>
            <groupId>io.dubbo.springboot</groupId>
            <artifactId>spring-boot-starter-dubbo</artifactId>
            <version>1.0.0</version>
        </dependency>
        <!-- zookeeper客户端 -->
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.7</version>
        </dependency>

    </dependencies>
</project>

DubboApplication.java

package com.lolxxs;

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

@SpringBootApplication
public class DubboApplication {
    public static void main(String[] args) {
        SpringApplication.run(DubboApplication.class);
    }
}

TestService.java

package com.lolxxs.service;

public interface TestService {
    String testDubbo();
}

TestService.java

package com.lolxxs.service.impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.alibaba.dubbo.rpc.RpcContext;
import com.lolxxs.service.TestService;

@Service(version = "1.0.0", timeout = 3000)
public class TestServiceImpl implements TestService {
    @Override
    public String testDubbo() {
        System.out.println("调用了");
       return  "远程地址"+ RpcContext.getContext().getRemoteAddress()+" 本地地址"+ RpcContext.getContext().getLocalAddress();
    }
}

TestController.java

package com.lolxxs.controller;

import com.alibaba.dubbo.config.annotation.Reference;
import com.alibaba.dubbo.rpc.RpcContext;
import com.lolxxs.service.TestService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/consumer")
public class TestController {
    @Reference(version = "1.0.0", timeout = 300)
    private TestService testService;

    @GetMapping("/test")
    public String getTest() {
        return testService.testDubbo();
    }
}

application.yml

server:
    port: 9000
spring:
    dubbo:
        application:
            name: springboot-dubbo-demo
        registry:
            address: zookeeper://127.0.0.1
            port: 2181
        protocol:
            name: dubbo
            port: 20890
        scan: com.lolxxs.service

创建好直接运行DubboApplication类
在这里插入图片描述
出现如下信息说明启动了dubbo服务,并且dubbo服务成功连接zookeeper


点击搜索,会发现多出了一个,就是我们刚刚创建的服务,也就是服务器的提供者
在这里插入图片描述
点击最后一个详情,出现如下,说明只有一个dubbo服务
在这里插入图片描述
我们启动好了服务提供者(生产者),也就要启动服务消费者,只需要改动配置文件后application.yml,再次点击DubboApplication类中的按钮启动即可,注意之前的服务器不能关闭,idea可以启动多个服务器,eclipse我以前用过好像没法启动多个服务器,配置文件修改端口和包扫描scan改为扫描controller包
application.yml

server:
    port: 9002
spring:
    dubbo:
        application:
            name: springboot-dubbo-consumer
        registry:
            address: zookeeper://127.0.0.1
            port: 2181
        protocol:
            name: dubbo
            port: 20890
        scan: com.lolxxs.controller

启动成功后,有两种方法测试,一种是直接在浏览器输入http://localhost:9002/consumer/test,第二种就是使用postman,在postman输入http://localhost:9002/consumer/test,使用get请求,这里为了简单使用浏览器输入,如下,可以看到收到响应
在这里插入图片描述
并且可以看到,第一个服务器是服务器提供者,第二个服务器是服务器消费者,我们访问的是服务器消费者,但是却是服务器提供者执行的代码,这就是RPC(Remote Procedure Call)
在这里插入图片描述

负载均衡

观察负载均衡我们需要启动两个服务器提供者,修改配置文件即可,两个服务提供者的端口不能相同,并且protocol下面的端口也不能相同,服务消费者和上面配置一模一样。注意两个服务提供者的application.name必须相同,要不然它们就是两种服务了,不是一种服务的两个服务器提供者

服务提供者1
application.yml

server:
    port: 9000
spring:
    dubbo:
        application:
            name: springboot-dubbo-demo
        registry:
            address: zookeeper://127.0.0.1
            port: 2181
        protocol:
            name: dubbo
            port: 20890
        scan: com.lolxxs.service

服务提供者2
application.yml

server:
    port: 9001
spring:
    dubbo:
        application:
            name: springboot-dubbo-demo
        registry:
            address: zookeeper://127.0.0.1
            port: 2181
        protocol:
            name: dubbo
            port: 20891
        scan: com.lolxxs.service

服务消费者
application.yml

server:
    port: 9002
spring:
    dubbo:
        application:
            name: springboot-dubbo-consumer
        registry:
            address: zookeeper://127.0.0.1
            port: 2181
        protocol:
            name: dubbo
            port: 20890
        scan: com.lolxxs.controller

然后依次启动三个服务器,查看dubboAdmin,可以发现消费者和服务提供者都注册成功了
在这里插入图片描述
点击服务提供者的详情,可以发现该服务现在有两个提供者了,所以就可以使用负载均衡策略了
在这里插入图片描述

在浏览器多次输入http://localhost:9002/consumer/test,会发现请求同一个地址,访问的服务器可能不同,本地地址不同,也就是我们上面配置的dubbo暴露端口
在这里插入图片描述
在这里插入图片描述
查看idea中服务器运行情况,也可以发现两个服务提供者服务器都运行了,且运行次数不同

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lolxxs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值