探索分布式服务框架Dubbo7:Dubbo高级特性剖析

深度剖析Apache Dubbo CVE-2020-1948:从反序列化漏洞到RPC框架安全设计 在分布式微服务架构中,远程过程调用(RPC)框架是实现服务间通信的核心组件,其安全性直接关系到整个系统的稳定。RPC框架通过序列化与反序列化机制在网络间传输数据对象,这一过程若缺乏严格的类型校验,便可能形成严重的安全漏洞。其技术价值在于保障高性能服务调用的同时,建立可靠的安全边界,防止恶意数据注入导致远程代码执行。典型的应用场景包括金融交易系统、电商平台等对安全要求极高的分布式服务集群。本文以Apache Dubbo框架的CVE-2020-1948漏洞为例,深入解析其因泛化调用功能中**不安全的反射**机制 阅读详情

Dubbo剖析-服务直连

2018年03月15日 12:37:30

阅读数:57

一、前言

为了方便开发及测试,一般需要绕过注册中心,只测试指定ip的服务提供者,这时候服务消费方和服务提供方就是点对点直联方式。这时候服务消费方会忽略注册中心的提供者列表。另外直连方式以服务接口为单位,假如A 接口配置点对点,不影响 B 接口从注册中心获取列表。

二、直连方法

  • 通过-D参数指定 
    在服务消费进程启动时候 JVM 启动参数中加入-D参数映射服务地址 ,如: 
    -Dcom.test.UserServiceBo=dubbo://30.8.59.182:20880;则标示当调用com.test.UserServiceBo接口时候访问30.8.59.182:20880提供的服务,忽略zk发现列表。
  • 通过 XML 配置 
    如果是XML方式点对点,可在 中配置 url 指向提供者,将绕过注册中 
    心,多个地址用分号隔开,配置如下: 
  • 通过文件映射 
    如果服务比较多,也可以用文件映射,用 -Ddubbo.resolve.file 指定映射文件路径,此配置优先级高于 中的配置 ,如: 
    java -Ddubbo.resolve.file=xxx.properties 
    然后在映射文件 xxx.properties 中加入配置,其中 key 为服务名,value 为服务提供者 
    URL: 
    com.test.UserServiceBo=dubbo://30.8.59.182:20880

注:为了避免复杂化线上环境,不要在线上使用这个功能,只应在测试阶段使用。

Dubbo剖析-服务分组与服务版本号

2018年03月17日 16:47:41

阅读数:157

一、前言

在Dubbo中接口类并不能唯一确定一个服务,在dubbo中接口+服务分组+版本号才能唯一确定一个服务,本文就来讲解下服务分组和版本号的使用。

二、服务分组

当一个接口有多种实现时,可以用 group 区分。 
- 服务提供方: 
image.png

上面配置在服务提供方法提供了com.test.UserServiceBo接口的两套实现,服务分组分别为olddubbo,newdubbo。

  • 服务消费方 
    image.png

上面配置在服务消费方消费com.test.UserServiceBo接口的两套实现,服务分组分别为olddubbo,newdubbo。

需要注意的是消费方只能消费与自己服务分组相同的提供方的服务,这里userServiceOld生成的是服务提供方分组为olddubbo的接口的代理。 
userServiceNew生成的是服务提供方分组为newdubbo的接口的代理。

三、服务版本

当同一个服务分组的接口实现,出现不兼容升级时,可以用版本号过渡,版本号不同的服务相互间不引用。 
可以按照以下的步骤进行版本迁移: 
1. 在低压力时间段,先升级一半提供者为新版本 
2. 再将所有消费者升级为新版本 
3. 然后将剩下的一半提供者升级为新版本

比如:

  • 服务提供方

image.png

服务提供方法在分组dubbo下提供了两个版本号的服务

  • 服务消费方

image.png
同理需要注意的是服务消费方只能消费与自己接口+分组+版本一致的服务提供方的服务。

四、总结

dubbo中唯一确定一个服务的是接口+服务分组+版本号,服务提供方和消费方提供和消费服务时候显示的配置服务分组和版本号是一个最佳实践。

Dubbo剖析-服务消费端异步调用

原创: 加多 技术原始积累 3月13日

一、前言

前面我们讲解的无论是正常调用还是泛化调用也好,都是进行同步调用的,也就是服务消费方发起一个远程调用后,调用线程要被阻塞挂起,直到服务提供方返回。本节来讲解下异步调用,异步调用是指服务消费方发起一个远程调用后,不等服务提供方返回结果,调用方法就返回了,也就是当前线程不会被阻塞,这就允许调用方同时调用多个远程方法。

二、服务端异步调用实例

image.png

可以测试下在sayHello和sayHello2方法内sleep 2s,然后执行调用,会发现输出为costs:2这说明调用方的sayHello和sayHello2是并发调用的,因为如果是串行的话会输出costs:4.

三、总结

异步调用是基于 NIO 的非阻塞实现并行调用,客户端不需要启动多线程即可完成并行调用多个远程服务,相对多线程开销较小。后期会在本公众号 '技术原始积累' 的精品区下分析dubbo异步实现原理,敬请期待。

Dubbo剖析-服务消费端泛化调用

原创: 加多 技术原始积累 3月12日

一、前言

前面我们讲解基于Spring和基于dubbo api方式搭建一个简单的分布式系统时候服务消费端是引入了一个sdk的,这个SDK是个二方包,里面存放了服务提供端提供的所有接口类以及接口使用的入参和出参的pojo类,服务消费端则使用JDK代理对接口进行代理。

泛化接口调用方式主要用于服务消费端没有 API 接口类及模型类元(比如入参和出参的pojo类)的情况,参数及返回值中的所有POJO 均用 Map 表示。

二、服务端泛化调用实例

image.png

三、总结

泛化调用通常用于框架集成,比如:实现一个通用的服务测试框架,可通过
GenericService 调用所有服务实现。后期会在本公众号 '技术原始积累' 的精品区下分析dubbo泛化实现原理,敬请期待。

Dubbo剖析-负载均衡

一、前言

在服务提供方是集群的时候,为了避免大量请求一直落到一个或者几个服务提供方机器上,从而使这些机器负载很高,甚至打死,需要做一定的负载均衡策略。Dubbo 提供了多种均衡策略,缺省为 random 随机调用

二、dubbo负载均衡策略

  • Random LoadBalance 随机策略
    按权重设置随机概率。
  • RoundRobin LoadBalance 轮询策略
    轮循,按公约后的权重设置轮循比率
  • LeastActive LoadBalance 最少活跃调用数
    最少活跃调用数,相同活跃数的随机,活跃数指调用前后计数差
  • ConsistentHash LoadBalance 一致性hash策略
    一致性 Hash,相同参数的请求总是发到同一提供者。
    当某一台提供者挂时,原本发往该提供者的请求,基于虚拟节点,平摊到其它提供者,不会引起剧烈变动。

三、 何时加载负载均衡策略

image.png

四、总结

dubbo提供了几种常见的负载均衡策略,如果您需要定制自己额负载均衡策略,可以按照dubbo的规范进行定制化,比如你可以定制均匀一致性hash对dubbo的一致性hash进行改良。

Dubbo剖析-集群容错

原创: 加多 技术原始积累 4月2日

一、前言

在进行系统设计时候,不仅要考虑正常逻辑该如何走,还要考虑异常逻辑。dubbo中当服务消费方调用服务提供方的服务出现错误时候,提供了多种容错方案,缺省为 failover 重试。

二、Dubbo集群容错模式

  • Failover Cluster
    重试。当服务消费方调用服务提供者失败后自动切换,重试其它服务提供者。这通常用于读操作或者具有幂等的写操作,需要注意的是重试会带来更长延迟。可通过 retries="2" 来设置重试次数(不含第一次)。
    <dubbo:reference retries="2" />

  • Failfast Cluster
    快速失败。当服务消费方调用服务提供者失败,失败立即报错。通常用于非幂等性的写操作。

  • Failsafe Cluster
    失败安全。出现异常时,直接忽略。通常用于写入审计日志等操作。

  • Failback Cluster
    失败自动恢复。后台记录失败请求,并按照一定的策略后期在进行重试。通常用于消息通知操作。

  • Forking Cluster
    并行调用多个服务提供者的服务,只要一个成功即返回。通常用于实时性要求较高的读操作,但需要浪费更多服务资源。可通过 forks="2" 来设置最大并行数。

  • Broadcast Cluster
    广播调用所有服务提供者,逐个调用,任意一台报错则报错 。通常用于通知所有提供者更新缓存或日志等本地资源信息

三、原理

3.1何时加载集群容错扩展实现类

image.png

3.2 FailoverClusterInvoker原理

深入解析Dubbo集群容错机制:Cluster与ClusterInvoker核心原理 在分布式微服务架构中,服务调用从简单的进程内通信演变为复杂的跨网络交互,这带来了服务发现、负载均衡和容错等核心挑战。其基本原理是通过注册中心实现服务实例的动态发现,结合负载均衡算法将请求分发到合适的节点,并通过容错策略处理调用失败的情况,从而保障系统的高可用性。这一技术价值在于对上层业务透明地提供了可靠的远程调用能力,是构建弹性分布式系统的基石。在实际应用场景中,Dubbo框架通过Cluster层抽象,将容错策略与调用执行分离,其中Cluster作为策略工厂定义容错模式,而ClusterInvoker作为执 阅读详情

相关推荐

SOLIDWORKS2024安装卡顿?Edge WebView2 Runtime冲突的排查与修复

本文针对SOLIDWORKS 2024安装时setup.exe无响应或卡死的常见问题,深入剖析了其根本原因在于Microsoft Edge WebView2 Runtime的版本冲突或组件损坏。文章提供了三种经过验证的解决方案:一是通过运行安装包内swwi\data目录下的setup.exe直接绕过图形界面;二是彻底卸载并重装官方Edge WebView2 Runtime组件;三是进行系统级修复与排查。旨在帮助用户快速定位并解决安装障碍,顺利完成软件部署。

4k5l6j7h8的博客 289

Dubbo 学习笔记(五) 开发环境常用技巧

直连提供者 在开发及测试环境下,经常需要绕过注册中心,只测试指定服务提供者,这时候可能需要点对点直连,点对点直联方式,将以服务接口为单位,忽略注册中心的提供者列表,A 接口配置点对点,不影响 B 接口从注册中心获取列表。 1. 通过 XML 配置 如果是线上需求需要点对点,调用方配置 url 指向提供者,将绕过注册中心,多个地址用分号隔开,配置如下 : 生产中正常的配置是不会有URL的...

liudashuang2017的博客 373

DisplayPort信号通道深度解析:从物理层到协议栈

DisplayPort(DP)是一种面向高速串行通信的数字显示接口标准,其核心在于嵌入式时钟、自适应均衡与链路训练三位一体的物理层架构。不同于HDMI依赖独立时钟的TMDS方案,DP通过差分主链路(Main Link)承载编码数据流,以8b/10b或128b/132b编码实现高带宽与强鲁棒性。该技术价值体现在多速率自适应、误码恢复能力及对PCB布线与阻抗控制的严苛要求,广泛应用于8K显示、工业视觉、GPU直连等高性能场景。本文聚焦DP信号通道的管脚级实现、三层协议解耦(物理层/数据链路层/事务层)及链路训练

weixin_34214500的博客 253

DUBBO用法总结十一——服务导出

"2021SC@SDUSC" 一、前言 如果没有Rpc框架,我们需要网络编程代码调用远程服务,同时对于请求参数和响应结果需要手动进行序列化和反序列化。这些过程对于没有接触过网络编程的程序员来说有一定的难度。Dubbo服务引用的目的就是将远程调用的网络编程隐藏在框架当中,让程序员像调用本地服务一样调用远程服务。Dubbo提供的功能不仅如此,同时提供了服务发现,集群容错,负载均衡,服务降级等功能。 如下图是dubbo服务引用的整体流程,在引用服务时,dubbo首先会从注册中心获取注册服务的url信息,并利

qq_51562781的博客 989

从数据到特征:基于CAT12的MRI图像预处理实战指南

本文详细介绍了使用CAT12工具进行MRI图像预处理的完整实战流程。从数据获取、环境搭建到核心的AC-PC校正、组织分割、空间标准化与调制,逐步解析如何将原始脑影像数据转化为可用于机器学习的标准化特征图。重点阐述了预处理作为脑影像分析‘生命线’的重要性,并提供了避坑指南与自动化脚本建议,帮助研究者构建高质量的阿尔茨海默症分类模型输入特征。

weixin_29065959的博客 309

python实现语音信号的分帧、加窗、预处理

语音信号实现分帧、加窗、预处理音频文件读取预加重分帧加窗 音频文件读取 librosa是非常强大的python语音信号处理库。 读取音频: 使用语句librosa.load(path, sr=22050, mono=True, offset=0.0, duration=None)读取音频文件,默认的采样率是22050,若要保留音频的原始采样率,使用sr=None。 其中: path:表示音频文件的路径 sr:表示采样率 mono:bool,是布尔类型,表示是否将信号转换为单声道 offset:float,后

weixin_45272908的博客 1万+

Dubbo实战(二) - 环境搭建

Dubbo 采用全 Spring 配置方式,透明化接入应用,对应用没有任何 API 侵入,只需用 Spring 加载 Dubbo 的配置即可,Dubbo 基于 Spring 的 Schema 扩展 进行加载。 如果不想使用 Spring 配置,可以通过 API 的方式 进行调用。 1 Provider 完整安装步骤,请参见:示例提供者安装 1.1 定义服务接口 DemoService.java ...

JavaEdge全是干货的技术号 1832

线性代数笔记【空间曲面】

二次曲面 曲面可以看成是一个动点或一条动曲线按照一定条件或规律运动产生的轨迹 曲面的方程即是该动点的坐标所满足的方程 空间解析几何中,一般会涉及到由曲面写方程和由方程看曲面两种类型问题 曲面与曲面方程 球面方程 球面:空间内与定点的距离等于定长的点的集合 这一定点叫球心,定长叫半径 标准方程 (x−x0)2+(y−y0)2+(z−z0)2=r2(x-x_0)^2+(y-y_0)^2+(z-z_0)^2=r^2(x−x0​)2+(y−y0​)2+(z−z0​)2=r2 球心P0(x0,y0,z0)P_0(

qq_40500005的博客 3246

dubbo本地直连方式2-外部配置文件配置的方式

说明 先看:https://www.yuque.com/docs/share/8dc0c4c1-6e65-4690-8cf8-26d6e500bcd0?# 《本地直连方式1-代码配置注解方式》 在这个博客的基础上进行改造的 ​ 注解方式配置直连痛点 代码配置的方式存在一个弊端,就是如果你提交代码的时候,你还要删掉直连配置, ​ 将下面的配置 @Reference(protocol = "dubbo", url = "dubbo://10.10.87.80:20880", version = "def

张俊杰 的博客 2200

嵌入式工程师成长之路(5)——板子调试

USB2514集线器调试总结说说USB连接线USB数据线上的“疙瘩”:原来有这么大用处!

云轩阁 4万+

【单智能体】AI 数据分析智能体案例讲解(附完整源码)

本案例将引导您构建一个基于 AI 的数据分析智能体,让用户能够通过自然语言查询来分析 CSV 和 Excel 文件中的数据,无需掌握 SQL 知识。该智能体使用 Agno Agent 框架集成 OpenAI GPT-4o 模型,并利用 DuckDB 提供高效的数据处理能力。

rengang66的博客 238

【dubbo】——开发必备技能

&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;在使用dubbo开发过程中,多人通用一套环境,会造成明明程序启动却不执行断点的情况,执行结果和预期不符却找不到问题等等影响开发效率的问题。针对这些情况,dubbo也提供了响应的解决方案,减少开发过程的困扰。 直连提供者 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;

漫漫长途,终有回转;余味苦涩,终有回甘 520

2026年算法工程师常见面试简答题

本文摘要:文章系统梳理了机器学习与深度学习中的30个核心概念,涵盖模型优化、评估指标、经典算法和大模型应用等关键知识点。主要内容包括:1)过拟合与欠拟合的成因及解决方法;2)偏差-方差权衡原理;3)数据划分与交叉验证策略;4)分类/回归任务评估指标选择;5)逻辑回归、决策树、SVM等传统算法解析;6)梯度下降优化与正则化技术;7)CNN、RNN、Transformer架构对比;8)Embedding表示与RAG技术。特别强调面试高频考点如XGBoost改进、注意力机制原理等,并给出实际工程中的解决方案建议,

不务正业的猿 349

Dubbo vs Spring Cloud Gateway:本质剖析与全面对比指南

Dubbo是“微服务内部的高速公路系统”,负责服务间的高效通信是“微服务城市的收费站和交通指挥中心”,负责外部流量的统一管理和路由。

全栈开发工程师 1326

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

完整版来了:阿里Dubbo技术负责人准备的源码教程,很有大厂风格

在技术领域,不断学习和深入了解先进的技术是保持竞争力的关键。今天,我们迎来了一份备受期待的源码教程——阿里Dubbo技术负责人准备的完整版!这不仅仅是一份教程,更是一次近距离感受大厂技术风格的机会。标题中提到的阿里Dubbo技术负责人为我们准备的教程,无疑让人期待满满。大厂的技术负责人,通常代表着丰富的实战经验和深厚的技术底蕴。这份完整版的源码教程,或许会为广大技术爱好者和从业者带来前所未有的学习体验。这不仅是一次深入Dubbo框架的机会,更是一次近距离感受大厂技术风格的机遇。

m0_62051288的博客 1138

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Dubbo常见报错分析与实战解决方案

在分布式系统架构中,服务框架是实现微服务通信的核心组件。Dubbo作为主流RPC框架,其工作原理基于服务注册发现和远程过程调用机制。理解序列化协议、网络通信、线程模型等基础概念,对排查Dubbo异常具有重要价值。实际工程中,配置错误、序列化异常、网络超时等问题频发,需要掌握服务治理工具和性能调优方法。本文针对Dubbo高频报错场景,提供配置检查、线程池优化等实用解决方案,帮助开发者提升分布式系统稳定性。

weixin_34161032的博客 397

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

京东T8全面详解Java开源框架,透彻剖析尽在《Netty权威指南》

在互联网领域,阿里的分布式服务框架Dubbo、RocketMQ,大数据的基础序列化和通信框架Avro, 以及很多开源的软件都已经开始使用Netty来构建高性能、分布式通信能力,Netty社区的活跃度也名列前茅。《Netty权威指南》是异步非阻塞通信领域的经典之作,适合架构师、设计师、软件开发工程师、测试人员和其他对Java NIO 框架、Java 通信感兴趣的相关人士阅读,相信通过学习本书,能够熟悉和掌握Netty这一优秀的异步通信框架,实现高可用分布式系统的构建。添加图片注释,不超过 140 字(可选)

m0_63437643的博客 918

阿里Dubbo技术负责人亲自呈现:完整版源码教程,彰显大厂风范

在技术领域,不断学习和深入了解先进的技术是保持竞争力的关键。今天,我们迎来了一份备受期待的源码教程——阿里Dubbo技术负责人准备的完整版!这不仅仅是一份教程,更是一次近距离感受大厂技术风格的机会。标题中提到的阿里Dubbo技术负责人为我们准备的教程,无疑让人期待满满。大厂的技术负责人,通常代表着丰富的实战经验和深厚的技术底蕴。这份完整版的源码教程,或许会为广大技术爱好者和从业者带来前所未有的学习体验。这不仅是一次深入Dubbo框架的机会,更是一次近距离感受大厂技术风格的机遇。

老男孩的架构路 240

java面试题刷题软件,为什么有人说Java开发不再吃香

前两天,我收到了蚂蚁金服的offer,从朋友的内推开始面试到拿到最后offer经历了4面技术、一面交叉面和一面HR面。经过了漫长的等待和几次几乎折磨的面试之后,终于拿到了offer。

m0_61408947的博客 1004

自学Java一定要精通的企业级框架汇总

第一阶段:企业级开发—基础框架 学习掌握本阶段内容,可以快速、规范的开发中小型系统,例如: 外卖系统、租房系统 技术点: 项目构建Maven 从基础到高级,深入了解Maven项目的构建及管理方式。 Maven项目管理从基础到高级应用,Java项目开发必会管理工具 版本控制Git 从最基本的环境配置与安装到Git的基本操作,轻松应对Git在使用时遇到的常见问题。 Java进阶Git全套教程,完整的项目管理工具教程_ ​ SSM(Spring框架+SpringMVC+持久层框架Mybatis) 讲解通俗易懂,覆

技术专家 627

linux安装软件有哪几种方式

话不多说,先上张图 一、微服务必备技能: 二、一起从浅入深理解DUBBO! **先来看一份DUBBO脑图:**HelloWorld+前置知识+适合群体+架构(核心点:生产者 消费者问题 特点:连通性,健壮性,伸缩性,升级型、节点调用关系图) 什么是Dubbo(分布式服务框架+RPC远程调用解决服务+SOA服务治理方案) Dubbo的由来(需要解决的问题:1、依赖管理 2、路由透明 3、服务治理) 主要是对Dubbo总体的介绍,让大家对Dubbo有一个总体的认识。首先介绍后台应用 架构的演进过程,从最初

目标检测专栏持续更新中,改进YOLO系列通用,适用v5、v7、v8、所有博客均是团队原创博客,所有文章禁止转载,违者必究。 392

Dubbo 3.0服务暴露流程详解与优化实践

分布式服务框架中的服务暴露机制是RPC调用的基础环节,其设计直接影响系统稳定性和性能。Dubbo作为主流Java RPC框架,通过多阶段暴露流程实现高效服务注册与调用。服务暴露首先完成本地JVM内的Invoker构建,再通过协议层处理实现远程通信,最终将元数据发布到注册中心。这一过程涉及序列化优化、网络协议选择、负载均衡等核心技术,其中Dubbo 3.0新增的元数据中心和Triple协议支持显著提升了跨语言调用能力。在微服务架构下,合理的服务暴露配置能有效解决40%以上的分布式调用问题,特别适用于电商、金融

weixin_30875157的博客 381
上一篇: 探索分布式服务框架Dubbo10:Dubbo和Spring Cloud微服务架构对比
下一篇: 探索分布式服务框架Dubbo5:Dubbo架构原理
wrr-cat
博客等级 码龄9年 128粉丝 302原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值