Dubbo+Zookeeper安装与配置(Windows版小白血泪史)

本文详细描述了如何在Dubbo中配置Zookeeper,包括启动步骤、本地安装Zookeeper、依赖管理以及生产者和消费者配置。特别强调了路径一致性问题和可能出现的Zookeeper启动错误的解决方法。
摘要由CSDN通过智能技术生成

dubbo配置zookeeper(血泪史)

0. 启动远程调用顺序

(1)启动注册中心(这里我采用zookeeper)
(2)启动生产者(Dubbo框架的下的生产者)
(3)启动消费者(Dubbo框架的下的消费者)

1. 本机安装zookeeper

直接官网安装zookeeper,我的版本是3.8.3(一定是已经编译过的二进制bin文件包)
zookeeper(windows版)下载传送门
注意:

  1. 先启动服务端(zkServer.cmd),再启动客户端(zkCli.cmd)
  2. 启动zkServer.cmd可能会出现一闪而过
    操作:修改zkServer.cmd文件
    在这里插入图片描述
  3. 启动zkServer.cmd,出现**“Zookeeper audit is disabled”**
    操作:修改zkServer.cmd的一处地方(两侧都要有空格哈)
    在这里插入图片描述
  4. 安装小寄巧
    不要安装在中文路径!!!(要不然是真的寄!)

检验zookeeper启动成功
(1)查看端口2181(zookeeper的默认端口)

netstat -ano | findstr "2181"

在这里插入图片描述

(2)查看服务端cmd窗口日志
(3)查看客户端cmd窗口日志
在这里插入图片描述

2. 使用Dubbo框架

官网
当然,肯定不是直接给你官网链接,就完事了。毕竟能够运行官网demo,离成功似乎还挺远的(不要问为什么呜呜呜)如果你要运行demo,建议直接拉取下图的代码就好了,其他的可以不用。
在这里插入图片描述
生产者
(1)生产者需要的依赖

        <!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo</artifactId>
            <version>3.1.3</version>
        </dependency>
<!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo-dependencies-zookeeper -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-dependencies-zookeeper</artifactId>
            <version>3.1.3</version>
            <type>pom</type>
            <exclusions>
                <exclusion>
                    <groupId>slf4j-log4j12</groupId>
                    <artifactId>org.slf4j</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

(2)配置文件

dubbo:
  application:
    name: 自己项目的根目录名
  protocol:
    name: dubbo
    port: -1
  registry:
    address: zookeeper://${zookeeper.address:127.0.0.1}:2181

(3)(复制官网demo中生产者)代码

package com.yupi.springbootinit.provider;
public interface DemoService {
    String sayHello(String name);
}
package com.yupi.springbootinit.provider;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.stereotype.Component;
@DubboService(interfaceClass = DemoService.class)
@Component
public class DemoServiceImpl implements DemoService {
    @Override
    public String sayHello(String name) {
        return "Hello " + name;
    }
}

消费者
(1)消费者需要的依赖
顺便说一句,不知道为什么消费者和生产者的依赖不同,但是就是可以!(搞的dubbo版本一个是三,一个是二)

        <!-- Dubbo Spring Boot Starter -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.3</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>
        <!--日志会冲突~-->
        <!--引入zookeeper-->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>2.12.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>2.12.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.14</version>
            <!--排除这个sLf4j-Log4j12-->
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

(2)配置文件

dubbo:
  application:
    name: spring-gateway
  registry:
    address: zookeeper://${zookeeper.address:127.0.0.1}:2181

(3)(复制官网demo中消费者)代码

消费者主函数:

package com.yupi.springgateway;

import com.yupi.springbootinit.provider.DemoService;
import org.apache.dubbo.config.annotation.Reference;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;

@SpringBootApplication
@EnableDubbo
public class SpringGatewayApplication {
    @Reference(check = false)
    private DemoService demoService;
    public static void main(String[] args) {
        ConfigurableApplicationContext context = SpringApplication.run(SpringGatewayApplication.class, args);
        SpringGatewayApplication application = context.getBean(SpringGatewayApplication.class);
        String result = application.doSayHello("world");
        System.out.println("result:" + result);
    }
    public String doSayHello(String name){
        return demoService.sayHello(name);
    }
}

DemoService代码:

package com.yupi.springbootinit.provider;

public interface DemoService {

    String sayHello(String name);
}

注意!!!
这里是个巨坑!你必须保持生产者和消费者的在项目的路径名保持一致,如图所示
生产者:
在这里插入图片描述
消费者:
在这里插入图片描述
都必须是:com.yupi.springbootinit.provider.DemoService,要不然当生产者注册进去了zookeeper,让消费者在zookeeper找生产者给找不到了!
建议:下载一个zookeeper可视化软件,能够容易清晰查看生产者是否注册进去了zookeeper,我采用的是PrettyZoo
下载链接 直接使用win.msi 不用编译直接无脑下载即可
在这里插入图片描述
效果:
等了这个helloworld 太心酸了!!!(完结撒花~,泪崩)
在这里插入图片描述

最后

如果你还是搞不定,不妨再坚持一下,要么就换注册中心,用nacos(平替方案)
中途遇到太多问题了,都没来的及截图,这里给出我一路参考的比较有用的文章,希望可以帮助到你一些。
ZooKeeper启动错误:ZooKeeper audit is disabled
(八)Dubbo常见的错误总结
Windows下Zookeeper启动zkServer.cmd闪退问题的解决方案
java.lang.NoClassDefFoundError: org/apache/curator/framework/CuratorFrameworkFactory

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Brilliant.Louis

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

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

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

打赏作者

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

抵扣说明:

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

余额充值