dubbo隐式传参

简介: dubbo隐式传参

dubbo隐式传参

1、预备知识

说明:以下只使用于使用 InternalThread 的情况,使用Thread的不建议使用InternalThreadLocal

1. InternalThreadLocalMap

常用属性

Object[] indexedVariables: 对象数据用于数据存储;

static final AtomicInteger NEXT_INDEX:用于记录InternalThreadLocal实例位于数组中的位置。

2. InternalThread

常用属性

InternalThreadLocalMap threadLocalMap : 用于存储当前线程中的InternalThreadLocal实例内容。

3. InternalThreadLocal

一个类似ThreadLocal的类。

InternalThreadLocal实例的index用于判断线程内 InternalThreadLocalMap 属性的内部数组的位置。

2、RpcContext 类

全类名:org.apache.dubbo.rpc.RpcContext ;

作用:一个线程共享数据的处理类,使用静态的**InternalThreadLocal**的实例属性 LOCAL 存储入参内容, SERVER_LOCAL存储出参内容。

3、ConsumerContextFilter类

全类名:org.apache.dubbo.rpc.filter.ConsumerContextFilter


作用:


a. 服务作为消费者调用其他生产者时,会执行其**invoke(Invoker<> invoker, Invocation invocation)**方法,调用RpcContext设置调用地址等信息,remove当前线程的SERVER_LOCAL实例对应的map,处理结束后remove当前线程的LOCAL实例对应的map。


b. 内部类ConsumerContextListener负责将传回来的隐性参数添加到当前线程的LOCAL实例对应的map中。

3、ContextFilter 类

全类名: org.apache.dubbo.rpc.filter.ContextFilter

作用:

a. 服务作为生产者被调用时会执行其**invoke(Invoker<> invoker, Invocation invocation)**方法,接收隐性参数并设置到当前服务的线程的InternalThreadLocalMap中。


b. 内部类ContextListener负责将传递过来的map添加到当前线程的LOCAL实例对应的map中。

4、目前公司方案

1. 自定义ConsumerFilter类

全类名:com.casstime.saas.dubbo.filter.ConsumerFilter extends ListenableFilter

作用:invoke(Invoker<> invoker, Invocation invocation)方法中实现session、crm session、链路跟踪和客户端信息 传递,从而实现登录信息隐性传递。


内部类:ConsumerResultListener 暂未使用,部分代码注释

2. 自定义ProviderFilter类

全类名:com.casstime.saas.dubbo.filter.ProviderFilter extends ListenableFilter


作用:invoke(Invoker<> invoker, Invocation invocation) 方法中实现 session、crm session、链路跟踪和客户端信息 接收,从而获取来自消费者的用户信息。


内部类:ProviderResultListener 暂未使用,部分代码已注释


3. 自定义DubboConfig类

全类名:com.casstime.saas.dubbo.config.DubboConfig


作用:


a. 将上述两个自定义类配置到配置文件com.alibaba.dubbo.rpc.Filter后,采用此配置类 实例化 到bean容器中。


b. 定义了dubbo生产者和消费者的xml文件路径。


c. 其他(暂未了解)


相关文章
|
12月前
|
Dubbo 应用服务中间件 Apache
带你读《Apache Dubbo微服务开发从入门到精通》——五、 上下文隐式传参(上)
带你读《Apache Dubbo微服务开发从入门到精通》——五、 上下文隐式传参(上)
135 0
|
12月前
|
Dubbo 应用服务中间件 Apache
带你读《Apache Dubbo微服务开发从入门到精通》——五、 上下文隐式传参(下)
带你读《Apache Dubbo微服务开发从入门到精通》——五、 上下文隐式传参(下)
102 1
|
应用服务中间件 Dubbo
dubbo,隐式传参只会使用一次的问题
dubbo,隐式传参只会使用一次的问题
531 0
|
16天前
|
Dubbo Java 应用服务中间件
微服务学习 | Springboot整合Dubbo+Nacos实现RPC调用
微服务学习 | Springboot整合Dubbo+Nacos实现RPC调用
|
6月前
|
负载均衡 Dubbo 应用服务中间件
微服务技术系列教程(31) - Dubbo-原理及负载均衡分析
微服务技术系列教程(31) - Dubbo-原理及负载均衡分析
56 0
|
6月前
|
Dubbo Java 应用服务中间件
微服务技术系列教程(30) - Dubbo-SpringCloud与Dubbo区别
微服务技术系列教程(30) - Dubbo-SpringCloud与Dubbo区别
47 0
|
6月前
|
Dubbo Java 应用服务中间件
阿里新框架干掉微服务,换下Dubbo,Spring CloudAlibaba王者降临
tm快了,不知不觉中金九银十的秋招已经快结束了,不少同学现在已经拿到offer了吧~现在的面试可是越来越难了,动不动就是“互联网三高”。
阿里新框架干掉微服务,换下Dubbo,Spring CloudAlibaba王者降临
|
5月前
|
Dubbo Java 应用服务中间件
阿里巴巴资深架构师深度解析微服务架构设计之SpringCloud+Dubbo
软件架构是一个包含各种组织的系统组织,这些组件包括Web服务器,应用服务器,数据库,存储,通讯层),它们彼此或和环境存在关系。系统架构的目标是解决利益相关者的关注点。
|
13天前
|
Dubbo Java 应用服务中间件
Spring Cloud Dubbo: 微服务通信的高效解决方案
【4月更文挑战第28天】在微服务架构的发展中,服务间的高效通信至关重要。Spring Cloud Dubbo 提供了一种基于 RPC 的通信方式,使得服务间的调用就像本地方法调用一样简单。本篇博客将探讨 Spring Cloud Dubbo 的核心概念,并通过具体实例展示其在项目中的实战应用。
15 2
|
2月前
|
Cloud Native Dubbo 应用服务中间件
【Dubbo3高级特性】「微服务云原生架构」带你从零基础认识搭建公司内部服务用户中心体系(实战指南-序章)
【Dubbo3高级特性】「微服务云原生架构」带你从零基础认识搭建公司内部服务用户中心体系(实战指南-序章)
64 0