快速搭建-分布式远程调用框架搭建-dubbo+zookper+springboot demo 演示
文章目录
- 简介
- zookeeper安装
-
- 环境准备
- dubbo-admin(源码jar运行)安装
-
- 环境准备和运行
- dubbo-admin(docker) 安装
-
- 环境准备和运行
- demo 演示(dubbo+zookeeper+springBoot)
-
- 服务生产者
- 服务消费者
- 版本选择
- 问题
-
- 解决日志冲突
- 解决方案
- 测试用例
简介
https://dubbo.apache.org/zh/docsv2.7/user/preface/background/
什么是dubbo
Apache Dubbo 是一款高性能,轻量级的开源java RPC框架,它提供了三大核心能力:
- 面向接口的远程调用
- 智能容错和负载均衡
- 服务注册和服务
- 调用过程
远程通信框架(RPC)
- provider 服务提供者
- consumer 服务消费者
- registry 注册中心
- monitor 监测中心
什么是zookeeper
- 服务注册中心
zookeeper安装
环境准备
- 下载zookeeper安装包
https://zookeeper.apache.org/releases.html zookeeper 官网下载地址 3.5.9 以上
https://archive.apache.org/dist/zookeeper/ 老版本下载地址 3.3.3-3.8.0
3.4.14 版本下载直通车:https://archive.apache.org/dist/zookeeper/zookeeper-3.4.14/
上传到Linux服务器
-
解压:
tar zxvf zookeeper-3.4.14.tar.gz
-
启动
1 ,复制 conf 文件夹下面的 zoo_sample.cfg 改名为 zoo.cfg 即可。因为没有配置文件,zookeeper 无法启动2 创建 dataDir 的临时目录 mkdir -p /tmp/zookeeper3 ,启动 sh zkServer.sh start
启动成功:ps aux|grep zookeeper
-
开放防火墙端口 2181
1 开放2181 端口 1.1 查看已经开发的端口 ,避免端口冲突 firewall-cmd --list-ports 1.2 开放2181 端口 firewall-cmd --zone=public --add-port=2181/tcp --permanent2 重启防火墙 使用规则生效firewall-cmd --reload 2(因为我使用的是腾讯云,所以还得把腾讯云的控制台防火墙端口放开 21
-
使用zkCli.sh 测试
-
ls / 列出zookeeper 根下保存的所有节点
-
使用客户端链接zookeeper
sh zkCli.sh
ls /
-
-
-
创建一个节点
create -e /kangshihang 123 //创建一个kangshihang 节点 值为 123
-
获取指定节点 值
get /kangshihang
dubbo-admin(源码jar运行)安装
dubbo本身并不是一个服务软件。它其实就是一个jar包,能够帮助你的java程序链接到zookeeper ,利用zookeeper消费,提供服务。
但是为了让用户更好的管理监控众多的dubbo服务,官方提供了一个可视化界面 dubbo-admin,这个只是用来管理的 dubbo服务的,不安装也不影响使用。
环境准备和运行
下载 源码进行 手动打成jar 包
-
下载地址 https://github.com/apache/dubbo-admin/tree/master
拉取 master-0.2.0 分之下代码进行打包
- idea 打开此项目-打包成jar包
- 修改配置文件 application.properties 指定zookeeper 地址
4.后台运行jar包
nohup java -jar dubbo-admin-0.0.1-SNAPSHOT.jar >dubbo-admin.log 2>&1 &
5.测试访问管理页面
默认用户名:root
默认密码:root
注意:如果目前可用内存低于1G,可能会导致。dubbo-admin 运行一段时间后 进程自杀,这种情况可以使用Swapp 开启交换内存来解决。
dubbo-admin(docker) 安装
环境准备和运行
- 搜索镜像
docker search dubbo-admin
stars 星的数越多,说明被使用的次数多。 [外链图片转存失败,源站可能有
-
下载最新版 镜像
docker pull apache/dubbo-admin
-
运行镜像
// 待更新
demo 演示(dubbo+zookeeper+springBoot)
服务生产者
-
新建项目步骤
- 新建空项目
- 新建provider-server spingboot模块
- 新建 cousumer-server springboot 模块
-
导入pom依赖
导入 版本选择 里的对应pom依赖即可
-
配置文件-配置dubboh和zookeeper
server.port=8001# 服务应用名字dubbo.application.name=provider-server# 注册中心dubbo.registry.address=zookeeper://124.222.227.132:2181?timeout=60000## 那些服务被注册dubbo.scan.base-packages=com.kuang.service
-
售票业务
服务消费者
-
新建项目
-
导入pom依赖
导入 版本选择 里的对应pom依赖即可
-
配置文件-配置dubboh和zookeeper
server.port=8002# 服务应用名字dubbo.application.name=consumer-server# 注册中心dubbo.registry.address=zookeeper://124.222.227.132:2181?timeout=60000
-
用户业务
-
调用远程 服务方法 @Reference 引用远程服务
spring @service 和dubbo @service 注解区别
- spring 的service注解用于把对象注入到ioc容器
- dubboservice 注解用于将服务注册到 zookeeper服务上
版本选择
服务端对应 zookeeper 版本
version: 3.4.14
-
springboot
org.springframework.boot spring-boot-starter-parent 2.6.7
-
dubbo
org.apache.dubbo dubbo-spring-boot-starter 2.7.13 org.apache.dubbo dubbo-registry-zookeeper 2.7.13
-
zookeeper
org.apache.zookeeper zookeeper 3.4.14 org.slf4j slf4j-log4j12
-
zckclint
com.github.sgroschupf zkclient 0.1
-
curator
org.apache.curator curator-framework 4.2.0 org.apache.zookeeper zookeeper
问题
解决日志冲突
SLF4J: Class path contains multiple SLF4J bindings.
解决方案
排除冲突的日志
org.apache.zookeeper zookeeper 3.4.14 org.slf4j slf4j-log4j12
测试用例
@SpringBootTest@RunWith(SpringRunner.class)class ConsumerServerApplicationTests { @Autowired private UserService userService; @Test void contextLoads() { String providerTicket = userService.getProviderTicket(); System.out.println(providerTicket); }}
测试pom依赖
junit junit 4.13 test
测试结果