前言
关于dubbo+zookeeper理论这里不在阐述,自行百度一堆。这里直接上干货!
一、前期准备
环境介绍
- Windows 10
- Jdk1.8
- Maven 3.6.3
- zookeeper 3.6.3
- dubbo 2.7
一、关键点
- zookeeper安装
- 新版 dubbo-admin 安装配置
- 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日志文件位置(方法查错),(数据日志配置需另加),具体步骤如下
- 在zookeeper目录下新建tmp文件夹,在分别tmp文件夹下面新建data文件夹与log文件夹,用于存放data(数据存储)和log(数据日志)
- 修改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的页面看到服务的提供者,到此就搭建完成了
测试消费端接口的调用:
版权归原作者 pch平凡之路 所有, 如有侵权,请联系我们删除。