> 文档中心 > 快速搭建-分布式远程调用框架搭建-dubbo+zookper+springboot demo 演示

快速搭建-分布式远程调用框架搭建-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框架,它提供了三大核心能力:

  1. 面向接口的远程调用
  2. 智能容错和负载均衡
  3. 服务注册和服务
  4. 调用过程
    快速搭建-分布式远程调用框架搭建-dubbo+zookper+springboot demo 演示

远程通信框架(RPC)

  1. provider 服务提供者
  2. consumer 服务消费者
  3. registry 注册中心
  4. monitor 监测中心

什么是zookeeper

  1. 服务注册中心

zookeeper安装

环境准备

  1. 下载zookeeper安装包

​ https://zookeeper.apache.org/releases.html zookeeper 官网下载地址 3.5.9 以上

https://archive.apache.org/dist/zookeeper/ 老版本下载地址 3.3.3-3.8.0

快速搭建-分布式远程调用框架搭建-dubbo+zookper+springboot demo 演示

3.4.14 版本下载直通车:https://archive.apache.org/dist/zookeeper/zookeeper-3.4.14/
快速搭建-分布式远程调用框架搭建-dubbo+zookper+springboot demo 演示

上传到Linux服务器
快速搭建-分布式远程调用框架搭建-dubbo+zookper+springboot demo 演示

  1. 解压:

    tar zxvf zookeeper-3.4.14.tar.gz 

快速搭建-分布式远程调用框架搭建-dubbo+zookper+springboot demo 演示

  1. 启动

    1 ,复制 conf 文件夹下面的 zoo_sample.cfg 改名为 zoo.cfg 即可。因为没有配置文件,zookeeper 无法启动2 创建 dataDir 的临时目录  mkdir -p /tmp/zookeeper3 ,启动  sh zkServer.sh start

    启动成功:ps aux|grep zookeeper

快速搭建-分布式远程调用框架搭建-dubbo+zookper+springboot demo 演示

  1. 开放防火墙端口 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
  2. 使用zkCli.sh 测试

    1. ls / 列出zookeeper 根下保存的所有节点

      1. 使用客户端链接zookeeper

        sh zkCli.sh

      ls /

快速搭建-分布式远程调用框架搭建-dubbo+zookper+springboot demo 演示

  1. 创建一个节点

    create -e /kangshihang 123  //创建一个kangshihang 节点  值为 123

快速搭建-分布式远程调用框架搭建-dubbo+zookper+springboot demo 演示

  1. 获取指定节点 值

    get /kangshihang

快速搭建-分布式远程调用框架搭建-dubbo+zookper+springboot demo 演示

dubbo-admin(源码jar运行)安装

dubbo本身并不是一个服务软件。它其实就是一个jar包,能够帮助你的java程序链接到zookeeper ,利用zookeeper消费,提供服务。

但是为了让用户更好的管理监控众多的dubbo服务,官方提供了一个可视化界面 dubbo-admin,这个只是用来管理的 dubbo服务的,不安装也不影响使用。

环境准备和运行

下载 源码进行 手动打成jar 包

  1. 下载地址 https://github.com/apache/dubbo-admin/tree/master

    拉取 master-0.2.0 分之下代码进行打包

快速搭建-分布式远程调用框架搭建-dubbo+zookper+springboot demo 演示

  1. idea 打开此项目-打包成jar包

快速搭建-分布式远程调用框架搭建-dubbo+zookper+springboot demo 演示

  1. 修改配置文件 application.properties 指定zookeeper 地址

快速搭建-分布式远程调用框架搭建-dubbo+zookper+springboot demo 演示

4.后台运行jar包

nohup java -jar dubbo-admin-0.0.1-SNAPSHOT.jar >dubbo-admin.log 2>&1 &

快速搭建-分布式远程调用框架搭建-dubbo+zookper+springboot demo 演示

5.测试访问管理页面

默认用户名:root

默认密码:root

注意:如果目前可用内存低于1G,可能会导致。dubbo-admin 运行一段时间后 进程自杀,这种情况可以使用Swapp 开启交换内存来解决。

快速搭建-分布式远程调用框架搭建-dubbo+zookper+springboot demo 演示

dubbo-admin(docker) 安装

环境准备和运行

  1. 搜索镜像
docker search dubbo-admin

stars 星的数越多,说明被使用的次数多。 [外链图片转存失败,源站可能有快速搭建-分布式远程调用框架搭建-dubbo+zookper+springboot demo 演示

  1. 下载最新版 镜像

    docker pull apache/dubbo-admin
  2. 运行镜像

    // 待更新

demo 演示(dubbo+zookeeper+springBoot)

服务生产者

  1. 新建项目步骤

    1. 新建空项目
    2. 新建provider-server spingboot模块
    3. 新建 cousumer-server springboot 模块
  2. 导入pom依赖

    导入 版本选择 里的对应pom依赖即可

  3. 配置文件-配置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
  4. 售票业务

服务消费者

  1. 新建项目

  2. 导入pom依赖

    导入 版本选择 里的对应pom依赖即可

  3. 配置文件-配置dubboh和zookeeper

    server.port=8002# 服务应用名字dubbo.application.name=consumer-server# 注册中心dubbo.registry.address=zookeeper://124.222.227.132:2181?timeout=60000
  4. 用户业务

  5. 调用远程 服务方法 @Reference 引用远程服务

spring @service 和dubbo @service 注解区别

  1. spring 的service注解用于把对象注入到ioc容器
  2. dubboservice 注解用于将服务注册到 zookeeper服务上

版本选择

服务端对应 zookeeper 版本

​ version: 3.4.14

快速搭建-分布式远程调用框架搭建-dubbo+zookper+springboot demo 演示

  1. springboot

     org.springframework.boot spring-boot-starter-parent 2.6.7      
  2. dubbo

           org.apache.dubbo     dubbo-spring-boot-starter     2.7.13       org.apache.dubbo     dubbo-registry-zookeeper     2.7.13 
  3. zookeeper

           org.apache.zookeeper     zookeeper     3.4.14                org.slf4j      slf4j-log4j12        
  4. zckclint

           com.github.sgroschupf     zkclient     0.1 
  5. curator

          org.apache.curator     curator-framework     4.2.0             org.apache.zookeeper      zookeeper        

问题

解决日志冲突

SLF4J: Class path contains multiple SLF4J bindings.

快速搭建-分布式远程调用框架搭建-dubbo+zookper+springboot demo 演示

解决方案

排除冲突的日志

         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 

测试结果

快速搭建-分布式远程调用框架搭建-dubbo+zookper+springboot demo 演示