首页/新闻资讯/正文详情

Dubbo - 入门课程

发布时间:2026/11/4 19:05:28 来源:云帆数科 栏目:资讯中心
Dubbo - 入门课程
学习网址https://www.bilibili.com/video/BV1ns411c7jV/?vd_source461545ff50a35eaeaa8218ecdc5f7152时长4小时17分钟从分布式系统的基本概念出发由浅入深记录了RPC原理Dubbo基本使用Dubbo高可用场景以及Dubbo原理涉及了分布式系统中服务注册、服务发现、负载均衡、灰度发布、集群容错、服务降级等核心概念的讲解及演示。1.概念-分布式系统定义什么是分布式系统《分布式系统原理与范型》定义“分布式系统是若干独立计算机的集合这些计算机对于用户来说就像单个相关系统”分布式系统distributed system是建立在网络之上的软件系统。随着互联网的发展网站应用的规模不断扩大常规的垂直应用架构已无法应对分布式服务架构以及流动计算架构势在必行亟需一个治理系统确保架构有条不紊的演进。Apache Dubbo 是一款高性能、开源的 分布式服务框架最初由阿里巴巴于 2008 年开发并开源后于 2017 年成为 Apache 顶级项目。它专注于解决微服务架构中的 通信与服务治理 问题提供了一套完整的 RPC远程过程调用解决方案支持多语言、高扩展性和云原生适配广泛应用于企业级大规模微服务实践核心功能与特性高性能 RPC 通信Dubbo 支持多种通信协议如 HTTP/2、TCP、gRPC并通过长连接、NIO 异步通信和二进制数据压缩优化性能。例如阿里巴巴内部曾实现单机每日近 1 亿次调用。服务发现与注册通过注册中心如 Nacos、Zookeeper动态管理服务地址支持 Kubernetes 原生集成。流量管控提供负载均衡随机、轮询等、路由规则灰度发布、同区域优先、容错机制重试、降级等。动态配置运行时调整超时时间、权重等策略无需重启服务。2.概念-应用的架构演变单一应用架构当网站流量很小时只需一个应用将所有功能都部署在一起以减少部署节点和成本。此时用于简化增删改查工作量的数据访问框架(ORM)是关键。适用于小型网站小型管理系统将所有功能都部署到一个功能里简单易用。缺点1、性能扩展比较难需要对整个应用重新打包重新部署2、协同开发问题3、不利于升级维护垂直应用架构当访问量逐渐增大单一应用增加机器带来的加速度越来越小将应用拆成互不相干的几个应用以提升效率。此时用于加速前端页面开发的Web框架(MVC)是关键。通过切分业务来实现各个模块独立部署降低了维护和部署的难度团队各司其职更易管理性能扩展也更方便更有针对性。缺点1、公用模块无法重复利用开发性的浪费2、界面业务逻辑的实现分离3、应用不可能完全独立大量的应用之间需要交互分布式服务架构当垂直应用越来越多应用之间交互不可避免将核心业务抽取出来作为独立的服务逐渐形成稳定的服务中心使前端应用能更快速的响应多变的市场需求。此时用于提高业务复用及整合的分布式服务框架(RPC)是关键。RPC远程过程调用流动计算架构当服务越来越多容量的评估小服务资源的浪费等问题逐渐显现此时需增加一个调度中心基于访问压力实时管理集群容量提高集群利用率。此时用于提高机器利用率的资源调度和治理中心(SOA)[ Service Oriented Architecture]是关键。3.概念-RPC简介什么叫RPCRPC【Remote Procedure Call】是指远程过程调用是一种进程间通信方式他是一种技术的思想而不是规范。它允许程序调用另一个地址空间通常是共享网络的另一台机器上的过程或函数而不用程序员显式编码这个远程调用的细节。即程序员无论是调用本地的还是远程的函数本质上编写的调用代码基本相同。RPC基本原理RPC两个核心模块通讯序列化。影响性能的因素1.RPC框架能否快速的在服务器之间建立起链接2.序列化与反序列化机制速度快不快4.概念-简介Apache Dubbo (incubating) |ˈdʌbəʊ| 是一款高性能、轻量级的开源Java RPC框架它提供了三大核心能力面向接口的远程方法调用智能容错和负载均衡以及服务自动注册和发现。官网http://dubbo.apache.org/5.Dubbo 与 Spring Cloud 对比简单来说Dubbo 是一款“高性能的 RPC 远程调用框架”核心聚焦服务间通信而 Spring Cloud 是一套“完整的微服务生态体系”覆盖微服务全生命周期。两者都用于微服务但定位、设计理念和生态完全不同。1.核心区别对比维度DubboSpring Cloud核心定位高性能 RPC 框架主打服务调用微服务一站式解决方案生态核心协议基于 Dubbo 协议TCP 私有协议基于 HTTP 协议RESTful功能覆盖核心服务注册/发现、RPC 调用、负载均衡其他功能需整合第三方全覆盖注册/配置中心、熔断、网关、链路追踪、分布式配置等生态依赖轻量可搭配 ZK/Nacos/etcd 等强依赖 Spring 生态Spring Boot组件多且统一性能高TCP 长连接二进制传输稍弱HTTP 短连接文本传输易用性早期配置复杂新版本3.x已简化开箱即用约定大于配置学习成本低适用场景高性能内网服务调用、单体拆微服务、Dubbo 老项目迭代互联网分布式系统、跨语言/跨平台调用、完整微服务体系建设2.通俗理解可以把微服务架构想象成一个“公司”Dubbo像公司里的“快递员”——只负责把一个部门的东西服务请求高效送到另一个部门速度快、效率高但不管其他事比如考勤、财务、行政。Spring Cloud像公司的“全套行政体系”——不仅有快递员服务调用还有考勤熔断降级、财务配置中心、前台网关、监控链路追踪等覆盖公司运营全流程。3.实际使用示例极简代码1. Dubbo 核心调用Spring Boot 整合服务提供方// 1. 定义服务接口publicinterfaceUserService{StringgetUserById(Longid);}// 2. 实现接口并暴露服务DubboService// Dubbo 注解暴露服务publicclassUserServiceImplimplementsUserService{OverridepublicStringgetUserById(Longid){return用户id张三;}}服务消费方RestControllerpublicclassOrderController{// Dubbo 注解引用远程服务DubboReferenceprivateUserServiceuserService;GetMapping(/order/{id})publicStringgetOrder(PathVariableLongid){// 直接调用远程服务像调用本地方法StringuserNameuserService.getUserById(id);return订单关联用户userName;}}2. Spring Cloud 核心调用基于 OpenFeign服务提供方RestControllerpublicclassUserController{GetMapping(/user/{id})publicStringgetUserById(PathVariableLongid){return用户id张三;}}服务消费方// 1. 定义 Feign 接口HTTP 声明式调用FeignClient(user-service)// 指向服务名publicinterfaceUserFeignClient{GetMapping(/user/{id})StringgetUserById(PathVariableLongid);}// 2. 调用远程服务RestControllerpublicclassOrderController{AutowiredprivateUserFeignClientuserFeignClient;GetMapping(/order/{id})publicStringgetOrder(PathVariableLongid){// 通过 HTTP 调用远程服务StringuserNameuserFeignClient.getUserById(id);return订单关联用户userName;}}4.选择建议如果你的系统追求极致性能比如电商交易、金融核心系统且主要是内网服务调用 → 选 Dubbo3.x 版本已兼容 Spring Cloud。如果你的系统需要完整的微服务能力熔断、网关、链路追踪等且想快速落地 → 选 Spring Cloud。现在主流方案Dubbo Spring Cloud 混合使用用 Dubbo 做高性能 RPC 调用用 Spring Cloud 组件做熔断、网关等。5.总结核心定位Dubbo 是“专精 RPC 调用”的工具Spring Cloud 是“覆盖微服务全流程”的生态。性能与易用性Dubbo 性能更高Spring Cloud 更易用、功能更全。选型思路看需求——只需要高效服务调用选 Dubbo需要完整微服务体系选 Spring Cloud也可混合使用。5.概念-设计架构基本概念服务提供者Provider暴露服务的服务提供方服务提供者在启动时向注册中心Nacos、zookeeper注册自己提供的服务。注册中心Registry注册中心返回服务提供者地址列表给消费者如果有变更注册中心将基于长连接推送变更数据给消费者服务消费者Consumer: 调用远程服务的服务消费方服务消费者在启动时向注册中心订阅自己所需的服务服务消费者从提供者地址列表中基于软负载均衡算法选一台提供者进行调用如果调用失败再选另一台调用。监控中心Monitor服务消费者和提供者在内存中累计调用次数和调用时间定时每分钟发送一次统计数据到监控中心调用关系说明服务容器负责启动加载运行服务提供者。服务提供者在启动时向注册中心注册自己提供的服务。服务消费者在启动时向注册中心订阅自己所需的服务。注册中心返回服务提供者地址列表给消费者如果有变更注册中心将基于长连接推送变更数据给消费者。服务消费者从提供者地址列表中基于软负载均衡算法选一台提供者进行调用如果调用失败再选另一台调用。服务消费者和提供者在内存中累计调用次数和调用时间定时每分钟发送一次统计数据到监控中心。6.环境搭建-Zookeeper注册中心windows安装zookeeper1、下载zookeeper网址 https://archive.apache.org/dist/zookeeper/zookeeper-3.4.13/2、解压zookeeper解压运行zkServer.cmd 初次运行会报错没有zoo.cfg配置文件3、修改zoo.cfg配置文件将conf下的zoo_sample.cfg复制一份改名为zoo.cfg即可。注意几个重要位置修改完成后再次启动zookeeper#临时数据存储的目录可写相对路径dataDir./#zookeeper的端口号clientPort21814、使用zkCli.cmd测试ls /列出zookeeper根下保存的所有节点create –e /atguigu 123创建一个atguigu节点值为123get /atguigu获取/atguigu节点的值7.环境搭建-Dubbo管理控制台windows安装dubbo-admin管理控制台dubbo本身并不是一个服务软件。它其实就是一个jar包能够帮你的java程序连接到zookeeper并利用zookeeper消费、提供服务。所以你不用在Linux上启动什么dubbo服务。但是为了让用户更好的管理监控众多的dubbo服务官方提供了一个可视化的监控程序不过这个监控即使不装也不影响使用。1、下载dubbo-adminhttps://github.com/apache/incubator-dubbo-ops2、进入目录修改dubbo-admin配置修改 src\main\resources\application.properties 指定zookeeper地址spring.guest.passwordguestdubbo.registry.addresszookeeper://127.0.0.1:21813、打包dubbo-adminmvn clean package-Dmaven.test.skiptrue4、运行dubbo-adminjava -jar dubbo-admin-0.0.1-SNAPSHOT.jar注意【有可能控制台看着启动了但是网页打不开需要在控制台按下ctrlc即可】默认使用root/root 登陆8.环境搭建-创建提供消费者工程提出需求某个电商系统订单服务需要调用用户服务获取某个用户的所有地址我们现在需要创建两个服务模块进行测试订单服务web模块创建订单等用户服务service模块查询用户地址等测试预期结果订单服务web模块在A服务器用户服务模块在B服务器A可以远程调用B的功能。9.服务提供者配置测试10.服务消费者配置测试

相关推荐

Chat2DB 数据库客户端版本怎么选:社区版和 Pro 版的真实差异与避坑清单
Chat2DB 数据库客户端版本怎么选:社区版和 Pro 版的真实差异与避坑清单

Chat2DB 数据库客户端版本怎么选:社区版和 Pro 版的真实差异与避坑清单 【免费下载链接】Chat2DB Chat2DB is a free, cross-platform, local-first database client and SQL workspace for developers, DBAs, analysts, and data teams. Connect to 40 databases, … · 2026/11/4 19:05:28

Kavita 媒体转换完整指南:用 WebP 与 AVIF 给你的漫画书库瘦身
Kavita 媒体转换完整指南:用 WebP 与 AVIF 给你的漫画书库瘦身

Kavita 媒体转换完整指南:用 WebP 与 AVIF 给你的漫画书库瘦身 【免费下载链接】Kavita Kavita is a fast, feature rich, cross platform reading server. Built with the goal of being a full solution for all your reading needs. Setup your own server and s… · 2026/11/4 19:05:28

Versal ACAP DDR4/LPDDR4 I/O规划硬核指南:Bank隔离、NOC耦合与物理约束
Versal ACAP DDR4/LPDDR4 I/O规划硬核指南:Bank隔离、NOC耦合与物理约束

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 19:04:28

DeepSeek V4.1 Flash 技术解读:轻量化 AI 模型的高效推理之道
DeepSeek V4.1 Flash 技术解读:轻量化 AI 模型的高效推理之道

1. 先说清楚:这个 V4.1 Flash 到底是什么来头 最近打开技术社区和聊天群,到处都是 DeepSeek V4.1 Flash、Flash Attention、Flash 这个 Flash 那个的讨论。我本来以为又是哪家厂商整了个营销新词,结果蹲了一圈消息源,发现这事比我… · 2026/11/4 21:10:13

MongoDB分片集群性能优化:Zone划分与读写分离实践
MongoDB分片集群性能优化:Zone划分与读写分离实践

1. MongoDB分片集群性能优化概述作为一名长期奋战在数据库运维一线的工程师,我见过太多团队在MongoDB分片集群使用初期表现良好,但随着数据量增长却陷入性能泥潭的案例。分片集群虽然提供了理论上无限的水平扩展能力,但如果不掌握正确的调优方… · 2026/11/4 21:10:13

深入解析STL容器:原理、实现与性能优化
深入解析STL容器:原理、实现与性能优化

1. STL容器概述与设计哲学 STL(Standard Template Library)作为C标准库的核心组成部分,其容器类模板的设计体现了泛型编程的精华。在实际工程中,我们经常直接使用vector、map这些容器,但真正理解它们的底层实现机制&am… · 2026/11/4 21:10:13

多智能体系统通信协议:MCP、A2A与ACP技术解析与应用
多智能体系统通信协议:MCP、A2A与ACP技术解析与应用

1. 多智能体系统协议演进背景在分布式人工智能领域,多智能体系统(MAS)的协同效率直接取决于通信协议的标准化程度。早期智能体间通信存在三大痛点:首先是协议碎片化导致跨平台协作困难,不同研究团队开发的智能体往往采用私有通信格式&#xf… · 2026/11/4 21:10:13

顺序表在通讯录项目中的工程实践与性能优化
顺序表在通讯录项目中的工程实践与性能优化

1. 顺序表基础与通讯录项目背景 顺序表作为数据结构中最基础的线性存储结构,在C语言中通常通过数组实现。我在处理嵌入式设备日志系统时首次深刻体会到它的价值——当需要快速存取固定格式的传感器数据时,顺序表相比链表能减少80%以上的访问时间。通讯录… · 2026/11/4 21:10:13

INCA汽车标定入门:安装、A2L/S19导入与CAN测量实操
INCA汽车标定入门:安装、A2L/S19导入与CAN测量实操

简介:《INCA标定软件使用教程》面向汽车标定初学者及需要熟悉INCA操作的汽车电子工程师,围绕软件安装、许可证配置、实验环境建立、标定工程设计与数据录制等环节展开,帮助读者理解A2L与s19文件导入、CAN设备连接、变量选取和示波器观察等基础… · 2026/11/4 21:09:12

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

AI辅助技术栈评估:提升研发决策效率60%
AI辅助技术栈评估:提升研发决策效率60%

1. 项目背景与核心价值技术决策一直是研发团队面临的重大挑战。随着技术生态的快速演进,技术栈的选择、维护和迭代变得愈发复杂。我们团队在过去两年里,先后经历了三次重大技术栈迁移,每次都需要投入大量人力进行技术评估和风险分析。直到去年… · 2026/11/4 0:00:17

从生成Token到直接决策:Jev如何重塑AI Agent工程实践
从生成Token到直接决策:Jev如何重塑AI Agent工程实践

1. 从"生成文字"到"拍板决策":Jev 到底在解决什么问题大多数人第一次接触大模型,脑子里建立的模型是"输入问题、输出文字"。你问它今天天气怎么样,它给你一段描述;你让它写个周报,它给你… · 2026/11/4 0:00:17

32G统一内存跑大模型:内存账、TPS实测与端云分流
32G统一内存跑大模型:内存账、TPS实测与端云分流

想在一台 32G 统一内存的小主机上把大模型跑成"日常可用",这件事我前后折腾了小半年。标题里说的这台 Mac mini M6,是我们这次讨论的目标平台,具体到手规格以实物为准;但下面这套推算方法和实测思路,对任何统… · 2026/11/4 0:00:17

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码