前言

关于dubbo+zookeeper理论这里不在阐述,自行百度一堆。这里直接上干货!

一、前期准备

环境介绍

  • Windows 10
  • Jdk1.8
  • Maven 3.6.3
  • zookeeper 3.6.3
  • dubbo 2.7

一、关键点

  1. zookeeper安装
  2. 新版 dubbo-admin 安装配置
  3. dubbo配置

1.zookeeper安装

zookeeper-3.6.3下载
https://archive.apache.org/dist/zookeeper/zookeeper-3.6.3/

在这里插入图片描述
在这里插入图片描述

将conf目录下的zoo_sample.cfg文件,复制一份,重命名为zoo.cfg

在这里插入图片描述

在步骤2的基础上,修改zoo.cfg配置文件中zookeeper的数据文件存储位置及添加zookeeper日志文件位置(方法查错),(数据日志配置需另加),具体步骤如下

  1. 在zookeeper目录下新建tmp文件夹,在分别tmp文件夹下面新建data文件夹与log文件夹,用于存放data(数据存储)和log(数据日志)
  2. 修改conf下zoo.cfg配置中数据存储和数据日志路径
dataDir=../tmp/data
dataLogDir=../tmp/log
# 添加此配置项
admin.serverPort=8888

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

zoo.cfg配置文件参数说明
# tickTime       客户端与服务器或者服务器与服务器之间维持心跳,也就是每个tickTime时间就会发送一次心跳。通过心跳不仅能够用来监听机器的工作状态,还可以通过心跳来控制Flower跟Leader的通信时间
 
# initLimit	       集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数
 
#syncLimit         集群中flower服务器(F)跟leader(L)服务器之间的请求和答应最多能容忍的心跳数
  
# dataDir          用来存放myid信息跟一些版本,日志,跟服务器唯一的ID信息等。
 
# dataLogDir       存放事务日志的文件夹
 
# clientPort       客户端连接的接口,客户端连接zookeeper服务器的端口,zookeeper会监听这个端口,接收客户端的请求访问!这个端口默认是2181。
 
# maxClientCnxns    允许连接的客户端数目,0为不限制,通过IP来区分不同的客户端

验证zookeeper安装成功

bin目录

  • zkCli.cmd 验证是否安装成功
  • zkServer.cmd 启动zookeeper服务

在这里插入图片描述
在这里插入图片描述

出现如上图所示,即服务启动成功及zookeeper安装成功!!

2.新版 dubbo-admin 安装配置

资源的下载
https://github.com/apache/dubbo
在这里插入图片描述
下载完毕以后解压,主要文件夹有这几个
在这里插入图片描述

最新版本的dubbo-admin 当中采用了前后端分离的的设计模式 (前端vue),所以要求不光要有java的环境,还得搭建node.js的运行环境,在service开启服务后,还需在dubbo-admin-ui中开启前端的代码
需要在dubbo-admin-service当中配置zookper地址
在这里插入图片描述
在这里插入图片描述

配置默认端口,不配置的话默认是8080容易发生冲突,username,password既为登录账号密码

在这里插入图片描述

打包运行

进入到dubbo-admin-server目录下,执行命令:

需要先安装maven

mvn clean package

译成可执行的jar文件
readme文件当中有编译的命令,需要在项目的最上层文件夹执行

在这里插入图片描述

命令行执行: mvn clean package

(不行再用这个 mvn clean package -Dmaven.test.skip=true)

mvn clean package (不行再用这个 mvn clean package -Dmaven.test.skip=true)

在这里插入图片描述
在这里插入图片描述
最后看到BUILD SUCCESS说明构建成功了!

构建成功后运行,进行到dubbo-admin-server\target的目录下,执行jar包:

java -jar dubbo-admin-server-0.5.0.jar
在这里插入图片描述

前端打包运行

dubbo-admin的新版本已经采用了前后端分离的方式,所以我们部署时也要采用这种方式

进入dubbo-admin-ui目录下,执行以下命令:

npm install
npm run dev
npm run dev 成功后,会出现两个访问连接,点击任何一个都可以

在这里插入图片描述
jar包执行成功后,通过前端地址就可以进行访问了(http://localhost:8083/)

注意:

上面配置修改端口后配置也需要修改相应的端口
在这里插入图片描述

在这里插入图片描述
修改一下这里的配置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

项目搭建

1.先创建一个父项目dubbo-parent,然后引入依赖

在这里插入图片描述

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.1.6.RELEASE</version>
        </dependency>
        <!-- dubbo -->
        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>0.2.0</version>
        </dependency>
        <!-- zookeeper -->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.8</version>
        </dependency>
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.10</version>
        </dependency>
    </dependencies>
2.创建一个公共的api接口工程:common-api,然后创建一个HelloService接口

在这里插入图片描述

public interface HelloService {
 
    public String sayHello(String message);
}
3.创建一个服务提供者工程:server-provider,然后引入common-api工程,实现common-api的中HelloService接口

在这里插入图片描述

@Service(interfaceClass = HelloService.class)
public class HelloServiceImpl implements HelloService {

	public String sayHello(String message) {
		return "hello:"+message+" "+ System.currentTimeMillis();
	}
}

这个地方的@Service是Dubbo框架中的注解,然后需要指明接口
yml配置文件的配置如下:

server:
  port: 9001
dubbo:
  application:
    # 服务名称,保持唯一
    name: server-provider
    # zookeeper地址,用于向其注册服务
  registry:
    protocal: zookeeper
    address: zookeeper://127.0.0.1:2181
    #address: zookeeper://127.0.0.1:2181?backup=127.0.0.1:2182,127.0.0.1:2183
  protocol:
    name: dubbo
    port: 20881
  scan:  com.pch.service
 

启动类:

@EnableDubbo
@SpringBootApplication
public class MainApplication {
	public static void main(String[] args) {
		SpringApplication.run(MainApplication.class,args);
	}
}
4.创建一个服务消费者工程:server-consumer,然后引入commin-api工程,然后创建一个控制器

在这里插入图片描述

@RestController
public class HelloController {

	@Reference
	private HelloService helloService;

	@RequestMapping("/test")
	public String sayHello(String message){
		return helloService.sayHello("yes");
	}
}

这个地方需要注意下,一定要使用dubbo的@reference注解,不然消费者就不能注册到dubbo中

在application.yml中配置

server:
  port: 9002
dubbo:
  application:
    # 服务名称,保持唯一
    name: server-consumer
    # zookeeper地址,用于向其注册服务
  registry:
    protocal: zookeeper
    address: zookeeper://127.0.0.1:2181
    #address: zookeeper://127.0.0.1:2181?backup=127.0.0.1:2182,127.0.0.1:2183
  scan:
    base-packages: com.pch.controller
    

启动类:

@EnableDubboConfig
@SpringBootApplication
public class MainApplication {
	public static void main(String[] args) {
		SpringApplication.run(MainApplication.class,args);
	}
}
5.启动server-provider和server-consumer服务

启动完成后就会在dubbo的页面看到服务的提供者,到此就搭建完成了
在这里插入图片描述
测试消费端接口的调用:
在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐