当前位置: 首页 > news >正文

Java学习第七十一部分——Dubbo

目录

一、前言提要

二、核心特性

三、架构组成

四、工作流程

五、代码示例——基于Spring Boot 集成

六、适用场景

七、框架对比

八、总结归纳


一、前言提要

       Apache Dubbo 是一个高性能、轻量级的开源 Java RPC 框架,最初由阿里巴巴开发,2018 年捐赠给 Apache 基金会,现为顶级项目。它主要用于构建分布式、微服务架构中的服务治理和通信,支持多种协议和注册中心,适用于高并发场景。

二、核心特性

1. RPC 通信 

  • 支持多种协议(Dubbo、REST、gRPC、Thrift 等)。  

  • 默认使用 Netty 实现 NIO 异步通信,低延迟、高吞吐。

2. 服务治理  

  • 注册中心:Zookeeper、Nacos、Consul、Etcd 等。  

  • 负载均衡:随机、轮询、最少活跃调用、一致性哈希等。  

  • 容错机制:失败重试、快速失败、失败安全、故障转移(如 Failover、Failsafe)。  

  • 动态配置:支持运行时调整超时时间、权重、路由规则等。

3. 扩展性  

  • 基于 SPI(Service Provider Interface) 机制,可自定义序列化、过滤器、负载均衡策略等。 

  • 支持多协议、多注册中心混合部署。

4. 生态集成  

  • 与 Spring Cloud、Kubernetes、gRPC 等无缝整合。  

  • 提供 Dubbo Admin 控制台(可视化服务管理)。

三、架构组成

  • Provider:服务提供者,暴露接口实现。  

  • Consumer:服务消费者,通过代理调用远程服务。  

  • Registry:注册中心,管理服务注册与发现。  

  • Monitor:监控中心,统计调用次数、耗时等。  

  • Container:可选的容器(如 Spring Boot)。

四、工作流程

1. 服务提供者启动时,向注册中心注册服务。  
2. 消费者从注册中心订阅服务,获取提供者地址列表。  
3. 消费者通过负载均衡策略选择提供者,发起 RPC 调用。  
4. 监控中心记录调用数据,注册中心推送变更事件(如服务下线)。

五、代码示例——基于Spring Boot 集成

1. 服务提供者

// 服务接口
public interface HelloService {String sayHello(String name);
}// 服务实现
@DubboService(version = "1.0.0")
public class HelloServiceImpl implements HelloService {public String sayHello(String name) {return "Hello, " + name + "!";}
}

2. 服务消费者

@RestController
public class HelloController {@DubboReference(version = "1.0.0")private HelloService helloService;@GetMapping("/hello")public String hello(@RequestParam String name) {return helloService.sayHello(name);}
}

3. 配置文件(application.yml)

dubbo:application:name: dubbo-demo-providerregistry:address: zookeeper://127.0.0.1:2181protocol:name: dubboport: 20880

六、适用场景

  • 微服务架构中的服务间通信。  

  • 需要高可用、高性能的 RPC 调用(如电商、金融系统)。  

  • 已有 Java 技术栈,需平滑迁移到微服务(替代传统 RMI 或 HTTP 调用)。

七、框架对比

特性DubboSpring CloudgRPC
协议多协议
(Dubbo/HTTP)
HTTP/RESTHTTP/2
性能
(Netty NIO)
中等
(HTTP)
极高
(HTTP/2)
语言支持主要 JavaJava多语言
服务治理内置需整合
(如Eureka)
需自实现

八、总结归纳

       Dubbo 是 Java 微服务领域的核心 RPC 框架,尤其适合高并发、复杂服务治理场景。结合 Spring Boot 可快速构建生产级系统,同时支持云原生(如 Kubernetes)部署。

http://www.lryc.cn/news/598048.html

相关文章:

  • RCLAMP0512TQTCT 升特半导体 TVS二极管 12通道全防护芯片 以太网/PLC控制/5G基站专用
  • 数学基础弱能学好大数据技术吗?
  • 仓库解读 - OpenExo
  • 滑动窗口-5
  • 企业安全基石:解锁等保测评的战略价值
  • TRUMPF TruConvert DC 1008 – 1010 TruConvert System Control 逆变器
  • 【图像理解进阶】如何进行小目标物体的检测?
  • 快乐社兑换码怎么获得,免排队,
  • LLM中典型的Transformer层中:MLP Residual; LN Agg: μ, σ; SM Agg 是什么意思
  • 模拟退火算法对Rastrigin函数的优化
  • 【第五节】列表渲染
  • Flink-1.19.0源码详解8-ExecutionGraph生成-前篇
  • 【图论】倍增与lca
  • 网络编程——聊天程序实现
  • 嵌入式通信知识串讲:从同步 / 异步传输到 UART 协议 STM32F103 硬件解析
  • 换热站可视化:藏在数字里的城市温暖密码
  • 【jupyter 使用多进程方案】
  • 数据库底层索引讲解-排序和数据结构
  • 根据字符串数组的顺序重新排序 List顺序
  • 使用全局变量访问 Qt UI 组件的方法文档
  • WebRTC指纹——深度分析(中篇)
  • 5种最佳方法将iPhone语音备忘录传输到Mac
  • pycharm配conda环境
  • 阿里视频直播解决方案VS(MediaMTX + WebRTC) 流媒体解决方案
  • 基于python django的农业可视化系统,以奶牛牧场为例
  • WebRTC指纹——技术背景(上篇)
  • Apache POI 实战应用:企业级文档处理解决方案
  • 解决VSCode中“#include错误,请更新includePath“问题
  • es 和 lucene 的区别
  • 【Practical Business English Oral Scene Interpretation】入职面试No.5~7