跑通SpringBoot + dubbo3.0.8 + zookeeper

先安装并启动zookeeper

  1. 去zookeeper下载网站进行下载https://archive.apache.org/dist/zookeeper/
  2. 博主下载的是3.4.9
  3. 解压并启动
tar -zxvf apache-zookeeper-3.4.9.bin.tar.gz 
 mv apache-zookeeper-3.4.9 zookeeper-3.4.9
 # 启动
 cd zookeeper-3.4.9/conf
 ll


进入conf目录下后, 可以看到zoo_sample.cfg, 需要先复制一份,不然启动会报错找不到zoo.cfg

cp zoo_sample.cfg zoo.cfg

然后修改一下zoo.cfg中的存储目录, 将默认的dataDir修改为zookeeper-3.4.9下面的data目录下, data需要新建

# 回到zookeeper-3.4.9目录, 因为在conf目录下,所以直接返回
cd ..
mkdir data
cd bin

开始启动zookeeper服务端

./zkServer.sh start

启动成功后会直接后台启动, 如下即为启动成功

测试是否成功
启动zookeeper客户端

./zkCli.sh

启动成功后输入, 看到zookeeper即为启动成功

ls /

博主因为启动了后面的dubbo-admin,所以有dubbo的目录,这不重要, 初次启动只要有zookeeper就行

安装dubbo-admin进行dubbo监控

安装dubbo-admin, 从github上cloneduboo-admin

  1. 下载
git clone https://github.com/apache/dubbo-admin.git
cd dubbo-admin

注意这里要先去ui里运行一下npm install

cd dubbo-admin-ui
npm install 
# mac 用户记得加sudo, 不然会报错
sudo npm install
  1. 打包并启动
    回到dubbo-admin目录, 使用maven打包一下, 记得要跳过测试, 不然会很慢
mvn clean package -Dmaven.skip.test=ture

进入dubbo-amdin/dubbo-admin-server/src/main/resources 修改application.properties, 新增server.port=8081`
这里必须要改一下端口号, 因为zookeeper启动会占用8080
然后启动

mvn --projects dubbo-admin-server spring-boot:run

访问locahost:8081

登录, 账户和密码都是root, dubbo-admin默认的密码,可以在application.properties中进行修改

新建项目

创建一个多模块的项目, 格式如下:
分别为:
接口模块
提供者模块
消费者模块

创建统一接口

新建一个模块, pom设置格式<packaging>jar</packaging>其他的什么jar都不需要引入,

新建接口类,代码如下:

public interface SayHello {  
    /**  
     * 打招呼     * @param name 名字  
     * @return 名字  
     */    
     public String sayHello(String name);  
}

创建服务提供者

pom:

<properties>
	<dubbo.version>3.0.8</dubbo.version>
</properties>
<dependencies>
	<dependency>  
	    <groupId>org.apache.dubbo</groupId>  
	    <artifactId>dubbo-spring-boot-starter</artifactId>  
	    <version>${dubbo.version}</version>  
	</dependency>  
	  
	<dependency>  
	    <groupId>org.apache.dubbo</groupId>  
	    <artifactId>dubbo-rpc-api</artifactId>  
	    <version>${dubbo.version}</version>  
	</dependency>  
	  
	<dependency>  
	    <groupId>org.apache.dubbo</groupId>  
	    <artifactId>dubbo-rpc-dubbo</artifactId>  
	    <version>${dubbo.version}</version>  
	</dependency>  
	  
	<dependency>  
	    <groupId>org.apache.dubbo</groupId>  
	    <artifactId>dubbo-registry-zookeeper</artifactId>  
	    <version>${dubbo.version}</version>  
	</dependency>  
	  
	<dependency>  
	    <groupId>org.apache.dubbo</groupId>  
	    <artifactId>dubbo-configcenter-zookeeper</artifactId>  
	    <version>${dubbo.version}</version>  
	</dependency>  
	  
	<dependency>  
	    <groupId>org.apache.dubbo</groupId>  
	    <artifactId>dubbo-metadata-report-zookeeper</artifactId>  
	    <version>${dubbo.version}</version>  
	</dependency>  
	  
	<dependency>  
	    <groupId>org.apache.dubbo</groupId>  
	    <artifactId>dubbo-config-spring</artifactId>  
	    <version>${dubbo.version}</version>  
	</dependency>  
	  
	<dependency>  
	    <groupId>org.apache.dubbo</groupId>  
	    <artifactId>dubbo-remoting-netty4</artifactId>  
	    <version>${dubbo.version}</version>  
	</dependency>  
	  
	<dependency>  
	    <groupId>org.apache.dubbo</groupId>  
	    <artifactId>dubbo-serialization-hessian2</artifactId>  
	    <version>${dubbo.version}</version>  
	</dependency>
	<!--记得引入interface-->
</dependencies>

yml配置文件:

dubbo:  
  application:  
  # 服务名称
    name: dubbo-test-provider  
  protocol:  
  # 协议 dubbo
    name: dubbo  
    port: 20881  
  registry:  
  # 注册中心地址
    address: zookeeper://127.0.0.1:2181  
  config-center:  
    address: zookeeper://127.0.0.1:2181  
  metadata-report:  
    address: zookeeper://127.0.0.1:2181  
  scan:  
  # 需要扫描的包, 扫描的是接口模块的接口
    base-packages: com.exceedy.dubbotest.dubbotestinterface.service

消费者和提供者pom和配置文件(除服务名称外)均一致

实现

  1. 在启动类中增加EnableDubbo注解,然后让提供者进入等待状态
@SpringBootApplication  
@EnableDubbo  
public class ProviderApplication {  
  
    public static void main(String[] args) throws InterruptedException {  
        SpringApplication.run(ProviderApplication.class, args);  
        System.out.println("dubbo provider start");  
        new CountDownLatch(1).await();  
    }  
  
}
  1. 实现SayService
// springBoot的注解
@Service  
// 版本更新到3.0.8后, dubbo原本的@Service标记为了删除, 所以使用新注解
// DubboService 意味着暴露服务
@DubboService  
public class SayHelloImpl implements SayHello {  
  
    @Override  
    public String sayHello(String name) {  
        System.out.println("Hello, " + name);  
        return "Hello, " + name;  
    }  
}
  1. 启动后刷新dubbo-admin界面

    看到服务已经注册,说明提供者已经完成

创建服务消费者

消费者的配置文件和pom直接copy即可, 将yml文件中的dubbo.application.name=dubbo-test-provider 改为dubbo.application.name=dubbo-test-consumers
直接修改启动类

@SpringBootApplication  
public class ConsumersApplication {  
  
    @DubboReference  
    SayHello sayHello;  
  
    public static void main(String[] args) {  
        ConfigurableApplicationContext run = SpringApplication.run(ConsumersApplication.class, args);  
        ConsumersApplication bean = run.getBean(ConsumersApplication.class);  
        String result = bean.doSayHi("张三");  
        System.out.println(result);  
  
    }  
  
    public String doSayHi(String name) {  
        return sayHello.sayHello(name);  
    }


返回并打印 “Hello 张三”, 调用成功.
至此跑通了springboot + dubbo + zookeeper;

一些坑

需要注意的是

  1. 不知道是否是3.0.8版本的原因, 在注解@EnableDubbo(scanBasePackages = {"com.exceedy.dubbotest.dubbotestinterface.service"}) 中加入扫描包启动后一直注册不了,只要在配置文件中配置了才能注册到注册中心
  2. 3.0.8版的dubbo只支持zookeeper3.4.x系列版本, 所以安装时要注意, 并且zookeeper3.4.x系列版本只支持jdk8, 所以jdk也要注意不能太高
    ps: 图片中用的是3.7.1版本,就是因为先安装的zookeeper, 不知道dubbo不支持,所以用成了3.7.1, 而想跑通就必须先安装zookeeper, 后面博主又换成了3.4.9, 唉,都是泪哇
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

AntvictorPlus

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

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

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

打赏作者

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

抵扣说明:

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

余额充值