【Dubbo】深入理解Apache Dubbo(二):开发第一个Dubbo应用程序

Apache Dubbo 架构与实战 Dubbo、SOA、架构演变、架构、处理流程、开发实战、配置方式、XML配置Dubbo、dubbo-admin、作用、控制台安装、使用、Dubbo配置项说明、dubbo:application、dubbo:registry、dubbo:protocol、dubbo:service、dubbo:reference、 dubbo:method、dubbo:service和dubbo:reference详解 阅读详情

1. 引言

本篇侧重用代码说明Dubbo应用程序的开发及使用,通过一个简单的示例演示Dubbo应用。读者要是对Dubbo框架的基本概念还有模糊,可以先阅读
【Dubbo】深入理解Apache Dubbo(一):带你走近高性能RPC通信框架
另外本篇涉及的所有源码都已经上传到GitHub,欢迎交流学习:
Dubbo应用程序实战

2. 环境配置

无论你使用的是Windows、Linux还是Mac OS操作系统,请保证已经配置如下的环境:JDK(必须,推荐1.8)、IDE(推荐IDEA)、Maven(推荐版本3.x.x)以及ZooKeeper(不是必须,但生产环境已经大量使用ZooKeeper作为注册中心,为了深入理解Dubbo,建议配置)。
另外,为了更好的学习Dubbo,强烈建议clone源码学习,附GitHub地址:
https://github.com/apache/dubbo
通过git clone https://github.com/apache/dubbo命令将Dubbo源码clone到本地之后,用IDEA打开。所有模块的测试都在对应的test文件夹下,可以在对应的源码中打好断点,然后利用测试类进行单元调试,有利于更加深入的理解Dubbo。

3. 开发Dubbo应用程序

在本节中,笔者将动手快速构建一个完整的服务器和客户端程序。程序功能很简单:服务器接收客户端的请求,然后将消息不做任何处理返回给客户端。但是麻雀虽小五脏俱全,这个示例将很有助于我们理解Dubbo的运行过程。应用程序编写有三种方式:XML、注解和API。

3.1 基于XML配置的方式

1.编写服务端
先定义服务暴露的接口EchoService。
程序清单3-1

/**
 * @author Carson Chu
 * @email 1965704869@qq.com
 * @date 2020/1/31 13:53
 * @description
 */
public interface EchoService {

    /**
     * @description 发送给客户端的信息
     * @params [msg]
     * @returns java.lang.String
     */
    String productMsg(String msg);
}

然后实现该接口。
程序清单3-2

/**
 * @author Carson Chu
 * @email 1965704869@qq.com
 * @date 2020/1/31 13:53
 * @description
 */
public class EchoServiceImpl implements EchoService {
    @Override
    public String productMsg(String msg) {
        String curTime = new SimpleDateFormat("HH:mm:ss").format(new Date());
        System.out.println("[" + curTime + "] Hello " + msg
                + ", request from client: " + RpcContext.getContext().getRemoteAddress());
        return msg;
    }
}

接下来,就是基于XML配置的核心了,将配置文件echo-provider.xml放到项目资源目录resources/spring下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
       xmlns="http://www.springframework.org/schema/beans"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">

    <!-- 服务提供方应用名称, 方便用于依赖跟踪 -->
    <dubbo:application name="echo-provider"/>

    <!-- 使用本地zookeeper作为注册中心 -->
    <dubbo:registry address="zookeeper://127.0.0.1:2181"/>

    <!-- 只用Dubbo协议并且指定监听端口 20880 -->
    <dubbo:protocol name="dubbo" port="20880"/>

    <!-- 通过xml方式配置为bean, 让spring托管和实例化 -->
    <bean id="echoService" class="com.pers.server.impl.AnnotationServiceImpl"/>

    <!-- 声明服务暴露的接口,并暴露服务 -->
    <dubbo:service interface="com.pers.server.AnnotationService" ref="echoService"/>

</beans>

之后,我们还需要编写一个类用于加载该配置文件并启动Dubbo服务:
程序清单3-3

/**
 * @author Carson Chu
 * @description
 */
public class EchoProvider {

    public static void main(String[] args) throws Exception {
        // #1 指定服务暴露配置文件
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"spring/echo-provider.xml"});
        // #2 启动spring容器并暴露服务
        context.start();

        System.in.read();
    }
}

2.编写客户端
客户端也是通过加载XML配置文件的:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
       xmlns="http://www.springframework.org/schema/beans"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">

    <!-- 服务消费方应用名称, 方便用于依赖跟踪 -->
    <dubbo:application name="echo-consumer"/>

    <!-- 使用本地zookeeper作为注册中心 -->
    <dubbo:registry address="zookeeper://127.0.0.1:2181"/>

    <!-- 指定要消费的服务 -->
    <dubbo:reference id="echoService" check="false" interface="com.pers.server.EchoService"/>

</beans>

但此步需要保证client依赖server端的服务(因为EchoService属于server模块),在IDEA中的配置步骤是:

  1. 打开Project Structure,
    在这里插入图片描述
  2. 在弹出的窗口按照下图依次勾选:
    在这里插入图片描述
  3. 最后在弹出的窗口选择你要依赖的模块,这里选择dubbo-server:

在这里插入图片描述
配置完成之后,开始编写客户端消费程序:
程序清单3-4

/**
 * @author Carson Chu
 * @description
 */
public class EchoConsumer {

    public static void main(String[] args) {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"spring/echo-consumer.xml"});
        context.start();
        EchoService echoService = (EchoService) context.getBean("echoService"); // get remote service proxy

        String status = echoService.productMsg("Hello Dubbo!");
        System.out.println("echo result: " + status);
    }
}

编写完成之后运行main方法,可以在控制台看到运行结果:
在这里插入图片描述
到这里,基于XML的方式编写Dubbo应用程序就完成了。
3. 可能遇到的问题
如果启动报错:

java.lang.NoClassDefFoundError: io/netty/channel/nio/NioEventLoopGroup

则需要引入该jar包:

            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-all</artifactId>
                <version>4.1.42.Final</version>
            </dependency>
3.2 基于注解的方式

通过XML方式配置启动Dubbo服务比较常见,另外Dubbo也支持通过注解的方式启动。通过注解的方式更加友好一点,虽然会耦合一些Dubbo框架自身的注解,但是代码重构的时候比较便利。
1. 编写服务端
该方式在定义了接口之后,只需要在接口实现类上加上注解@Service。需要注意的是,**这个@Service不是Spring框架的注解,而是Dubbo的注解。**使用注解之后,由Dubbo框架bazhege 实现类升级为Spring容器的Bean。
程序清单3-5

import com.alibaba.dubbo.config.annotation.Service;

/**
 * @author Carson Chu
 * @description
 */
@Service
public class AnnotationServiceImpl implements AnnotationService {
    @Override
    public String productMsg(String msg) {
        String curTime = new SimpleDateFormat("HH:mm:ss").format(new Date());
        System.out.println("[" + curTime + "] Hello " + msg
                + ", request from client: " + RpcContext.getContext().getRemoteAddress());
        return msg;
    }
}

不同于基于XML的方式,基于注解的方式生成Dubbo的配置信息是通过程序以及注解来实现的。
程序清单3-6

/**
 * @author Carson Chu
 * @email 1965704869@qq.com
 * @date 2020/1/31 15:30
 * @description
 */
public class AnnotationProvider {
    public static void main(String[] args) throws Exception {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ProviderConfiguration.class);
        context.start();
        System.in.read();
    }

    @Configuration
    // #1 指定扫描服务的位置
    @EnableDubbo(scanBasePackages = "com.pers.server")
    static class ProviderConfiguration {
        @Bean
        public ProviderConfig providerConfig() {
            return new ProviderConfig();
        }

        @Bean
        public ApplicationConfig applicationConfig() {
            ApplicationConfig applicationConfig = new ApplicationConfig();
            applicationConfig.setName("echo-annotation-provider");
            return applicationConfig;
        }

        @Bean
        public RegistryConfig registryConfig() {
            RegistryConfig registryConfig = new RegistryConfig();
            // #2 使用zookeeper作为注册中心,同时给出注册中心ip和端口
            registryConfig.setProtocol("zookeeper");
            registryConfig.setAddress("localhost");
            registryConfig.setPort(2181);
            return registryConfig;
        }

        @Bean
        public ProtocolConfig protocolConfig() {
            ProtocolConfig protocolConfig = new ProtocolConfig();
            // #3 默认服务使用dubbo协议,在20880端口监听服务
            protocolConfig.setName("dubbo");
            protocolConfig.setPort(20880);
            return protocolConfig;
        }
    }
}

2. 编写客户端
通过注解消费服务的时候,只需要@Reference注解标注,该注解适用于对象字段和方法。
程序清单3-7 基于注解包装消费

@Component
public class EchoConsumer {
    @Reference
    private AnnotationService annotationService;

    public String produceMsg(String msg) {
        return annotationService.productMsg(msg);
    }
}

在完成上述的消费定义之后,还需要完成基于注解的启动代码。
程序清单3-7 基于注解消费服务

/**
 * @author Carson Chu
 * @email 1965704869@qq.com
 * @date 2020/1/31 17:40
 * @description
 */
public class AnnotationConsumer {
    public static void main(String[] args) {
        // #1 基于注解配置初始化spring上下文
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ConsumerConfiguration.class);
        context.start();
        // #2 发起服务调用
        EchoConsumer echoService = context.getBean(EchoConsumer.class);
        String hello = echoService.produceMsg("Hello Dubbo!");
        System.out.println("result: " + hello);
    }

    @Configuration
    // #3 指定要扫描的消费注解,会触发注入
    @EnableDubbo(scanBasePackages = "com.pers.client")
    @ComponentScan(value = {"com.pers.client"})
    static class ConsumerConfiguration {
        @Bean
        public ApplicationConfig applicationConfig() {
            ApplicationConfig applicationConfig = new ApplicationConfig();
            applicationConfig.setName("echo-annotation-consumer");
            return applicationConfig;
        }

        @Bean
        public ConsumerConfig consumerConfig() {
            return new ConsumerConfig();
        }

        @Bean
        public RegistryConfig registryConfig() {
            RegistryConfig registryConfig = new RegistryConfig();
            // #4 使用zookeeper作为注册中心,同时给出注册中心ip和端口
            registryConfig.setProtocol("zookeeper");
            registryConfig.setAddress("localhost");
            registryConfig.setPort(2181);
            return registryConfig;
        }
    }
}

然后启动该服务,依然会看出控制台输出:result:Hello Dubbo!
3. 可能遇到的问题
如果运行的时候报错:

NoClassDefFoundError: com/alibaba/spring/util/PropertySourcesUtils

则需要引入该jar包:

        <dependency>
            <groupId>com.alibaba.spring</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>1.0.5</version>
        </dependency>
3.3 基于API的方式

该方式在大部分场景下不会直接使用,但在开发网关类的应用时,该方式则非常有用。本篇对该方式不做赘述。感兴趣的同学可以私聊我学习交流。

小结

通过以上的代码,我们已经实现了利用Dubbo服务实现客户端和服务端交互的功能。在客户端启动时发生了哪些事情呢?这里做个小结:

  • 客户端启动时会创建和Zookeeper注册中心的连接并拉取服务列表。
  • 拉取服务列表完成之后,会与远程服务建立TCP长连接。
  • 客户端发起服务调用,发送“Hello Dubbo!”给服务方,服务方不做任何处理返回给客户端。
  • 客户端收到回显消息并输出。

在实现了第一个Dubbo应用程序之后,从下一篇开始,笔者将会开始Dubbo底层架构的学习。

《深入理解Apache Dubbo与实战》第三章的阅读笔记 文章目录前言一、注册中心概述1.简介2.工作流程二、Zookeeper注册1.原理2.发布/订阅三、Redis的注册四、缓存五、设计模式 前言 本文是《深入理解Apache Dubbo与实战》第二章的阅读笔记。 第二章的主要内容是讲注册中心,书中主要围绕: 1.注册中心的工作流程 2.注册中心的数据结构 3.订阅发布的实现 4.缓存机制 5.重试机制 6.设计模式 这几个部分讲解 一、注册中心概述 1.简介 Dubbo通过注册中心实现了分布式环境中各服务之间的注册与发现。其作用如下: 1.动态加入。一个服 阅读详情

相关推荐

深入理解Apache Mina

Apache MINA(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便 apache mina 利的框架。当前发行的 MINA 版本支持基于 Java NIO 技术的 TCP/UDP 应用程序开发、串口通讯程序(只在最新的预览版中提供),MINA 所支持的功能也在进一步的扩展中。

深入理解Apache Dubbo 笔记(一)

深入理解Apache Dubbo 笔记(一) 1. 什么是Dubbo Dubbo是阿里SOA服务化治理方案的核心框架,被广泛的应用到阿里的各成员站点。Dubbo是Java类项目中卓越的框架之一。他提供了注册中心机制,解耦了消费和服务方动态问题,并提供了可靠性。采用了微内核+富插件设计思想,包括框架本身都是基于扩展点实现的。 2. Dubbo解决的问题 单体架构和垂直架构无法满足需求,分布式服务框架及流动计算框架势在必行。 Dubbo解决了几个基本的问题: 高性能、透明的RPC调用。 服务的自动注册和发

qq_40788718的博客 520

全网最全的AItium Designer 16下载资源与安装步骤

Altium Designer 除了全面继承包括Protel 99SE、Protel DXP在内的先前一系列版本的功能和优点外,还增加了许多改进和很多高端功能。该平台拓宽了板级设计的传统界面,全面集成了FPGA设计功能和SOPC设计实现功能,从而允许工程设计人员能将系统设计中的FPGA与PCB设计及嵌入式设计集成在一起。...

WQ的博客 1万+

【Dubbo】深入理解Apache Dubbo(一):带你走近高性能RPC通信框架

1. 简介 从本篇开始,笔者将会带你进入Apache顶级项目——Dubbo的学习。本篇侧重介绍Dubbo的来龙去脉,会从架构的演进过程说明Dubbo的重要性和意义。 2. 应用架构的演进过程 2.1 单体应用 1. JEE时期 特征 优点 缺点 JEE是早期提供了企业级应用开发环境的工具,整体上分为展示层、业务逻辑层和数据存储层。各层的组件都被聚合在一起运行在统一的服务器上(如To...

少侠露飞的学习笔记 3万+

机械设计师必看:如何用Autodesk Inventor高效完成钣金设计(附实战案例)

本文为机械设计师详细解析了如何利用Autodesk Inventor Professional高效完成钣金设计。文章通过一个钣金防护罩的实战案例,系统介绍了从核心设计逻辑、建模流程、参数化技巧到工程图输出的完整工作流,旨在帮助设计师掌握智能化的设计方法,显著提升从概念到制造的设计效率与准确性。

honey的博客 1182

Agent框架系列:1-低代码智能体平台深度解析Dify、Coze、n8n

Dify、Coze 和 n8n 是三大主流低代码智能体平台,各有侧重。Dify 适合企业级 AI 应用,具备强大的 RAG 和知识库管理能力,技术栈为 Python + React。Coze 由字节推出,主打零代码和快速原型开发,集成 60+ 插件,极适合非技术用户。n8n 以工作流自动化和系统集成为核心,支持 400+ 外部应用,基于 Node.js + Vue,扩展性极强。选择建议:非技术团队选 Coze,AI 应用选 Dify,复杂自动化与集成选 n8n。可根据实际需求混合使用,最大化平台优势。

3085

dubbo深入理解(1)

dubbo学习,分布式服务架构,国内最好的一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案

枕着猫咪睡觉的王子 4353

足球赛事数据API:开发者生存指南(附真实踩坑记录)

作为一个既爱看球又爱写代码的老宅男,我这些年用过的足球API比看过的比赛还多。从最初被各种API文档折磨到怀疑人生,到现在能闭着眼睛调接口,中间的血泪史够写本书了。今天就把这些经验(和教训)分享给各位同好,特别是那些正在为"老板要做个足球App"而秃头的同行们。文档清晰免费层可用响应格式规范API-Sports免费额度大方支持GraphQL有中文文档(难得!Sportmonks数据全面有Webhook支持按需付费。

Happy0970的博客 2192

Apache dubbo RPC框架 中文文档

阿里在2017年重启dubbo框架的开发,2018年初合并当当网的dubbox分支,然后进入Apache基金会孵化, 2019年5月20日宣布孵化完成。 Apachedubbo RPC框架 中文文档:http://dubbo.apache.org/zh-cn/docs/user/quick-start.html ...

宇宙浪子的专栏 466

UNITY3D万人同屏,Dots万人同屏解决方案_类萌宠宠之战

UNITY3D弹幕游戏开发,万人同屏解决方案

6472

面向RKNN平台的YOLOv11 Pose部署实战:模型转换、优化与端侧姿态估计推理

本文研究了YOLOv11 Pose模型在Rockchip RKNN平台上的部署方案。通过分析模型架构和关键技术,提出完整的转换流程,包括ONNX格式转换、检测头优化和量化配置。在RK3588硬件平台上实现了100 FPS的实时姿态检测,验证了该方案的可行性。研究主要贡献包括:1)提出YOLOv11 Pose到RKNN平台的完整转换方案;2)优化后处理算法;3)实现高效的边缘计算部署。实验结果表明,该方案能有效解决边缘设备计算资源受限的问题,为人机交互等应用场景提供了实用的技术方案。

m0_71589036的博客 613

Apache Dubbo总结

文章目录????简介????架构演进????理解RPC与SOA????dubbo架构简介 ????简介 目前的工作主要是做一些业务功能的开发,涉及到的系统架构以all-in-one的单体架构为主,也少量涉及分布式系统,对于涉及到的分布式系统,几乎都是以dubbo为基础构建的,日常也主要是对其进行维护以及对开发新的功能,之前对dubbo的使用也不是特别深入,应用场景也不复杂。dubbo作为目前最流行的分布式微服务架构之一,是非常...

不瘦十斤不换名字 2843

LAMMPS后处理—如何构建二维云图-接触角呢?

计算接触角

Rockyoung 6523

dubbo:深入理解Apache Dubbo与实战

服务提供者启动时,会广播自己的地址。ZooKeeper注册中心采用的是“事件通知” + “客户端拉取”的方式,客户端在第一次连接上注册中心时,会获取对应目录下全量的数据。注册中心之间保持TCP长连接,后续每个节点有任何数据变化的时候,注册中心会根据watcher的回调主动通知客户端(事件通知),客户端接到通知后,会把对应节点下的全量数据都拉取过。ZooKeeper是官方推荐的注册中心,在生产环境中有过实际使用,具体的实现在Dubbo 源码的dubbo-registry-zookeeper模块中。

weixin_43675252的博客 1548

PX4实战(四):PX4 uorb模块详解

本节主要讲解PX4中的uorb消息,主要包括uorb的基本概念使用、PX4内重要的uorb消息、如何自定义uorb消息以及使用uorb消息的注意点等,其中讲解重要uorb消息是为了对PX4内重要数据结构有初步的了解,有助于后期算法理解。uORB(micro Object Request Broker)是PX4中用于模块间通信的轻量级发布-订阅(Publish/Subscribe)机制。模块之间可以通过uORB传递消息,无需直接调用对方函数;提高系统模块化与解耦性;

PX4-SLAM-PNC 1931

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

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

《深入浅出》Apache Dubbo与实战

在Apache Dubbo (以下简称Dubbo)重新开源之前,Dubbo已经被很多公司广泛用于生产环境并获得了良好的反馈,很多公司内部也会建立私有分支自己维护,其中Dubbox就是基于Dubbo分支进行扩展并二次维护的。重新开源后,社区维护的Dubbo版本进行了大量“bug fix"和特性支持,收到了大量Dubbo用户的支持和参与。编写本书的想法是在开源后提出来的,因此本书取名《深入理解Apache Dubbo与实战》。 给大家整理一篇关于深人理解Apache Dubbo与实战的PDF 本文内容总.

lingqu+wx bjmsb06 1474

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

1.深入理解Apache dubbo与实战

高性能RPC通信框架 1.为了解决单机应用的问题以及性能,并发等问题,面向服务架构SOA出现了.SOA单一进程的应用做了拆分,形成对外提供服务的组件,每个组件通过网络协议对外提供服务.协议可以是TCP也可以是HTTP.SOA具有以下特点: ①明确的协议:通过协议通信 ②明确的接口:对外提供接口,服务复用 ③合作方式的改变:可以更细化的分工与合作 ④通信方式:JSON通信 2.早期的SOA 常见的SOA实现方式有两种:WebService和ESB,WebService使用Http或http.

ashylya的博客 2587

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

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

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

荐书丨被Dubbo虐过吗,反击开始!——《深入理解Apache Dubbo与实战》

5 月 21 日,经过一年多的孵化,Apache软件基金会宣布 Dubbo 正式毕业,成为 Apache 的顶级项目。 从孵化器毕业是一种荣誉,也是另一种开始。Apache Dubbo(以下简称Dubbo)是阿里巴巴于于2011年开源的一款高性能Java RPC框架,开源伊始就在业界产生了很大的影响,被大量公司广泛使用,甚至在很多公司自研的RPC框架中也能看到不少Dubbo的影子,可以说D...

博文视点(北京)官方博客 1万+

[201907][深入理解 Apache Dubbo 与实践][诣极][林琳][著]

[201907][深入理解 Apache Dubbo 与实践][诣极][林琳][著] https://github.com/zonghaishang/dubbo-samples 第 1 章 Dubbo - 高性能 RPC 通信框架 1.1 应用架构演进过程 1.1.1 单体应用 1.1.2 分布式应用 1.2 Dubbo 简介 1.2.1 Dubbo 的发展历史 1.2.2 Dubbo 是什么 1.2.3 Dubbo 解决什么问题 1.2.4 谁在使用 Dubbo 1.2.5 Dubbo 后续的规划 1.3

damoluomu的专栏 426

深入理解 Dubbo:从依赖引入到分布式部署

Dubbo 是阿里巴巴开源的一款高性能、轻量级的 RPC 框架,主要用于构建分布式服务。它提供了服务治理、负载均衡、服务降级等功能,广泛应用于微服务架构中。Dubbo 的核心思想是通过服务注册与发现机制,实现服务之间的高效通信。通过本文的介绍,你应该已经掌握了如何在 Java 项目中使用 Dubbo,从依赖引入到分布式部署。Dubbo 作为一个强大的 RPC 框架,能够有效提升分布式系统的性能和可维护性。希望本文能帮助你在实际项目中更好地应用 Dubbo,构建高效、稳定的微服务架构。

私聊前往站内信:https://i.youkuaiyun.com/#/msg/chat/weixin_44976692 1万+

一文深入理解Apache Dubbo,dubbo注册中心:订阅和发布,快来学

后续的服务列表变化则通过publish/subscribe通道广播,当有服务提供者主动下线的时候,会在通道中广播一条unregister事件消息,订阅方收到后则从注册中心拉取数据,更新本地缓存的服务列表。Redis客户端初始化的时候,需要先初始化Redis的连接池jedisPools,此时如果配置注册中心的集群模式为

2401_83384536的博客 1058

Apache Dubbo:高性能RPC框架的全面解析

Apache Dubbo:高性能RPC框架的全面解析 【免费下载链接】dubbo 项目地址: https://gitcode.com/gh_mirrors/dubbo1/dubbo ...

gitblog_00026的博客 575

dubbo深入理解

dubbo是什么? Dubbo是阿里巴巴开源的,一个基于Java语言的高性能分布式RPC框架,现在已经成为apache的顶级项目。 1.NIO单一长连接——dubbo通信模型实现 https://www.jianshu.com/p/13bef2795c44 2.dubbo角色: provider:服务提供者 cotainer:dubbo自带容器 register:服务注册中心 consummer:...

u014645192的博客 594

Dubbo简介开发

Apache Dubbo 是一个高可用的,基于Java的开源RPC框架。 ​ Dubbo框架不仅仅是具备RPC访问功能,还包含服务治理功能。

yf_1018的博客 374

《深入理解Apache Dubbo 与实战》笔记

《深入理解Apache Dubbo与实战》读书笔记摘要: 本书系统讲解了Dubbo的设计思想与底层原理。通过思维导图结构化梳理核心内容,帮助掌握Dubbo架构。笔记强调记录与回顾的重要性,符合遗忘曲线规律。配套资源包括书中源码(GitHub链接)及Dubbo官方源码,便于实践验证。阅读后建议定期翻看笔记,结合源码加深理解,将知识转化为实际开发能力。

千里之行,始于足下 545

深入理解 Dubbo 原理

随着移动互联网的高速发展,用户规模的不断增长,产生海量的用户请求,互联网应用的后端基本上采用规模庞大的分布式集群。而 RPC (远程过程调用)就是其中的技术核心。Dubbo 是一款高性能的,轻量级的,开源的 RPC 框架,产于阿里巴巴,广泛用于各互联网公司。本 Chat 将从源码角度深入理解 Dubbo 原理。 通过本 Chat 您将学到如下内容: Dubbo 的 I/O 模型 Dubbo 的容...

GitChat 4510
上一篇: 【Dubbo】深入理解Apache Dubbo(一):带你走近高性能RPC通信框架
下一篇: 【Lombok】Java开发神器Lombok使用详解
少侠露飞
博客等级 码龄9年 214粉丝 117原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值