Spring Boot整合Dubbo+ZooKeeper

Spring Boot整合Dubbo+Zookeeper实现RPC调用 通过一个示例说明Dubbo+Zookeeper在Spring Boot中的应用。 阅读详情

GitHub:SpringBootDemo
Gitee:SpringBootDemo
微信公众号:在这里插入图片描述

0 开发环境

  • JDK:1.8
  • Spring Boot:2.7.18
  • ZooKeeper:3.9.2
  • Dubbo-Admin:0.6.0

1 安装ZooKeeper

1.1 下载压缩包

下载地址:https://zookeeper.apache.org/releases.html

选择一个版本下载即可

在这里插入图片描述

然后

在这里插入图片描述

1.2 下载完成后解压

1.3 新建data、log目录

在安装根目录下新建data文件夹和log文件夹

在这里插入图片描述

1.4 修改zoo.cfg

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

在这里插入图片描述

修改zoo.cfg配置文件,将 dataDir=/tmp/zookeeper 修改成zookeeper安装目录所在的data文件夹,再添加一条数据日志的配置(根据自己的安装路径修改)

在这里插入图片描述

1.5 启动服务端

进入bin目录,双击zkServer.cmd,启动服务端程序

在这里插入图片描述

控制台显示binding to port 0.0.0.0/0.0.0.0:2181,表示服务端启动成功

在这里插入图片描述

1.6 启动客户端

双击zkCli.cmd,启动客户端程序

控制台出现Welcome to ZooKeeper!,表示客户端启动成功

在这里插入图片描述

1.7 测试

在客户端页面,可以使用linux命令进行操作

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

#创建一个test节点,值为123
create -e /test 123

#获取test节点的值
get /test

在这里插入图片描述

2 安装Dubbo-Admin

Dubbo其实是一个jar,能够帮助Java程序连接到ZooKeeper,并利用ZooKeeper消费、提供服务。

为了让用户更好的管理监控众多的Dubbo服务,官方提供了一个可视化的监控程序Dubbo-Admin。该监控程序不安装并不影响Dubbo的使用。

2.1 下载压缩包

下载地址:https://github.com/apache/dubbo-admin/releases

在这里插入图片描述

2.2 下载完成后解压

2.3 修改application.properties

进入dubbo-admin-server\src\main\resources目录,修改application.properties,设置zookeeper地址dubbo.registry.address

这里默认就是127.0.0.1:2181,无需修改

#
# ...其他配置...
#

server.port=38080
dubbo.protocol.port=30880
dubbo.application.qos-port=32222

# centers in dubbo, if you want to add parameters, please add them to the url
admin.registry.address=zookeeper://127.0.0.1:2181
admin.config-center=zookeeper://127.0.0.1:2181
admin.metadata-report.address=zookeeper://127.0.0.1:2181

#
# ...其他配置...
#

admin.root.user.name=root
admin.root.user.password=root

#
# ...其他配置...
#

#dubbo config
dubbo.application.name=dubbo-admin
dubbo.registry.address=${admin.registry.address}

#
# ...其他配置...
#

2.4 打包dubbo-admin

根目录下执行Maven打包命令

mvn clean package -Dmaven.test.skip=true

第一次打包时间会有点久,等到出现BUILD SUCCESS,表示打包成功

在这里插入图片描述

2.5 启动dubbo-admin

进入dubbo-admin-server\target,启动dubbo-admin-server-0.6.0.jar服务

注:启动dubbo-admin服务时,一定要确保ZooKeeper服务是启动成功的

java -jar dubbo-admin-server-0.6.0.jar

在这里插入图片描述

2.6 测试

浏览器访问127.0.0.1:38080

在这里插入图片描述

录入用户名和密码,application.properties中默认配置的都是 root,登录成功后,进入主页

在这里插入图片描述

3 新建服务提供者

新建module spring-boot-dubbo-provider

3.1 导入依赖

        <!--    dubbo    -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>3.2.11</version>
        </dependency>

        <!--    zookeeper 客户端    -->
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>

        <!--    zookeeper 服务端    -->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.9.2</version>
        </dependency>

        <!--    zookeeper 服务端相关依赖    -->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>5.6.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>5.6.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-x-discovery</artifactId>
            <version>5.6.0</version>
        </dependency>

3.2 配置dubbo

#访问端口
server:
  port: 8090
#
dubbo:
  #服务应用名字
  application:
    name: dubbo-provider
  #注册中心地址
  registry:
    address: zookeeper://127.0.0.1:2181
  #需注册的服务
  scan:
    base-packages: cn.wbnull.springbootdemo.service

3.3 新建服务

package cn.wbnull.springbootdemo.service;

public interface UserInfoService {

    public String getUserInfo();
}

服务实现类

package cn.wbnull.springbootdemo.service;

import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.stereotype.Service;

@DubboService
@Service
public class UserInfoServiceImpl implements UserInfoService {

    @Override
    public String getUserInfo() {
        return "name:zhangsan;age:18";
    }
}

使用**@DubboService**后,可以被扫描到,在项目已启动就自动注册到注册中心

注意:@Service在dubbo包下也有一个,不要用错了

3.4 测试

启动服务,服务启动成功后,可以在Dubbo-Admin中看到注册的服务

在这里插入图片描述

查看详情,可以看到注册的服务的接口等信息

在这里插入图片描述

4 新建服务消费者

新建module spring-boot-dubbo-consumer

4.1 导入依赖

与3.1中服务提供者spring-boot-dubbo-provider导入依赖包相同

4.2 配置dubbo

#访问端口
server:
  port: 8091
#
dubbo:
  #消费者名字
  application:
    name: dubbo-consumer
  #注册中心地址
  registry:
    address: zookeeper://127.0.0.1:2181

4.3 新建服务

package cn.wbnull.springbootdemo.service;

import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.stereotype.Service;

@Service
public class UserService {

    /**
     * 使用服务提供者提供的服务,需要先从注册中心中获取服务
     */
    @DubboReference
    public UserInfoService userInfoService;

    public String getUserInfo() {
        return userInfoService.getUserInfo();
    }
}

要使用服务提供者提供的服务,需要先从注册中心中获取服务,获取服务使用**@DubboReference**注解。

这里**@DubboReference注解跟@Autowired**注解用法是类似的,只是@Autowired注解是自动装配本地的服务,@DubboReference是远程引用服务提供者的服务。

在使用@DubboReference注解远程引用时,会发现本模块中并没有UserInfoService服务,无法使用,有两种方法解决

  • 1、使用pom坐标
  • 2、定义路径相同的接口名

以方法2为例,新建UserInfoService

package cn.wbnull.springbootdemo.service;

public interface UserInfoService {

    public String getUserInfo();
}

4.4 测试

新建测试类

@SpringBootTest(classes = DubboConsumerApplication.class, webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
public class DubboConsumerApplicationTest {

    @Autowired
    public UserService userService;

    @Test
    public void contextLoads() {
        String userInfo = userService.getUserInfo();
        System.out.println("用户信息:" + userInfo);
    }
}

启动测试类,控制台上成功打印

在这里插入图片描述

至此,服务消费者成功从注册中心中获取到了服务提供者提供的服务,并成功调用其接口。

4.5 服务关系

我们再直接启动spring-boot-dubbo-consumer服务,服务启动成功后,可以在Dubbo-Admin中看到消费者和提供者的服务调用关系

在这里插入图片描述

Spring Boot整合Dubbo+Zookeeper成功,且测试通过

Springboot整合Dubbo与zookeeper 构建一个Empty Project(构建任何maven项目都可以,没有过多的限制,这里是为了更加方便易懂),将名字设置为springboot-dubbo。进入项目后,将springboot-dubbo模块删除,方便后面的观看。 阅读详情

相关推荐

Dubbo+Spring Boot+ZooKeeper分布式系统整合实战

Apache Dubbo 是一款高性能、轻量级的开源分布式服务框架,广泛应用于微服务架构中。其核心功能包括服务注册与发现、远程通信、负载均衡、容错处理及服务治理等模块,帮助开发者高效构建可扩展的分布式系统。Dubbo 采用服务提供者(Provider)与消费者(Consumer)的架构模型,借助注册中心(如 ZooKeeper、Nacos)实现服务的自动注册与发现。同时,Dubbo 支持多种协议(如 Dubbo、HTTP、gRPC)与序列化方式,具备良好的灵活性与扩展性。

weixin_34718952的博客 1032

SpringBoot整合Dubbo+zookeper[详细版]

SpringBoot整合Dubbo+Zookeeper组合超详细实战.dubbo-spring-boot-starter总的来说,dubbo就是一个远程调用服务,而zookeeper则是注册中心,就是将服务通过通过dubbo放入到zookeeper中,还能从dubbo中取出zookpper中的数据。通过前面的Dubbo架构图可以看到,Registry(服务注册中心)在其中起着至关重要的作用。Dubbo官方推荐使用Zookeeper作为服务注册中心。

wang20000102的博客 2566

springboot集成dubbo、zookeeper,基于注解形式+源代码+文档说明

本项目是集成dubbo和zookeeper的一个练习项目,基于注解的配置形式,没有xml文件 ## 环境 #### 操作系统:ubuntu 16.04 LTS #### 开发工具:Idea ## 搭建过程 ### 一、安装zookeeper #### 1、下载zookeeper源码包 > 官方下载地址: http://apache.fayea.com/zookeeper/ > 本项目使用的版本: zookeeper-3.5.1-alpha.tar.gz #### 2、安装zookeeper > 1、解压安装包到指定目录 >  `sudo tar -zxvf zookeeper-3.5.1-alpha.tar.gz -C /opt/` > 2、拷贝一份zoo_sample.cfg,重新命名为zoo.cfg > `cd /opt/zookeeper-3.5.1-alpha/conf/` > `cp zoo_sample.cfg zoo.cfg` > 3、编辑zoo.cfg,主要配置dataDir和dataLogDir、server,如下 > `# The number of milliseconds of each tick`<br> ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

SpringBoot整合dubbo+zooker搭建分布式服务(超详细)

Dubbo简介 dubbo是什么 Apache Dubbo 是一款微服务开发框架,它提供了 RPC通信与微服务治理两大关键能力。这意味着,使用 Dubbo 开发的微服务,将具备相互之间的远程发现与通信能力,同时利用 Dubbo 提供的丰富服务治理能力,可以实现诸如服务发现、负载均衡、流量调度等服务治理诉求。同时Dubbo 是高度可扩展的,用户几乎可以在任意功能点去定制自己的实现,以改变框架的默认行为来满足自己的业务需求。 dubbo基本工作原理 Contaniner:容器 Provider:服

weixin_45344924的博客 4921

随机森林的可解释性分析(含python代码)

随机森林的“黑箱”特性逐渐凸显,这使得我们难以理解和解释模型内部的工作机制。对于许多应用场景而言,仅仅获得高准确率的预测结果是不够的;了解预测背后的逻辑同样重要,特别是在医疗诊断、金融风险评估等领域。因此,对随机森林进行可解释性分析变得尤为重要。

m0_59257547的博客 3848

Intouch间接变量(扩展)

间接变量只是Intouch提供给开发者的便捷方式之一,并不是所有情况都一定要使用间接变量,有时候用条件语句或者内存变量的方式也能起到类似的作用。

weixin_41571357的博客 2168

SpringBoot整合Dubbo+Zookeeper

学习Dubbo前你要了解这些。

追寻心的步伐 1749

k8s重装1.28.2+calico+踩坑收集+InPlacePodVerticalScaling

它提供了从镜像构建(通过 Dockerfile)、镜像管理(上传、下载、存储等)、容器创建、运行、网络配置(可以为容器分配自定义的网络,如 bridge 网络、host 网络等)到容器编排(通过 Docker Compose 可以简单地编排多个容器的启动和关联关系)等一整套完整的解决方案。它的核心功能是启动和管理容器的生命周期。sudo apt update这个可以经常用,是来更新软件包的,它不下载,所以没风险,但是经常会报错,别问,问就是某种强大的力量,所以用镜像或者代理或者巴拉巴拉。

SsjjsS2019的博客 2553

Spring boot整合dubbo+zookeeper

下文将简述springboot整合dubbo+zookeeper实现api+provider+consumer模式,Api用于定于interface,provider和consumer依赖Api,provider实现api接口,consumer调用provider。对比api模块增加了qos-enable和qos-port两个属性,QoS是Dubbo提供的运维和管理功能,表示开启;当dubbo-api、dubbo-provider和dubbo-consumer都启动完成后,使用消费者接口访问。

qq_38527427的博客 1793

DTS中video-interfaces接口详解

视频数据管道通常由外部设备组成,例如通过I2C、SPI或UART总线控制的摄像机传感器,以及SoC内部IP块(包括视频DMA引擎和视频数据处理器)。 SoC内部块由DT节点描述,与其他SoC块放置方式类似。外部设备表示为它们各自总线控制器节点的子节点,例如I2C。 所有视频设备上的数据接口都由它们的子“port”节点描述。端口的配置取决于参与数据传输的其他设备,并由“endpoint”子节...

龙图腾的博客 9008

Sigrity System Explorer Transient Analysis模式进行瞬态仿真分析操作指导-单端信号

Sigrity System Explorer Transient Analysis模式可以用于瞬态仿真分析,通过搭建简易拓扑用于前仿真分析通道的时域性能,下面搭建一个简易的单端拓扑进行说明,以下图为例,准备好发送接收端的IBIS模型, (ibis_se.ibs,本例发送接收端都使用相同的IBIS模型),以及传输线的S参数模型(welement_se.sp)最上方的图形界面是传输线的模型,本例是一个上下都有参考平面的带状线,右侧的梯形是蚀刻角度,根据W1和W2以及铜厚来确定。

weixin_54787054的博客 417

Dubbo ZooKeeper Spring Boot整合

Dubbo 是一款高性能的 Java RPC 框架,用于快速开发高性能的服务。

weixin_41562028的博客 1591

解决宿主机Ping不通虚拟机的问题

在使用虚拟机的过程中,我们常常会遇到宿主机和虚拟机之间无法相互通信的问题。具体来说,我们要查看虚拟机和宿主机的 IP 地址,然后尝试进行 Ping 测试。在某些情况下,我们可能发现 Ping 虚拟机不通,接下来我将分享如何解决这个问题。

howard2005的专栏 7万+

Spring Boot 整合 Zookeeper和Dubbo 的详解

DD

wang13145的博客 1289

让 RAP 弹窗参数真正变成必填:Excel Upload Action 的两种实现路径

摘要 在RAP应用中,action弹窗参数经常缺乏必填校验,导致用户体验差。本文提出两种解决方案:1)在action实现中手动校验,简单但交互不流畅;2)通过root abstract entity和abstract BDEF建模,利用field(mandatory)实现框架级校验,推荐此长期方案。后者将约束集中到模型层,使UI与执行期校验一致,特别适合ABAP Cloud环境。以Excel导入为例,强制填写备注和明确选择试运行,可避免审计问题,提升系统可靠性。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 198

2026年数学建模国赛B题无线电干扰源的快速自动定位与清除 论文详细解析

数学建模竞赛论文无线电干扰源的快速自动定位与清除2026 年高教社杯全国大学生数学建模竞赛 B 题完整求解论文交会定位、极大极小测点优化、自适应多频道搜索与定向源恢复的统一建模模型、算法、代码、图表与验证一体化交付本文研究圆形目标区域中多个未知无线电干扰源的快速检测、定位与清除问题,建立了由误差楔交会模型、角度观测信息模型、分层勘测模型、鲁棒射线交会模型和定向覆盖反馈模型组成的统一求解框架。模型同时覆盖题目中的四个子问题:多测向射线形成的多边形定位区域及直径、第二个测点的极大极小优选、全向源自动搜索清除策略

YOLO 358

如何用Spring Boot 整合Dubbo + Zookeeper 实现分布式

RPC【Remote Procedure Call】是指远程过程调用,是一种进程间通信方式,他是一种技术的思想,而不是规范。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。即程序员无论是调用本地的还是远程的函数,本质上编写的调用代码基本相同。基于SpringBoot项目整合Dubbo + Zookeeper 实现消费者消费服务提供者的服务消费者为订单模块。

xxxzzzqqq_的博客 1112

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Spring Boot 整合Dubbo + Zookeeper 实现分布式 消费者与服务者的业务调用

服务提供者在启动时,向注册中心注册自己提供的服务服务消费者在启动时,向注册中心订阅自己需要的服务注册中心返回服务提供者地址列表给服务消费者,如果有变更,注册中心将基于长连接推送变更数据给服务消费者服务消费者,从服务提供者地址列表中,基于软负载均衡算法,选一台服务提供者进行调用,如果调用失败,再选另一台调用服务消费者和服务提供者,再内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心二、什么是RPC?

m0_58269520的博客 1110

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Spring Boot 整合 Dubbo和Zookeeper

Spring Boot 整合 Dubbo和Zookeeper Spring Boot 整合 Dubbo和Zookeeper 环境介绍 Zookeeper 安装 启动 Dubbo admin 搭建 创建主maven项目 创建子spring boot项目 环境介绍 zookeeper 安装 dubbo-ad...

weixin_30883777的博客 385

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Spring Boot 整合Dubbo + Zookeeper 实现分布式 消费者+服务者业务的调用

Dubbo是阿里出品的分布式开源服务框架,阿里已交予Apache开源组织基金会Apache Dubbo 是一款高性能、轻量级的开源RPC服务框架Dubbo官网RPC【Remote Procedure Call】是指远程过程调用,是一种进程间通信方式,他是一种技术的思想,而不是规范。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。即程序员无论是调用本地的还是远程的函数,本质上编写的调用代码基本相同。

z1ztai的博客 1214

spring boot下整合dubbo和zookeeper

本章主要说下dubbo和zookeeper的概念,以及在基于springboot框架搭建dubbo+zookeeper分布式服务架构。 来一个比较懵的官方解释: dubbo框架:dubbo是阿里巴巴soa服务化治理方案的核心框架,是一个分布式服务的框架,致力于提高性能和透明化rpc远程服务调用方案,以及soa服务治理方案。 确实懵,什么是soa呢,什么是rpc呢??? soa:面向服务的架构...

Suneey专栏 2856

spring boot手把手整合dubbo(zookeeper作为注册中心)

dubbo整合快速起步 https://github.com/alibaba/dubbo-spring-boot-starter 创空工程作为存放路径: 创服务接口: 开发接口模块:maven打jar包形式 然后打jar包 建立消费者和提供者: 加入maven依赖: <dependency> <groupId>com.alibaba.spring.boot</groupId> <artifactId>d

xtho62的博客 432

Spring Boot 整合dubbo(dubbo-spring-boot-starter)+zookeeper入门demo示例

Spring Boot 整合dubbo(dubbo-spring-boot-starter)+zookeeper入门demo示例 本文是将Spring Boot与阿里巴巴的开源dubbo-spring-boot-starter整合示例,而非官方Apache的incubator-dubbo-spring-boot-project,两种开源框架的配置和使用方式有差别,这里选用阿里巴巴自家更新的版本。...

qipeng6的博客 1761

spring boot 整合Dubbo/Zookeeper

spring boot 整合Dubbo/Zookeeper 只是一个简单的整合deno 只做思路分析叙述,具体功能不做描述。 一、技术介绍 •ZooKeeper ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。 •Dubbo Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看

小小小小小真的博客 289

Spring Boot + Zookeeper + Dubbo + Seata 整合后,打jar包无法启动

前言 Spr...

lishuzhen5678的博客 666
上一篇: Spring Boot引入外部jar包并打包
下一篇: Spring Boot整合Elasticsearch
程序员null
博客等级 码龄11年 1304粉丝 124原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值