spring整合dubbo-2.5.3(使用TCP广播或者zookeeper 暴露和发现服务)

Dubbo与OpenFeign:微服务通信框架选型指南 在分布式系统架构中,RPC(远程过程调用)是实现服务间通信的核心技术,其性能与设计直接影响系统效率。Dubbo作为高性能二进制协议框架,采用模块化设计,支持长连接和多种序列化方式,适合延迟敏感场景;而OpenFeign作为声明式HTTP客户端,深度集成Spring Cloud生态,遵循RESTful规范,更适合快速开发和非关键路径。通过对比协议支持、性能表现和服务治理能力,开发者可以根据业务需求选择适合的通信框架,例如Dubbo适用于核心交易链路,OpenFeign适合管理后台等场景。 阅读详情

dubbo官方文档,写的很详细

dubbo需要的jar

dubbo-2.5.3.jar
javassist-3.15.0-GA.jar
netty-3.2.5.Final.jar
zkclient-0.1.jar
zookeeper-3.5.1-alpha.jar

dubbo消费提供者

接口
package com.lp.dubbo.demo;

import java.io.Serializable;

public interface ProviderDemoService {

    public String sayHello(String name);

    public User getUser();

    static class User implements Serializable{
        private static final long serialVersionUID = 1L;
        private String name;
        private int age;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }

        @Override
        public String toString() {
            return "name=" + name + ",age=" + age;
        }
    }

}

接口实现类
package com.lp.dubbo.demo;

public class ProviderDemoServiceImpl implements ProviderDemoService {

    @Override
    public String sayHello(String name) {
        return "Hello " + name;
    }

    @Override
    public User getUser() {
        User user = new User();
        user.setName("lp");
        user.setAge(26);
        return user;
    }

}

配置文件
dubbo-provider.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
    xsi:schemaLocation="http://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">



    <!-- 具体的实现bean -->
    <bean id="demoService" class="com.lp.dubbo.demo.ProviderDemoServiceImpl" />
    <!-- 提供方应用信息,用于计算依赖关系 -->
    <dubbo:application name="xixi_provider" />

    <!-- 使用multicast广播注册中心暴露服务地址 -->
    <dubbo:registry  address="multicast://224.1.1.1:12345" />

    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="20881" />

    <!-- 声明需要暴露的服务接口 -->
    <dubbo:service interface="com.lp.dubbo.demo.ProviderDemoService" ref="demoService" />

</beans>

测试代码
package com.lp.dubbo.demo;

import java.io.IOException;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class ProviderTest {

    public static void main(String[] args) throws IOException {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("dubbo-provider.xml");
        //保证主线不会死掉
        System.in.read(); // 按任意键退出

    }

}

dubbo 服务消费者

接口(与服务提供者的接口是一模一样的)
package com.lp.dubbo.demo;

import java.io.Serializable;

public interface ProviderDemoService {

    public String sayHello(String name);

    public User getUser();

    static class User implements Serializable{
        private static final long serialVersionUID = 1L;
        private String name;
        private int age;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }

        @Override
        public String toString() {
            return "name=" + name + ",age=" + age;
        }
    }

}

配置文件 dubbo-consumer.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
    xsi:schemaLocation="http://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:application name="consumer-of-helloworld-app"  />

    <!-- 使用multicast广播注册中心发现服务地址 -->
     <dubbo:registry address="multicast://224.1.1.1:12345" />

    <!-- 生成远程服务代理,可以和本地bean一样使用demoService -->
    <dubbo:reference id="demoService" interface="com.lp.dubbo.demo.ProviderDemoService" />

</beans>

测试代码
package com.lp.dubbo.demo;

import java.io.IOException;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.lp.dubbo.demo.ProviderDemoService.User;

public class ConsumerTest {

    public static void main(String[] args) throws IOException {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("dubbo-consumer.xml");
        ProviderDemoService demoService = (ProviderDemoService)context.getBean("demoService"); // 获取远程服务代理
        User user = demoService.getUser();
        System.out.println(user);
    }

}

进行测试

先运行 ProviderTest, 再 运行 ConsumerTest。
输出结果
name=lp,age=26

上面的xml配置是使用 TCP广播进行 服务暴露和服务发现的,其实可以使用zookeeper实现暴露和服务发现,但是需要安装zookeeper,zookeeper安装教程。
如果你的zookeeper是集群,将

<dubbo:registry  address="multicast://224.1.1.1:12345" />
替换为
<dubbo:registry protocol="zookeeper" address="192.168.17.129:2181,192.168.17.129:2182,192.168.17.129:2183" /> 或者
<dubbo:registry address="zookeeper://192.168.17.129:2181?backup=192.168.17.129:2182,192.168.17.129:2183" />
服务提供者和服务消费者做相同的修改

如果你的zookeeper是单机的,将

<dubbo:registry  address="multicast://224.1.1.1:12345" />
替换为
<dubbo:registry  address="zookeeper://224.1.1.1:12345" />
服务提供者和服务消费者做相同的修改

dubbo还有很多功能,自己也在学习中,更多的信息请查看dubbo官方文档。

Dubbo与OpenFeign微服务通信框架核心对比与选型指南 在微服务架构中,RPC框架是实现服务间通信的关键组件。Dubbo和OpenFeign作为Java生态主流框架,分别采用二进制协议和HTTP协议,在传输效率与开发体验上形成鲜明对比。高性能通信通常选择基于TCP长连接的Dubbo协议,其精细的线程模型设计可有效应对高并发场景;而声明式编程的OpenFeign则更适合快速开发的RESTful集成,特别是与Spring Cloud生态深度整合的项目。从技术实现看,服务治理能力涉及注册中心支持、流量控制等核心机制,Dubbo提供更丰富的原生功能,OpenFeign则 阅读详情

相关推荐

深入解析Dubbo核心配置:<dubbo:service>与<dubbo:reference>的服务治理实战

在分布式微服务架构中,服务治理是保障系统稳定性和可靠性的核心环节。其基本原理在于通过一系列配置和策略,对服务间的调用行为进行管控,包括服务发现、负载均衡、容错处理等。这一技术价值在于能够提升系统的容错能力、优化资源利用,并确保在高并发场景下的服务可用性。典型的应用场景包括电商大促的流量洪峰、金融交易的幂等性保障以及多版本服务的灰度发布。本文聚焦于Apache Dubbo框架,深入剖析其基石——<dubbo:service>与<dubbo:reference>标签。通过拆解其工作机制,例如服务导出的协议绑定与

weixin_30252709的博客 437

SpringBoot整合Dubbo

SpringBoot集成Dubbo一、接口工程1.1、创建maven Java工程1.2、添加实体类和服务接口二、服务提供者2.1、创建springboot工程2.2、添加相关依赖2.3、配置springboot核心配置文件2.4、编写接口实现类2.5、开启dubbo配置三、服务消费者3.1、创建spring boot工程3.2、添加相关依赖3.3、配置springboot核心配置文件3.4、编写Controller3.5、开启dubbo配置测试启动zookeeper注册中心关闭防火墙运行结果 一、接口工程

zt的博客 1961

【信息科学与工程学】计算机科学与自动化——第八十一篇 Java分布式软件高并发/高可用算法01

4. 消息队列(如Kafka的Topic分区,本质是范围)。3. 若是ACCEPT事件,bossGroup线程接受连接,创建SocketChannel,并将其注册到workerGroup的一个EventLoop的Selector上,关注READ事件。1. 分布式缓存分片(如Redis Cluster)。4. 分布式文件存储(如Ceph CRUSH)。6. 调用栈的模拟(如协程)。3. 服务网格(如Istio)的基础。2. 本地缓存与集中式缓存(如Redis)的一致性维护。3. 静态数据(如配置)缓存。

weixin_49199313的博客 1238

spring boot (三) 集成dubbo

springboot集成dubbo 需要导入dubbo所需jar的依赖 <!-- dubbo dependency --> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.5.3</ve

zhuasheng 4888

dubbo最简单的组播方式实例

dubbo最简单的组播方式实例

STM32L433使用DSP库配置过程

STM32L433中有FPU,在使用中为了使用其中的部分函数,需要对其进行配置。     配置成功后做些总结,留待后续复习备忘,同时也希望有朋友像我一样使用DSP库配置时少走弯路,留作交流。

在在在的博客 4553

dubo使用注解,事务不生效

问题:在使用dubbo 2.5.3之前的版本@Service来发布服务时,当该服务中有@Transactional,服务注册不了 @Component @Service//这个service注解是dubbo的 @Transactional public class UserServiceImpl implements UserService { @Autowired private U...

守望希望 718

SAC安装与相关库文件(.so)的安装

摘要 SAC: Seismic Analysis Code 是用于地震信号处理的一套软件。 本文将介绍SAC的安装,以及安装时遇到的一些问题。主要是一些动态库(lib**.so)找不到的问题。 本文的环境 64位的 Ubuntu 16.04 64位的系统是安装出现问题的主要原因 1. SAC获取与安装 SAC 的安装,只需要解压,然后修改环境变量即可!!!不需要任何编译!!! 1.1. SAC 获取与解压 SAC软件获取地址:http://ds.iris.edu/ds/nodes/dmc/forms/s.

WangCY的博客 4336

dubbo 2.5.3 环境搭建

安装jdk, git安装maven添加环境变量生效环境变量测试java测试maven。

m0_54850467的博客 319

芒果YOLO11改进21:检测头Head篇:即插即用|新颖轻量化非对称多级压缩LADH检测头,原创改进适配YOLOv8高效检测头,检测头新颖性改进,全网首发独一份

检测头Head篇:即插即用|新颖轻量化非对称多级压缩LADH检测头,原创改进适配YOLOv8高效检测头,检测头新颖性改进,全网首发独一份

包括YOLOv5、YOLOv7、YOLOv8等模型改进 795

实现敌人跟随玩家。(Unity)

首先和玩家设置一模一样,给敌人添加一个刚体,设置一个碰撞器,并设置一个触发器。然后在对场景里面的组件添加导航网格代理并且进行bake烘焙,那样的话敌人就可以在进行烘焙的位置进行移动。创建脚本,并且挂载脚本到敌人的组件上,用代码进行实现效果,并且要挂载目标对象。

weixin_57813136的博客 1869

Dubbo原码解析(version:2.5.3)

一、启动dubbo借助spring的schemas来启动(dubbo.jar/META-INF/spring.schemas)。在dubbo.jar/META-INF/spring.handlers里配置了dubbo bean的解析类DubboNamespaceHandler。主要的有ServiceBean.java和ReferenceBean.java。   二、Dubbo Bean的注册(...

weixin_34068198的博客 295

C++ (week6、7):Linux系统编程4:网络

Linux网络:计算机网络概述、TCP协议、Socket编程、IO多路复用机制(select、epoll)、HTTP协议、进程池、线程池、大文件网络传输问题

Edward2022的博客 1431

分布式 Dubbo Zookeeper

整合文件的介绍 依赖:不强制依赖:将公共的jar放到common工程中,后期开发其他的工程需要独立的jar在该工程中在去配置。 Dao层 提供链接数据库的资源文件 提供mybatis的核心配置文件 提供mybatis与spring整合的配置文件(注意:mybatis核心配置文件中的配置项在该配置文件中都可以去配置的。) Service层 管理service的bean的配置文件(spring与dubbo整合的配置—无缝整合) 管理事务的配置文件: 注解式:简单。 声明式:save*、update*

梦想是很难很难的,所以先勇敢一点 436

天龙八部TLBB系列 - 网单用数据库修改为其他门派

专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等) --- 天龙八部修改门派

空名先生 9431

NPU性能榨取手把手教程:RK3588上YOLOv5s多线程部署与120FPS极限探索

RK3588 YOLOv5s多线程部署优化指南 本教程深入解析RK3588芯片上YOLOv5s模型的高性能多线程部署方案。RK3588作为瑞芯微旗舰AIoT芯片,内置三核NPU(6TOPS算力)和硬件加速器(RGA/VPU),为AI推理提供强大支持。通过线程池技术,我们将视频处理的读取、推理、后处理等环节解耦并行,显著提升系统吞吐量。教程详细介绍了从PyTorch到RKNN格式的模型转换流程、INT8量化方法,以及基于RKNN C++ SDK的YOLOv5推理核心实现,帮助开发者最大化发挥RK3588的AI

LXY_LOVE36的博客 974

Dubbo面试系列-01

Dubbo(读音[ˈdʌbəʊ])是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成。Dubbo提供了六大核心能力:面向接口代理的高性能RPC调用,智能容错和负载均衡,服务自动注册和发现,高度可扩展能力,运行期流量调度,可视化的服务治理与运维。Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。核心组件。

baidu_36611723的博客 228

DeerFlow 系列教程 第十二篇 | Tools 工具体系——从内置工具到 MCP 扩展

文件此工具允许 Agent 在运行时创建新的自定义 Agent。@toolsoul: str, # SOUL.md 的完整内容description: str, # Agent 的一行描述创建流程从获取agent_name写入配置文件(包含 name 和 description)写入灵魂文件SOUL.md(定义 Agent 的人格和行为)更新中的错误回滚MCP(Model Context Protocol)是一种标准协议,允许 AI Agent 连接外部工具服务器。DeerFlow 通过。

weixin_43674738的博客 181

Web相关工具和框架

如下所示,我们的服务首先向Dubbo的注册中心进行注册(发送服务的IP、端口、接口方法),消费者向注册中心订阅服务(发送所求的服务信息)以发现服务,注册中心根据消费者所求服务信息匹配对应的提供者列表给消费者,然后消费者从服务提供者地址列表中,基于软负载均衡算法选一台服务提供者进行调用。Dubbo:A服务能提供3种服务功能(接口),B服务能提供4种服务功能,C服务能提供5种服务功能,A服务也许需要使用B服务的功能,B服务需要使用C服务的功能,那让我们组合一波服务搞点事情吧。

milanleon的专栏 434

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【系统架构设计师】综合知识篇

本文是软考系统架构设计师备考笔记,系统梳理了考试核心知识点,重点涵盖中间件技术、缓存问题和解决方案。主要内容包括: 中间件概述:定义位于OS与应用间的软件层,分类包括数据库访问、RPC、消息队列等,分析7大技术优点。 消息中间件:对比RabbitMQ/Kafka/RocketMQ特性,详解点对点和发布订阅模型,列举异步解耦、流量削峰等典型场景。 Redis缓存:介绍单线程模型、5种数据结构,重点分析RDB/AOF持久化机制和集群高可用方案。 缓存三大问题:通过流程图解析雪崩(随机过期时间/熔断降级)、穿透(

你的博客 883

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

dubbo注解的配置方式

1.在使用dubbo开发中我们有使用到注解的配置方式,相对来说比较简单,所以写下注解的配置方式方便更多的人。 2.使用的jar有dubbo-2.5.3,zkClient-0.3,zookeeper-3.4.5。 3.dubbo生产者的配置信息      xmlns="http://www.springframework.org/schema/beans"        xm

yyGodLike的博客 770

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Dubbo初次使用(广播形式)

分布式项目把所有的模块都拆分成了独立的项目,分为业务层、服务层。而业务层和服务层没有在一个项目中,无法直接连接,而其他的项目可以项目依赖,直接导入依赖即可,这就出现了一个问题,业务层访问service层时,因为没有相互依赖,找不到对应的类,这是我们就需要使用Dubbo作为中间件。

m0_67391401的博客 2725

dubbo实战之二:与SpringBoot集成

org.apache.dubbo dubbo-spring-boot-starter org.springframework.boot spring-boot-maven-plugin ${springboot.version} 配置文件application.yml,要注意的是registry.address的配置是广播模式: dubbo: application: #application-name 本模块名字 name: springboot-multicast-provide.

m0_66789766的博客 370

Dubbo的广播模式调用失败问题

1.2、consumer端配置 生产者端能启动,但是消费者端调用测试代码,没有执行测试代码。直接报错 1.2、consumer端配置 在测试类中注入远程接口的时候加上调用服务的地址和端口,就是消费者端的dubbo开启的地址和端口。直接连接调用。测试结果正确。仔细阅读官网文档发现问题所在: 设置如下: 最后问题解决......

weixin_49698553的博客 1448

深度解析dubbo集群之快速失败与广播调用实现

本文基于dubbo v2.6.x 文章目录1. 介绍2. 配置3. FailfastClusterInvoker源码解析4. BroadcastClusterInvoker源码解析5.总结 1. 介绍 本文主要是讲解下dubbo集群 快速失败与广播 实现(为了节省文章资源,咱们一块讲解,),首先说下快速失败怎么一回事,比如说服务调用者在进行远程调用的时候,如果出现了异常,它不像我们在《深度解析dubbo集群之失败重试实现》一文中讲解的失败重试一样,而是失败就抛出异常,达到快速失败的效果,其对应的invoke

猿上生活 3214
上一篇: zookeeper学习-3(如何使用zookeeper进行集群管理-java版本)
下一篇: dubbo-monitor-simple-2.5.3-assembly 简易监控中心安装
三易的博客
博客等级 码龄15年 42粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值