Dubbo进阶(十三)——Dubbo入门 Demo:Spring + Zookeeper + Dubbo
了解Dubbo以后自然要搭建一个简单的Demo实现。本文采用Dubbo与Zookeeper、Spring框架的整合。主要是以下几个步骤安装Zookeeper,启动创建MAVEN项目构建DubboZookeeperSpring实现的简单Demo安装Dubbo-admin实现Dubbo服务治理。Zookeeper介绍与安装Demo中的Dubbo注册中心采用的是Zookeeper。为什么采用Zookeeper呢Zookeeper是一个分布式的服务框架是树型目录服务的数据存储能做到集群管理数据这里能很好的作为Dubbo服务的注册中心。Dubbo能与Zookeeper配合做到集群部署当提供者出现断电等异常停机时Zookeeper注册中心能自动删除提供者信息当提供者重启时能自动恢复注册数据以及订阅请求。具体的安装方法在此不一一叙述可参考博文 《ZooKeeper进阶一Zookeeper简介》、《ZooKeeper进阶二ZooKeeper的运行》。安装完成后进入到bin目录并且启动zkServer.cmd脚本中会启动一个java进程。注需要先启动zookeeper后后续dubbo demo代码运行才能使用zookeeper注册中心的功能。2. 创建MAVEN项目项目结构主要分三大模块dubbo-api: 存放公共接口dubbo-consumer: 调用远程服务dubbo-provider: 提供远程服务。下面将详细叙述代码构建过程。首先构建MAVEN项目导入所需要的jar包依赖。 需要导入的有spring,dubbo,zookeeper等jar包。创建dubbo-api的MAVEN项目(有独立的pom.xml用来打包供提供者、消费者使用)。在项目中定义服务接口该接口需单独打包在服务提供方和消费方共享。packagecom.alibaba.dubbo.demo;importjava.util.List;publicinterfaceDemoService{ListStringgetPermissions(Longid);}创建dubbo-provider的MAVEN项目(有独立的pom.xml用来打包供消费者使用)。实现公共接口此实现对消费者隐藏packagecom.alibaba.dubbo.demo.impl;importcom.alibaba.dubbo.demo.DemoService;importjava.util.ArrayList;importjava.util.List;publicclassDemoServiceImplimplementsDemoService{publicListStringgetPermissions(Longid){ListStringdemonewArrayListString();demo.add(String.format(Permission_%d,id-1));demo.add(String.format(Permission_%d,id));demo.add(String.format(Permission_%d,id1));returndemo;}}需加入公共接口所在的依赖用Spring配置声明暴露服务:?xml version1.0encodingUTF-8?beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:dubbohttp://code.alibabatech.com/schema/dubboxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd!--定义了提供方应用信息,用于计算依赖关系;在dubbo-admin或dubbo-monitor会显示这个名字方便辨识--dubbo:application namedemotest-providerownerprogrammerorganizationdubbox/!--使用 zookeeper 注册中心暴露服务注意要先开启 zookeeper--dubbo:registry addresszookeeper://localhost:2181/!--用dubbo协议在20880端口暴露服务--dubbo:protocol namedubboport20880/!--使用 dubbo 协议实现定义好的api.PermissionService接口--dubbo:serviceinterfacecom.alibaba.dubbo.demo.DemoServicerefdemoServiceprotocoldubbo/!--具体实现该接口的 bean--bean iddemoServiceclasscom.alibaba.dubbo.demo.impl.DemoServiceImpl//beans启动远程服务packagecom.alibaba.dubbo.demo.impl;importorg.springframework.context.support.ClassPathXmlApplicationContext;importjava.io.IOException;publicclassProvider{publicstaticvoidmain(String[]args)throwsIOException{ClassPathXmlApplicationContextcontextnewClassPathXmlApplicationContext(provider.xml);System.out.println(context.getDisplayName(): here);context.start();System.out.println(服务已经启动...);System.in.read();}}创建dubbo-consumer的MAVEN项目(可以有多个consumer但是需要配置好)调用所需要的远程服务通过Spring配置引用远程服务?xml version1.0encodingUTF-8?beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:dubbohttp://code.alibabatech.com/schema/dubboxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsddubbo:application namedemotest-consumerownerprogrammerorganizationdubbox/!--向 zookeeper 订阅 provider 的地址由 zookeeper 定时推送--dubbo:registry addresszookeeper://localhost:2181/!--使用 dubbo 协议调用定义好的api.PermissionService接口--dubbo:reference idpermissionServiceinterfacecom.alibaba.dubbo.demo.DemoService//beans启动Consumer,调用远程服务packagecom.alibaba.dubbo.consumer;importcom.alibaba.dubbo.demo.DemoService;importorg.springframework.context.support.ClassPathXmlApplicationContext;publicclassConsumer{publicstaticvoidmain(String[]args){//测试常规服务ClassPathXmlApplicationContextcontextnewClassPathXmlApplicationContext(consumer.xml);context.start();System.out.println(consumer start);DemoServicedemoServicecontext.getBean(DemoService.class);System.out.println(consumer);System.out.println(demoService.getPermissions(1L));}}运行项目先确保provider已被运行后再启动consumer模块运行提供者消费者成功调用提供者所提供的远程服务当然这只是一个模拟的项目实际中有多提供者多消费者情况比这要复杂的多当然只有这样才能体现dubbo的特性。Dubbo管理控制台介绍管理控制台功能路由规则动态配置服务降级访问控制权重调整负载均衡下载dubbo-admin可自行根据网上介绍安装。大致做法就是将dubbo-admin中的某个文件夹内容替换到tomcat的webapps中再运行tomcat即可。但我在实际操作中发现JDK8无法运行后来找到一个JDK8可以实现的dubbo-admin版本下载地址点我下载成功开启输入用户名、密码root后即可进入控制台首页查看消费者提供者情况查看服务提供者查看服务消费者很遗憾官方Dubbo网址早已不维护了也出现了很多更新的Dubbo比如当当网的Dubbox可以自行了解。附Zookeeper下载地址:点我下载Dubbo-admin下载地址:点我下载Dubbo-monitor下载地址:点我下载

相关新闻

如何快速备份QQ空间:GetQzonehistory完整数据保护终极指南

如何快速备份QQ空间:GetQzonehistory完整数据保护终极指南

如何快速备份QQ空间:GetQzonehistory完整数据保护终极指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 您是否曾担心QQ空间里那些珍贵的青春记忆会随着时间流逝而消失&am…

2026/8/7 17:11:25 阅读更多 →
Buzz音频转录工具终极指南:如何在本地高效完成语音转文字

Buzz音频转录工具终极指南:如何在本地高效完成语音转文字

Buzz音频转录工具终极指南:如何在本地高效完成语音转文字 【免费下载链接】buzz Buzz transcribes and translates audio offline on your personal computer. Powered by OpenAIs Whisper. 项目地址: https://gitcode.com/GitHub_Trending/buz/buzz 你是否厌…

2026/8/7 17:11:25 阅读更多 →
Chisel实战:FPGA上实现带CRC校验的UART通信模块

Chisel实战:FPGA上实现带CRC校验的UART通信模块

这类项目最值得先看的不是功能列表,而是它到底解决了硬件开发中一个什么具体问题。一个带CRC校验的UART通讯模块,核心价值在于把数据可靠性和串口通信这两个基础但关键的能力,在FPGA上用Chisel高效地实现出来。它适合两类人:一是正…

2026/8/7 17:11:25 阅读更多 →

最新新闻

终极指南:如何用Buzz实现高效离线语音转录,彻底告别网络依赖

终极指南:如何用Buzz实现高效离线语音转录,彻底告别网络依赖

终极指南:如何用Buzz实现高效离线语音转录,彻底告别网络依赖 【免费下载链接】buzz Buzz transcribes and translates audio offline on your personal computer. Powered by OpenAIs Whisper. 项目地址: https://gitcode.com/GitHub_Trending/buz/buz…

2026/8/7 18:14:50 阅读更多 →
专业音响设备系统集成与场景化解决方案推荐

专业音响设备系统集成与场景化解决方案推荐

本文为音频工程师与项目管理者提供一份覆盖十大典型场景(从会议厅到户外广场)的系统构建实战指南。我们聚焦清晰度、均匀性、分区控制等核心痛点,分享从设备选型到智能运维的完整解决方案。文中部分实践经验参考自重庆优沃科技的实际项目案例…

2026/8/7 18:14:50 阅读更多 →
G-Helper:华硕笔记本性能控制的轻量化革命,告别臃肿的官方软件

G-Helper:华硕笔记本性能控制的轻量化革命,告别臃肿的官方软件

G-Helper:华硕笔记本性能控制的轻量化革命,告别臃肿的官方软件 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vi…

2026/8/7 18:14:50 阅读更多 →
Scroll Reverser:5分钟解决Mac滚动方向混乱的终极指南

Scroll Reverser:5分钟解决Mac滚动方向混乱的终极指南

Scroll Reverser:5分钟解决Mac滚动方向混乱的终极指南 【免费下载链接】Scroll-Reverser Per-device scrolling prefs on macOS. 项目地址: https://gitcode.com/gh_mirrors/sc/Scroll-Reverser 你是否曾在MacBook触控板和外接鼠标之间切换时感到困惑&#x…

2026/8/7 18:14:50 阅读更多 →
《性能优化工程美学极致追求 最佳实践指南》

《性能优化工程美学极致追求 最佳实践指南》

《性能优化工程美学极致追求 最佳实践指南》 作者: 钱钧安 (Qin Jūn Ān) (雷万钧)技术方向: AI 推理性能调优、大模型推理优化、AI 系统性能工程 💡 导语与现场排障背景 在最近一次线上压测复盘中,我们的 AI 智能服务集群触发了 P99 延迟陡增告警。基…

2026/8/7 18:14:49 阅读更多 →
C语言中字符数组的初始化与赋值

C语言中字符数组的初始化与赋值

1.字符数组初始化 在C语言中,字符串是当做字符数组来处理的;所以字符串有两种声明方式,一种是字符数组,一种是字符指针。 char parr[] "zifuchuanshuzu"; char charr[] { z,i,f,u,c,h,u,a,n,s,h,u,z,u }; 这是字符数…

2026/8/7 18:13:49 阅读更多 →

日新闻

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南 【免费下载链接】scrcpy Display and control your Android device 项目地址: https://gitcode.com/GitHub_Trending/sc/scrcpy 想要将Android手机屏幕完美投射到电脑上,享受大屏操作的自…

2026/8/7 0:00:19 阅读更多 →
如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南

如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南

如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南 【免费下载链接】tom-select Tom Select is a lightweight (~16kb gzipped) hybrid of a textbox and select box. Forked from selectize.js to provide a framework agnostic autocomplete widget wi…

2026/8/7 0:00:19 阅读更多 →
5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件

5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件

5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件 【免费下载链接】nsz NSZ - Homebrew compatible NSP/XCI compressor/decompressor 项目地址: https://gitcode.com/gh_mirrors/ns/nsz 你是否在为Nintendo Switch游戏文件占用大量存储…

2026/8/7 0:00:19 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/6 22:02:27 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/6 22:02:27 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/6 22:02:27 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/7 17:02:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/6 22:02:28 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/7 17:02:36 阅读更多 →