![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
dubbo
曲终人散121
努力。
展开
-
Dubbo ----5 Dubbo -协议
header用来存放一些协议信息,body具体存放要传输的经过序列化后的数据。1 同步异步2 请求和返回序列化的序列化方式3 响应状态码4 请求id5 body的长度原创 2021-04-21 19:30:42 · 50 阅读 · 0 评论 -
Dubbo中的InternalThreadLocal
InternalThreadLocal 是 ThreadLocal 的一个变种,当配合 InternalThread 使用时,具有比普通 Thread 更高的访问性能。InternalThread 的内部使用的是数组,通过下标定位,非常的快。如果遇得扩容,直接搞一个扩大一倍的数组,然后copy 原数组,多余位置用指定对象填充,完事。而 ThreadLocal 的内部使用的是 hashCode 去获取值,多了一步计算的过程,而且用 hashCode 必然会遇到 hash 冲突的场景,ThreadLocal原创 2020-12-11 00:23:13 · 1100 阅读 · 0 评论 -
Dubbo-6 服务消费
官方时序[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O6es3dig-1606840752987)(6%20%E6%9C%8D%E5%8A%A1%E6%B6%88%E8%B4%B9.assets/1604679571407.png)]Dubbo 服务调用过程比较复杂,包含众多步骤,比如发送请求、编解码、服务降级、过滤器链处理、序列化、线程派发以及响应请求等步骤2.1 服务调用方式Dubbo 支持同步和异步两种调用方式,其中异步调用还可细分为“有返回值”的异步调用和“原创 2020-12-02 00:39:42 · 215 阅读 · 0 评论 -
dubbo--5服务引用
Dubbo 服务引用的时机有两个:1在 Spring 容器调用 ReferenceBean 的 afterPropertiesSet 方法时引用服务2 ReferenceBean 对应的服务被注入到其他类中时引用。这两个引用服务的时机区别在于,第一个是饿汉式的,第二个是懒汉式的。默认情况下,Dubbo 使用懒汉式引用服务。如果需要使用饿汉式,可通过配置 dubbo:reference 的 init 属性开启。按照 Dubbo 默认配置进行分析。官方时序[外链图片转存失败,源站可能有防盗链机制,建原创 2020-12-02 00:38:24 · 169 阅读 · 0 评论 -
dubbo-- 4服务导出
始于 Spring 容器发布刷新事件,Dubbo 在接收到事件后,会立即执行服务导出逻辑。1 前置工作,主要用于检查参数,组装 URL。2 导出服务,包含导出服务到本地 (JVM),和导出服务到远程两个过程。3 向注册中心注册服务,用于服务发现。官方时序图:0 入口入口方法是 ServiceBean 的 onApplicationEvent。onApplicationEvent 是一个事件响应方法,该方法会在收到 Spring 上下文刷新事件后执行服务导出操作。方法代码如下:public v原创 2020-12-02 00:34:48 · 401 阅读 · 0 评论 -
Dubbo--3adapter
3 adapter1 为什么要设计adaptive?注解在类上和注解在方法上的区别?在 Dubbo 中,很多拓展都是通过 SPI 机制进行加载的,比如 Protocol、Cluster、LoadBalance 等。有时,有些拓展并不想在框架启动阶段被加载,而是希望在拓展方法被调用时,根据运行时参数进行加载。这听起来有些矛盾。拓展未被加载,那么拓展方法就无法被调用(静态方法除外)。拓展方法未被调用,拓展就无法被加载。对于这个矛盾的问题,Dubbo 通过自适应拓展机制很好的解决了。自适应拓展机制的实现逻辑比原创 2020-12-02 00:32:06 · 183 阅读 · 0 评论 -
Dubbo--2SPI
1 java原生spiMETA-INF/services 文件夹下创建一个文件,名称为 Robot 的全限定名 org.apache.spi.Robot文件。文件内容为实现类的全限定的类名,如下:org.apache.spi.OptimusPrimeorg.apache.spi.Bumblebee使用ServiceLoader serviceLoaderpublic class JavaSPITest { @Test public void sayHello() throws原创 2020-12-01 02:10:59 · 204 阅读 · 0 评论 -
dubbo---1总体
1 框架设计官网:http://dubbo.apache.org/zh/docs/v2.7/dev/design/图中左边淡蓝背景的为服务消费方使用的接口,右边淡绿色背景的为服务提供方使用的接口,位于中轴线上的为双方都用到的接口。图中从下至上分为十层,各层均为单向依赖,右边的黑色箭头代表层之间的依赖关系,每一层都可以剥离上层被复用,其中,Service 和 Config 层为 API,其它各层均为 SPI。图中绿色小块的为扩展接口,蓝色小块为实现类,图中只显示用于关联各层的实现类。图中蓝色虚线原创 2020-12-01 02:06:54 · 240 阅读 · 0 评论 -
dubbo--netty
Exchange Transport 层用到的netty消费者使用 NettyClient,提供者使用 NettyServer,Provider 启动的时候,会开启端口监听,使用我们平时启动 Netty 一样的方式。而 Client 在 Spring getBean 的时候,会创建 Client,当调用远程方法的时候,将数据通过 dubbo 协议编码发送到 NettyServer,然后 NettServer 收到数据后解码,并调用本地方法,并返回数据调用。1 NettyServer protec原创 2020-11-05 23:16:14 · 256 阅读 · 0 评论