Apache Dubbo (RPC框架)
本文参考官方文档:Apache Dubbo
1. Dubbo 简介与核心功能
Apache Dubbo 是一个高性能、轻量级的开源Java RPC框架,用于快速开发高性能的服务。它提供了服务的注册、发现、调用、监控等核心功能,以及负载均衡、流量控制、服务降级等高级功能。Dubbo 支持多种协议,包括但不限于 Dubbo 协议、RMI、HTTP、Hessian等,使得开发者可以灵活选择适合自己业务场景的通信协议。
具体功能点描述:
1.1 服务治理:
-
地址发现:Dubbo 提供了高性能的服务发现机制,支持大规模集群,并且可以与多种注册中心(如 Nacos、Zookeeper、Consul)进行适配。
-
负载均衡:Dubbo 默认提供了多种负载均衡策略,包括加权随机、加权轮询、最少活跃请求数优先等。
-
流量路由:Dubbo 支持基于规则的流量路由,可以实现 A/B 测试、金丝雀发布等功能。
1.2 流量管控:
-
Dubbo 提供了丰富的流量管控规则,可以控制服务间的流量走向和 API 调用,实现动态调整服务行为如超时时间、重试次数、限流参数等。
1.3 微服务生态:
-
围绕 Dubbo 构建了完善的微服务治理生态,对于绝大多数服务治理需求,通过简单几行配置即可开启。
1.4 可视化控制台:
-
Dubbo Admin 提供了可视化的 Web 交互控制台,可以实时监测集群流量、服务部署状态、排查诊断问题。
1.5 安全体系:
-
Dubbo 支持基于 TLS 的数据传输通道,并提供认证、鉴权策略,实现细粒度的资源访问控制。
1.6 服务网格:
-
基于 Dubbo 开发的服务可以透明地接入 Istio 等服务网格体系,支持基于 Envoy 的流量拦截方式,也支持 Proxyless Mesh 部署模式。
1.7 高性能通信协议:
-
Dubbo 提供了高性能的通信协议实现,支持流式通信模型,不绑定序列化协议,支持单个服务的多协议暴露。
1.8 云原生支持:
-
Dubbo 完全遵循云原生微服务开发理念,支持 Kubernetes、Service Mesh 等云原生基础设施与部署架构。
1.9 易用性提升:
-
Dubbo 官网大改版体现了对易用性体验的深刻理解和不懈追求,通过简化信息获取、优化内容结构和提升用户交互,为开发者创造一个更加友好和高效的开发环境。
2. Dubbo 的开源故事与发展历程
Dubbo 最初由阿里巴巴开发,用于解决大规模服务化架构下的远程服务调用问题。随着其在业界的广泛应用,Dubbo 在2017年被捐献给 Apache 软件基金会,并在2018年成为 Apache 的顶级项目。Dubbo 的开源之路,不仅推动了微服务架构在国内的发展,也促进了开源社区的繁荣。
3. Dubbo 在云原生时代的演进
随着云原生技术的兴起,Dubbo 也在不断进化。Dubbo3 作为新一代的微服务框架,提供了对云原生架构的全面支持,包括对 Kubernetes 的集成、服务网格(Service Mesh)的适配等。Dubbo3 通过 Proxyless Mesh 架构,减少了对 Sidecar 的依赖,降低了资源消耗,提高了性能。
4. 用户案例与实践
Dubbo 在阿里巴巴、京东、滴滴等大型互联网公司中得到了广泛应用。例如,在阿里巴巴内部,Dubbo3 已经成为统一的服务框架,支撑着数以万计的服务实例。这些实践证明了 Dubbo 在处理高并发、高可用性场景下的强大能力。
5. Dubbo 架构详解
Dubbo 的架构包括以下几个核心组件:
-
Provider:服务提供者。
-
Consumer:服务消费者。
-
Registry:服务注册中心,如 Zookeeper、Nacos。
-
Monitor:服务监控中心,用于统计服务调用次数和时间。
-
Container:服务容器,用于运行服务提供者。
Dubbo 的调用关系遵循发起请求、服务注册、服务发现、服务调用、结果返回的流程。
6. Dubbo3 核心特性与升级
Dubbo3 引入了以下核心特性:
-
全面支持异步调用:提高了服务调用的性能。
-
增强的多语言支持:通过 gRPC 协议,Dubbo3 支持了更多的编程语言。
-
服务网格集成:Dubbo3 可以与 Istio 等服务网格框架集成,提供更灵活的流量管理。
7. 快速入门与案例
Dubbo 提供了简单的入门指南,开发者可以通过 Maven 依赖快速开始一个 Dubbo 项目。以下是一个简单的服务提供者和消费者的示例代码,以及必要的配置文件。
// 服务接口
public interface GreetingService {String sayHello(String name);
}// 服务提供者实现
@DubboService(version = "1.0.0")
public class GreetingServiceImpl implements GreetingService {public String sayHello(String name) {return "Hello " + name;}
}// 服务消费者调用
@DubboReference(version = "1.0.0")
private GreetingService greetingService;public String useGreetingService(String name) {return greetingService.sayHello(name);
}
不积跬步,无以至千里 --- xiaokai
相关文章:

Apache Dubbo (RPC框架)
本文参考官方文档:Apache Dubbo 1. Dubbo 简介与核心功能 Apache Dubbo 是一个高性能、轻量级的开源Java RPC框架,用于快速开发高性能的服务。它提供了服务的注册、发现、调用、监控等核心功能,以及负载均衡、流量控制、服务降级等高级功能。…...
LeetCode 3226. 使两个整数相等的位更改次数
. - 力扣(LeetCode) 题目 给你两个正整数 n 和 k。你可以选择 n 的 二进制表示 中任意一个值为 1 的位,并将其改为 0。 返回使得 n 等于 k 所需要的更改次数。如果无法实现,返回 -1。 示例 1: 输入: n …...

面试经典 150 题:189、383
189. 轮转数组 【参考代码】 class Solution { public:void rotate(vector<int>& nums, int k) {int size nums.size();if(1 size){return;}vector<int> temp(size);//k k % size;for(int i0; i<size; i){temp[(i k) % size] nums[i];}nums temp; }…...

Python模拟真人动态生成鼠标滑动路径
一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序,它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言,原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势: 模拟…...

如何压缩pdf文件的大小?5分钟压缩pdf的方法推荐
如何压缩pdf文件的大小?在现代办公和学习中,PDF文件因其稳定性和广泛的兼容性被广泛使用。然而,随着文件内容的增多,制作好的PDF文件常常变得过大,给使用带来了诸多不便。无论是电子邮件附件的发送,还是在线…...

【SQL】[2BP01] ERROR: cannot drop table course because other objects depend on it
问题描述 在尝试执行以下SQL语句时,发生错误。 DROP TABLE Course RESTRICT;执行以上语句后,系统返回了一个错误提示: [2BP01] ERROR: cannot drop table course because other objects depend on it 详细:constraint sc_cno_…...

gbase8s之spring框架用druid中间件报语法错误
spring框架 调用druid中间件 时报这个错: MetaDataAccessException: Could not get Connection for extracting meta-data; nested exception is org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception …...

【网络安全】|nessus使用
1、扫描结果分析: Sev:漏洞的严重性级别 CVSS:量化漏洞严重性的标准,通过计算得出一个分数,分数越高表示漏洞越严重。 VPR:基于风险的评分系统,帮助组织优先处理风险最高的漏洞。 EPSS…...

CSRA2的LINUX操作系统24年11月2日上午上课笔记
几个查找命令: .whereis:查看文件的路径,查看可执行文件的路径,一级相应文档路径。 .which:查看系统可执行的文件的路径,以及命令的别名等信息 .local:他会将linux中的所有文件的路径信息保存到数据库中,在数据库中查…...

通过分解质因数求若干个数的最小公倍数
求最小公倍数的常规方法回顾 暴力枚举法 long long work(long long a,long long b) {for(long long imax(a,b);;i)if(i%a0&&i%b0)return i; }大数翻倍法 long long work(long long a,long long b) {if(a<b) swap(a,b);for(long long ia;;ia) // i 是 a 的倍数&#…...

数据库三范式(1NF、2NF、3NF)
1NF(第一范式) 定义:确保每一列都是原子值,即是不可分割的基础数据项。 所谓第一范式(1NF)是指在关系模型中,对于添加列的一个规范要求,所有的列都 应该是原子性的,即数…...

C语言_数据结构_顺序表
1. 本章重点 顺序表初始化顺序表尾插顺序表尾删顺序表头插顺序表头删顺序表查找顺序表在pos位置插入x顺序表删除pos位置的值顺序表销毁顺序表打印 2. 顺序表的概念及结构 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储…...

Llama 3.2 Vision Molmo:多模态开源生态系统基础
编者按: 视觉功能的融入对模型能力和推理方式的影响如何?当我们需要一个既能看懂图像、又能生成文本的 AI 助手时,是否只能依赖于 GPT-4V 这样的闭源解决方案? 我们今天为大家分享的这篇文章,作者的核心观点是…...

【数据结构与算法】第6课—数据结构之栈
文章目录 1. 栈2. 栈的初始化和栈的销毁3. 入栈和出栈(压栈)4. 取栈顶元素并打印5. 栈的练习题5.1 有效的括号 1. 栈 栈:也是一种线性表,其数据结构与动态顺序表的数据结构类似栈分为栈顶和栈底,在栈中,插入…...

开源全站第一个Nextron(NextJS+electron)项目--NextTalk:一款集成chatgpt的实时聊天工具
NextTalk 简介 该项目是一个基于Nextron(NextJSElectron)的桌面端实时聊天工具。 但由于使用了NextJS中的ssr及api route功能,该程序只能在开发环境运行。 关于生产版本:我将其网页端部分分离,并用Pake将其打包成桌面端,生产体…...

多样化的编程模型:并发与并行策略
因为经常看着某些框架设计的编程模型很晕,所以自己梳理总结了一下编程模型的分类,总共六个大类,基本所有常见框架设计的编程模型都是基于这六个大类来实现的,如果有错误的地方,请见谅并不吝赐教,感谢&#…...

npm入门教程2:npm历史
一、起源与诞生 时间背景:npm的诞生与Node.js的兴起紧密相关。Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它允许JavaScript代码在服务器端运行。随着Node.js的流行,开发者们对于包管理和依赖解决的需求日益增长。诞生:…...

Cuebric:用AI重新定义3D创作的未来
一、简介 Cuebric 是一家成立于2022年夏天的好莱坞创新公司,致力于为电影、电视、游戏和时尚等行业提供先进的AI多模态SaaS平台。自2024年1月正式推出以来,Cuebric 已经在市场上获得了广泛的认可和积极的反馈。目前,该平台正处于1.0版本的beta测试阶段,已募集约50万美元的…...

前端react常见面试题目(basic)
1. 如果 React 组件的属性没有传值,它的默认值是什么? 如果一个 React 组件的属性(props)没有传值,那么它的默认值会是 undefined。你可以通过组件内部的逻辑来设置默认值,比如使用逻辑运算符或者 ES6 的默认参数。 …...

机器人技术基础(4章逆运动解算和雅克比矩阵)
逆运动解算: 雅克比矩阵: 将动力学分析转向运动的物体 下图中的 n o y 反映了机器人的姿态矩阵, 最后一列 p 反应了机器人在空间中的位置:...

OpenGL入门002——顶点着色器和片段着色器
文章目录 一些概念坐标转换阶段顶点着色器片段着色器VBOVAO 实战简介main.cppCMakeLists.txt最终效果 一些概念 坐标转换阶段 概述: 模型空间、世界空间、视图空间和裁剪空间是对象在3D场景中经历的不同坐标变换阶段。每个空间对应渲染管道的一个步骤,…...

[数组排序] LCR 164. 破解闯关密码
文章目录 1. 题目链接2. 题目大意3. 示例4. 解题思路5. 参考代码 1. 题目链接 LCR 164. 破解闯关密码 - 力扣(LeetCode) 2. 题目大意 描述:给定一个非负整数数组 nums。 要求:将数组中的数字拼接起来排成一个数,打印…...

05 Django 框架模型介绍(一)
文章目录 1、Django 模型简介2、Django 中创建并使用模型(1)新加一个名为 myapp 的应用(2)定义模型类(2)激活模型类(3)创建数据库迁移文件(4)应用迁移文件 3、…...

【简道云 -注册/登录安全分析报告】
前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…...

【C++题解】1970. 判断是什么字符
欢迎关注本专栏《C从零基础到信奥赛入门级(CSP-J)》 问题:1970. 判断是什么字符 类型:字符串、字符型 题目描述: 从键盘读入一个字符,有可能是大写字母、小写字母、数字中的一种,请编程判断&…...

Python自动化操作Word文档详解
在日常办公和数据处理中,我们经常需要处理Word文档。手动操作Word文档可能会非常繁琐和耗时,而使用Python可以实现自动化操作,提高工作效率。本文将详细介绍如何使用Python自动化操作Word文档,包括读取、写入、修改和格式化等操作…...

常用滤波算法(二)-中位值滤波法
文章目录 一、中位值滤波法简介二、C语言实现中位值滤波法三、程序说明信号初始化:滤波窗口大小:内存分配:中位值滤波函数:中位值计算函数:内存释放: 四、总结 中位值滤波法,作为一种非线性滤波…...

HCIP--以太网交换安全(总实验)
实验背景 假如你是公司的网络管理员,为了提高公司网络安全性,你决定在接入交换机部署一些安全技术:端口隔、端口安全、DHCP snooping、IPSG。 实验拓扑图 实验的要求: 1.在R1、R2连接在GE0/0/1和GE0/0/2接口下,均划…...

C语言 | Leetcode C语言题解之第519题随机翻转矩阵
题目: 题解: typedef struct {unsigned long long val;UT_hash_handle hh; } Hash;typedef struct {Hash *hash;int n_rows;int n_cols; } Solution, SL;Solution* solutionCreate(int n_rows, int n_cols) {SL *obj malloc(sizeof(SL));obj->hash …...

《机器人SLAM导航核心技术与实战》第1季:第10章_其他SLAM系统
视频讲解 【第1季】10.第10章_其他SLAM系统-视频讲解 【第1季】10.1.第10章_其他SLAM系统_RTABMAP算法-视频讲解 【第1季】10.2.第10章_其他SLAM系统_VINS算法-视频讲解 【第1季】10.3.第10章_其他SLAM系统_机器学习与SLAM-视频讲解 第1季:第10章_其他SLAM系统 …...