文章目录简介RPC远程方法调用 VS 本地方法调用Dubbo的定义基本原理核心功能面向接口代理的高性能RPC调用智能容错和负载均衡服务自动注册和发现高度可扩展能力运行期流量调度可视化的服务治理与运维详细解释服务超时集群容错服务降级参数回调Dubbo中的REST动态配置 简介RPC在分布式计算,远程过程调用(Remote Procedure Call 缩写为RPC是一个计算机通信协议。该协议允许运
dxg的简单dubbo学习总结–于2019/10/23dubbo测试版本 2.6.2 - >(Jun 05, 2018)1.启动时检查(在spring容器启动时即使没有服务也不会报错,只有在调用时才检查)<dubbo:reference check="false" /> (优先级更高)
or
<dubbo:consumer check="false" />2.集群容
转载
2024-09-11 13:27:26
59阅读
目录Dubbo版本简介条件路由标签路由配置规则Dubbo版本Dubbo 2.6.7版本官方文档旧路由规则文档中【标签路由规则】存在描述错误。 https://github.com/apache/dubbo-website/issues/1022这是我提交的issue
简介路由规则决定Dubbo调用哪些目标服务器,分为条件路由规则和脚本路由规则一般由监控中心(Dubbo-Admin)或者治理中心来配
转载
2024-03-24 09:39:56
128阅读
前言:这是集群模块,将多个服务提供方伪装为一个提供方,包括:负载均衡, 容错,路由等,集群的地址列表可以是静态配置的,也可以是由注册中心下发。下图描述了dubbo调用过程中的对于集群,负载等的调用关系,根据该图一步步进行解读。 一,Cluster 将Directory中的多个Invoker伪装成一个Invoker, 对上层透明,包含集群的容错机制@SPI(FailoverCluster.NAME
转载
2024-07-01 21:58:41
117阅读
首先Dubbo基于SPI(Service Provider Interface)服务发现机制加载自定义的所有组件,大致实现思路-如:在Protocol接口上添加@SPI注解 -@SPI("dubbo"),然后我们需要在META-INF下面dubbo/internal添加com.alibaba.dubbo.rpc.Protocol文件,里面就是我们对于Protocol接口的所有自定义组件的实现。一、
转载
2024-03-06 11:17:11
165阅读
最近在项目上遇到一个有关dubbo的问题,项目分为两层:下层是一些基础服务,上层是业务服务调用下层的基础服务。上层服务的有一个全局的异常拦截器来拦截异常。
@ControllerAdvice
@Slf4j
public class ExceptionFilter {
@ExceptionHandler
public Response
转载
2024-04-01 00:02:36
171阅读
前言Dubbo 整体介绍的差不多了,今天就开始面试环节了,我会列举一些常见的 Dubbo 面试题,只会抓着重的,一些太简单的我就不提了。开始表演知道什么是 RPC 么?一般面试官会以这样的问题来切入、热场,毕面试也是循序渐进的过程,所以你也不用太心急一开始就芭芭拉说一堆,要抓住关键点简单阐述先。而且面试官能从这个问题鉴定出你平日的工作内容会不会连 RPC 都没接触过,会不会就只是一条龙
前言:官网文档有一重要章节SPI,建立好好阅读,为本文做铺垫1.搭建工程,结构如下:dubbo-learn ---> 父pomdubbo-api -
转载
2024-04-18 08:28:47
37阅读
dubbo处理自定义异常背景在实际项目中,我们不可避免地需要使用自定义的异常,一般这个异常会继承RuntimeException,然后我们通过@RestControllerAdvice注解,拦截业务异常类,做一些处理,但是在使用dubbo构建项目时,会发现provider抛出自定义异常,然后在消费者端,不会捕捉到我们的自定义异常,而是以RuntimeException的形式被捕获。原因dubbo的
转载
2024-03-26 22:14:01
53阅读
前言本文基于Dubbo2.6.x版本,中文注释版源码已上传github:xiaoguyu/dubbo今天,来聊点短的,服务路由Router,本文讲的是路由的调用路径,不讲路由的规则解析。想了解规则解析的可以去官方文档:服务路由Dubbo的路由,就是根据规则,规定了哪些服务消费者可调用哪些服务提供者。怎么用我们可以在服务治理控制台Dubbo-Admin写入路由规则。安装Dubbo-Admin我是使用
转载
2024-03-27 16:09:29
157阅读
路由使用: 配置后consumer在获取到集群服务的invoker后 会针对 port为20881的进行过滤介绍 及 源码dubbo的路由规则,主要包括 Router、RouterFactory 两个核心接口和RouterChain一个核心类;其中RouterChain是入口,RouterChain会通过RouterFactory生成Router放入缓存list,然后遍历执行route;而Rout
转载
2024-05-27 10:53:33
183阅读
想更好的使用dubbo,最好刷几遍用户指南,dubbo用户指南几乎包含了所有dubbo所有的特性用户指南地址:https://dubbo.gitbooks.io/dubbo-user-book/demos/subscribe-only.html以下是自己在用户指南各个项的理解 具体用户法查阅用户指南的对应项启动时检查concumer启动时 是否能够从注册中心订阅下来所有服务,如
转载
2024-06-02 09:51:28
107阅读
我们知道Dubbo中大部分的实现类加载都是通过SPI实现,同样Dubbo也提供了Filter机制,这个部分研究下怎么实现了,是怎样的一个调用逻辑。 首先我们看下Dubbo中Filter的定义:* Filter Chain in 3.x
*
* -> Filter -> Invoker
*
* Pr
转载
2024-03-18 20:14:22
25阅读
一、服务引用 在消费端dubbo的使用中我们会把需要引用的provider服务配置在dubbo-consumer.xml中来进行引用,这一篇主要来分析dubbo的provider服务在消费端的服务引用。 在消费端的应用中的服务引用配置:<dubbo:reference id="testApi" int
转载
2024-05-23 15:50:46
76阅读
1.今天没太多事情,挤出点时间,研究了下dubbo的路由规则实现。
首先,看看dubbo消费端的主要调用流程(这里就不画图了),以后补充:
第一步:创建消费端代理:ReferenceConfig.createProxy,这里没什么特别,典型的C/S调用设计,都是通过JAVA动态代理或是Javassist的代理实现,比如mybatis mapper。
转载
2024-04-07 08:09:35
78阅读
学习内容1.序列化:2.地址缓存3.超时4.重试:5.多版本6.负载均衡7 集群容错:服务降级 1.序列化:dubbo 内部已经将序列化和反序列化的过程内部封装了我们只需要在定义pojo类时实现seriali zable接口即可一般会定义一 个公共的pojo模块,让生产者和消费者都依赖该模块。2.地址缓存注册中心挂了,服务依旧可以访问可以,因为dubbo服务消费者在第一-次调用时,会将服务提供方
转载
2024-04-23 18:12:58
55阅读
分布式开发的模式下,app会有很多,开发环境下,如果都在一台开发机上启动所有服务进行调试,逐渐变为不可能。一般的,会在内网部署一整套app,开发机器上仅启动自己负责的一个app,通过dubbo调用开发环境下的dubbo服务,来完成整个系统的开发调试。那么问题随之而来,开发机器上启动app的同时,也会注册其dubbo服务到开发环境。那么开发环境下的dubbo服务就包括了两类:1. 服务器上的dubb
转载
2024-02-26 18:12:21
81阅读
Dubbo框架内自定义很多XML标签,方便以XML方式注册服务;本篇文章先了解下Dubbo框架拥有哪些XML标签,然后给出自定义标签的流程并动手自定义标签。1.Dubbo框架中的那些标签Dubbo框架标签定义的源文件是dubbo.xsd,该文件位于dubbo.jar内/META-INF/目录下;源文件内容太多就不一一列出来,不过从dubbo.xsd得知Dubbo拥有以下15个标签:annotati
转载
2024-04-15 09:47:33
77阅读
本章介绍一下dubbo的cluster相关知识,可能主要有以下知识点:(对应的模块源码都是在dubbo-cluster模块中,整体理解起来难度相对于前面章节要容易很多)& 集群容错架构之设计剥析& 集群容错之drictory目录& 集群容错之router路由& 集群容错之cluster集群& 集群容错之loadbalance负载均衡接下来就按照上面的知识点进
转载
2024-10-10 14:35:01
39阅读
Dubbo作为一个分布式的服务治理框架,提供了集群部署,路由,软负载均衡及容错机制 下图描述了dubbo调用过程中的对于集群,负载等的调用关系。 Cluster将Directory中的多个Invoker伪装成一个Invoker, 对上层透明,包含集群的容错机制Cluster接口定义@SPI(FailoverCluster.NAME)
public interface Clus