dubbo源码分析
文章平均质量分 97
dubbo源码分析
jy02268879
这个作者很懒,什么都没留下…
展开
-
【十三】Dubbo源码分析之线程模型、限流、负载均衡、超时、重试、降级
一、限流介绍及配置Dubbo中能够实现服务限流的方式较多,可以划分为两类:直接限流与间接限流直接限流:通过对连接数量直接进行限制来达到限流的目的。间接限流:通过一些非连接数量设置来达到限制流量的目的。按照流量的方向又分为:入口限流与出口限流入口限流:以下图为例,就是Provider限制每个Consumer进来的流量,以防有Consumer突然流量飙升把Provider调死了出口限流:以下图为例,Consumer限制自己调用每个Provider的流量dubbo调用模型原创 2021-05-10 20:42:08 · 845 阅读 · 2 评论 -
【零】dubbo框架设计【转】
转自官方文档:http://dubbo.apache.org/zh-cn/docs/dev/design.html整体设计图例说明:图中左边淡蓝背景的为服务消费方使用的接口,右边淡绿色背景的为服务提供方使用的接口,位于中轴线上的为双方都用到的接口。 图中从下至上分为十层,各层均为单向依赖,右边的黑色箭头代表层之间的依赖关系,每一层都可以剥离上层被复用,其中,Service 和 Config 层为 API,其它各层均为 SPI。 图中绿色小块的为扩展接口,蓝色小块为实现类,图中只显示用于关转载 2021-03-09 23:06:40 · 154 阅读 · 0 评论 -
【一】springboot+dubbo、dubbo-admin项目搭建及使用
项目目录pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.原创 2020-10-21 20:11:48 · 875 阅读 · 1 评论 -
【二】dubbo源码分析之服务提供方启动(注解方式启动spring+dubbo)
测试使用代码:https://github.com/apache/dubbo-samples.git2.6.X分支服务提供方的启动代码:/* * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additiona原创 2020-10-27 20:58:30 · 1101 阅读 · 0 评论 -
【三】dubbo源码分析之服务提供方export(服务暴露)
上一章讲了服务提供方启动的时候会扫描所有@Service注册,并注册相应的ServiceBean。spring发送ContextRefreshedEvent后每个ServiceBean会通过自生的export方法暴露。这章详细讲export怎么暴露服务,注册到注册中心。ServiceBean.export public void export() { super.export(); // Publish ServiceBeanExportedEvent原创 2020-10-27 21:00:51 · 926 阅读 · 1 评论 -
【四】dubbo源码分析之服务提供方registry(服务注册)
1原创 2020-10-27 21:03:10 · 1090 阅读 · 0 评论 -
【五】dubbo源码分析之服务调用方启动
1原创 2020-11-02 20:38:24 · 428 阅读 · 2 评论 -
【六】dubbo源码分析之服务调用方refer(服务引用、服务订阅、创建invoker、创建代理、查看动态生成的.class文件)
前面一篇讲了服务调用方启动的大致流程本章主要讲refer服务引用,分成两个重点,一个是创建invoker,一个是创建代理。原创 2020-11-02 20:39:40 · 1408 阅读 · 0 评论 -
【七】dubbo源码分析之服务目录Directory
简介Directory主要做什么事的:1.服务目录中存储了一些和服务提供者有关的信息,通过服务目录,服务消费者可获取到服务提供者的信息,比如 ip、端口、服务协议等。2.服务目录在获取注册中心的服务配置信息后,会为每条配置信息生成一个 Invoker 对象,并把这个 Invoker 对象存储起来,这个 Invoker 才是服务目录最终持有的对象。3.Invoker这是一个具有远程调用功能的对象。4.服务目录会随注册中心的变化而进行动态调整。继承关系图Node 这个接口继承者有原创 2020-11-02 20:43:28 · 430 阅读 · 2 评论 -
【八】dubbo源码分析之集群Cluster
一、简介Cluster主要两个作用1.将多个服务提供者合并为一个 Cluster Invoker,并将这个 Invoker 暴露给服务消费者。集群模块是服务提供者和服务消费者的中间层,为服务消费者屏蔽了服务提供者的情况。服务A调用服务B,服务B有5台机器,Cluster会决定到底调用服务B的哪台机器。服务A不用关心这个。2.集群容错。服务调用失败的时候,做什么处理(重试?抛出异常?仅仅打印异常日志等等)dubbo中集群容错相关的组件有:Cluster、Cluster Invoker原创 2020-11-05 23:49:34 · 296 阅读 · 0 评论 -
【九】dubbo源码分析之服务调用方发起调用+发送请求(入口InvokerInvocationHandler.invoke)
一、简介dubbo的服务调用主要包括几个大的步骤1.发送请求2.编解码3.服务降级4.过滤器链处理5.序列化6.线程派发以及响应请求二、服务调用的发送与接收1.服务调用方2.服务接收方三、响应发送与接收响应1.服务接收方的响应2.服务调用方接收响应...原创 2020-11-05 23:50:51 · 2045 阅读 · 0 评论 -
【十】dubbo源码分析之服务提供方返回结果+服务调用方接收返回
一、服务提供方返回结果服务提供方调用指定服务后,会将调用结果封装到 Response 对象中,并将该对象返回给服务消费方。服务提供方也是通过 NettyChannel 的 send 方法将 Response 对象返回。二、服务调用方接收返回服务消费方在收到响应数据后,首先要做的事情是对响应数据进行解码,得到 Response 对象。然后再将该对象传递给下一个入站处理器,这个入站处理器就是 NettyHandler。接下来 NettyHandler 会将这个对象继续向下传递,最后.原创 2020-11-25 19:42:45 · 1549 阅读 · 0 评论 -
【十一】dubbo源码分析之服务提供方接收请求+处理
一、简介1.服务提供方接收请求的大致流程默认情况下 Dubbo 使用 Netty 作为底层的通信框架。1.Netty 检测到有数据入站后,通过解码器对数据进行解码。解码器将数据包解析成 Request 对象。入站开始的调用链Netty相关部分Netty相关部分:DefaultThreadFactory$DefaultRunnableDecorator.run -------->SingleThreadEventExecutor.run-------->NioEv.原创 2020-11-25 19:44:14 · 500 阅读 · 0 评论 -
【十二】Dubbo之SPI与自适应拓展机制
一、Dubbo SPI首先,JAVA 本身的SPI机制,请看这篇:【转】SPI服务加载机制注册驱动原理分析、线程上下文类加载器、违反双亲委派模型Java SPI的使用很简单。也做到了基本的加载扩展点的功能。但Java SPI有以下的不足:需要遍历所有的实现,并实例化,然后我们在循环中才能找到我们需要的实现。 配置文件中只是简单的列出了所有的扩展实现,而没有给他们命名。导致在程序中很难去准确的引用它们。 扩展如果依赖其他的扩展,做不到自动注入和装配 不提供类似于Spring的IOC和A..原创 2020-11-25 20:09:35 · 477 阅读 · 0 评论