快速搭建-分布式远程调用框架搭建-dubbo+zookper+springboot demo 演示
文章目录
简介
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/zookeeper 3 ,启动 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 --permanent 2 重启防火墙 使用规则生效 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
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.7</version> <relativePath/> <!-- lookup parent from repository --> </parent>
-
dubbo
<dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.7.13</version> </dependency> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-registry-zookeeper</artifactId> <version>2.7.13</version> </dependency>
-
zookeeper
<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>
-
zckclint
<!--zookeeper客户端--> <!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient --> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> <version>0.1</version> </dependency>
-
curator
<dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId> <version>4.2.0</version> <exclusions> <exclusion> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> </exclusion> </exclusions> </dependency>
问题
解决日志冲突
SLF4J: Class path contains multiple SLF4J bindings.
解决方案
排除冲突的日志
<!--zookeeper 服务端-->
<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>
测试用例
@SpringBootTest
@RunWith(SpringRunner.class)
class ConsumerServerApplicationTests {
@Autowired
private UserService userService;
@Test
void contextLoads() {
String providerTicket = userService.getProviderTicket();
System.out.println(providerTicket);
}
}
测试pom依赖
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
测试结果
文章来源: kangshihang.blog.csdn.net,作者:康世行,版权归原作者所有,如需转载,请联系作者。
原文链接:kangshihang.blog.csdn.net/article/details/124865705
- 点赞
- 收藏
- 关注作者
评论(0)