dubbo原理
章绍龙
这个作者很懒,什么都没留下…
展开
-
Dubbo总结
服务暴露:大致可分为三个部分,第一部分是前置工作,主要用于检查参数,组装 URL:IP、端口、接口、方法、版本、注册中心类型registry://localhost:2181/com.alibaba.dubbo.registry.RegistryService?application=dubbo-provider&dubbo=2.6.2&export=dubbo://1...原创 2020-04-19 20:42:48 · 304 阅读 · 0 评论 -
Dubbo服务引用
1. 简介上一篇文章详细分析了服务导出的过程,本篇文章我们趁热打铁,继续分析服务引用过程。在 Dubbo 中,我们可以通过两种方式引用远程服务。第一种是使用服务直连的方式引用服务,第二种方式是基于注册中心进行引用。服务直连的方式仅适合在调试或测试服务的场景下使用,不适合在线上环境使用。因此,本文我将重点分析通过注册中心引用服务的过程。从注册中心中获取服务配置只是服务引用过程中的一环,除此之外,...转载 2020-04-19 13:51:39 · 177 阅读 · 0 评论 -
Dubbo服务Router
1. 简介上一篇文章分析了集群容错的第一部分 — 服务目录 Directory。服务目录在刷新 Invoker 列表的过程中,会通过 Router 进行服务路由,筛选出符合路由规则的服务提供者。在详细分析服务路由的源码之前,先来介绍一下服务路由是什么。服务路由包含一条路由规则,路由规则决定了服务消费者的调用目标,即规定了服务消费者可调用哪些服务提供者。Dubbo 目前提供了三种服务路由实现,分...转载 2020-04-19 15:19:47 · 809 阅读 · 0 评论 -
Dubbo服务Cluster
1.简介为了避免单点故障,现在的应用通常至少会部署在两台服务器上。对于一些负载比较高的服务,会部署更多的服务器。这样,在同一环境下的服务提供者数量会大于1。对于服务消费者来说,同一环境下出现了多个服务提供者。这时会出现一个问题,服务消费者需要决定选择哪个服务提供者进行调用。另外服务调用失败时的处理措施也是需要考虑的,是重试呢,还是抛出异常,亦或是只打印异常等。为了处理这些问题,Dubbo 定义...转载 2020-04-19 15:20:43 · 361 阅读 · 0 评论 -
Dubbo服务LoadBalance
1.简介LoadBalance 中文意思为负载均衡,它的职责是将网络请求,或者其他形式的负载“均摊”到不同的机器上。避免集群中部分服务器压力过大,而另一些服务器比较空闲的情况。通过负载均衡,可以让每台服务器获取到适合自己处理能力的负载。在为高负载服务器分流的同时,还可以避免资源浪费,一举两得。负载均衡可分为软件负载均衡和硬件负载均衡。在我们日常开发中,一般很难接触到硬件负载均衡。但软件负载均衡...转载 2020-04-19 15:21:25 · 712 阅读 · 0 评论 -
Dubbo服务调用过程
1. 简介在前面的文章中,我们分析了 Dubbo SPI、服务导出与引入、以及集群容错方面的代码。经过前文的铺垫,本篇文章我们终于可以分析服务调用过程了。Dubbo 服务调用过程比较复杂,包含众多步骤,比如发送请求、编解码、服务降级、过滤器链处理、序列化、线程派发以及响应请求等步骤。限于篇幅原因,本篇文章无法对所有的步骤一一进行分析。本篇文章将会重点分析请求的发送与接收、编解码、线程派发以及响...转载 2020-04-19 15:22:38 · 855 阅读 · 0 评论 -
Dubbo服务目录 Directory
1. 简介本篇文章,将开始分析 Dubbo 集群容错方面的源码。集群容错源码包含四个部分,分别是服务目录 Directory、服务路由 Router、集群 Cluster 和负载均衡 LoadBalance。这几个部分的源码逻辑相对比较独立,我们将会分四篇文章进行分析。本篇文章作为集群容错的开篇文章,将和大家一起分析服务目录相关的源码。在进行深入分析之前,我们先来了解一下服务目录是什么。服务目...转载 2020-04-19 15:18:58 · 213 阅读 · 0 评论 -
Dubbo服务暴露过程
1.简介本篇文章,我们来研究一下 Dubbo 导出服务的过程。Dubbo 服务导出过程始于 Spring 容器发布刷新事件,Dubbo 在接收到事件后,会立即执行服务导出逻辑。整个逻辑大致可分为三个部分,第一部分是前置工作,主要用于检查参数,组装 URL。第二部分是导出服务,包含导出服务到本地 (JVM),和导出服务到远程两个过程。第三部分是向注册中心注册服务,用于服务发现。本篇文章将会对这三...转载 2020-04-19 13:49:32 · 353 阅读 · 0 评论 -
Dubbo中的概念URL、Invocation、Invoker、Protocol
URL:定义了调用的url如协议、协议、参数等信息public final class URL implements Serializable { private static final long serialVersionUID = -1985165475234910535L; private final String protocol; private f...原创 2020-04-17 16:03:07 · 2290 阅读 · 0 评论 -
Dubbo SPI机制示例
1、dubbo SPI区别于JDK SPI,根据指定的key值,获取接口对应的实现,具体由下面支付示例展示:订单支付接口,使用@SPI 注解标注,默认是阿里支付package spi;import com.alibaba.dubbo.common.extension.SPI;/** * @Author: zhangshaolong001 * @Date: 2020/4/...原创 2020-04-16 08:49:51 · 338 阅读 · 0 评论 -
dubbo RPC调用超时处理--DefaultFuture
一、每次发起一次RPC调用,就创建一个Future对象,并将对象放入集合中//存放channel对象private static final Map<Long, Channel> CHANNELS = new ConcurrentHashMap<Long, Channel>();//存放Future对象private static final Map<Lo...原创 2020-01-13 18:37:30 · 967 阅读 · 0 评论 -
dubbo消费端调用过程
下方淡蓝背景( Consumer ):服务消费方使用的接口 上方淡绿色背景( Provider ):服务提供方使用的接口 中间粉色背景( Remoting ):通信部分的接口1、引用接口,此时可看到接口实现,为代理实现,handler是InvokerInvocationHandler2、进入InvokerInvocationHandler,执行invoke方法,进...原创 2020-01-13 18:15:57 · 517 阅读 · 0 评论 -
dubbo选javassist作为缺省动态代理原因
dubbo动态代理javassist和jdk区别:生成动态代理类:都可以根据字节码生成class文件,JAVAASSIST既可以通过动态代理也可以通过字节码生成class文件执行代理类的方法,javassist更快package proxySpeed;/** * @Author: zhangshaolong001 * @Date: 2019/12/3 8:19 PM ...原创 2019-12-03 20:42:19 · 1358 阅读 · 1 评论 -
dubbo标签的service与provider、reference与consumer的区别
<dubbo:service 与 <dubbo:provider是同一个级别provider是原始的服务提供方式:配置参数超级多,比较繁琐,学习成本大service是在provider的基础上给了很多默认值,用户使用时只需配置少量必需的值,大大降低学习成本。reference与consumer同理。...原创 2019-11-09 17:16:19 · 3893 阅读 · 1 评论 -
接口多实现优雅设计
那dubbo中cache功能举例,dubbo cache有jcache、lru、threadlocal三种缓存实现,具体要调用哪个,看dubbo协议cache参数,获取到cache参数后,获取对应的cache的实现;通过一个map集合,可先行将所有的实现都放入map中,key为cache参数的值,value为对应的实现或生产实现类的对应工厂。public abstract class Abs...原创 2019-11-09 16:58:57 · 221 阅读 · 0 评论 -
dubbo--协议
dubbo协议适合中台对前台业务,少对多,数据包小。单个连接dubbo官方给出的传输速度为7M/s,包括通讯、序列化与反序列化、解析等。千兆网卡速度为128M/s,因此:不同场景采用不同协议一、小数据包(适合长连接):1、长连接可以有效减少建立连接的时间,提高性能;1、如果采用单连接+长连接,并发高的情况下,通过增加消费端的服务器来增加并发量;适合小数据:因为是单连接,7M...原创 2019-01-22 21:48:14 · 286 阅读 · 0 评论