dubbo源码学习1-服务提供方接入执行源码分析
dubbo是以Netty框架开发的服务端
dubbo 服务提供方执行流程图
NettyServerHandler :从Netty框架到dubbo的第一步,dubbo的 ChannelInboundHandler 处理Netty发过来的请求数据包,这一步就是Netty的API
NettyServer:dubbo的服务端,只做了数据包接收处理,内部包含了 MultiMessageHandler,
MultiMessageHandler :用于处理过个请求数据包的情况,如果是单包,则交给HeartbeatHandler
HeartbeatHandler:会判断当前数据包是否是心跳包,如果是按照心跳处理,如果不是,则交给AllChannelHandler处理
AllChannelHandler:根据数据包创建管道事件任务,并将任务交给线程池异步处理
以下阶段即是提交到dubbo线程池执行的步骤
ChannelEventRunnable:处理请求数据包 Request,根据事件类型处理
DecodeHandler:处理数据包解码
HeaderExchangeHandler:根据数据包类型调用不同的处理器,会判断是否双向包,如果是双向包,则需要写响应
DubboProtocol:dubbo协议处理器,会调用CallbackRegistrationInvoker,获取对应的Invoker并调用
CallbackRegistrationInvoker:会调用责任链的入口处理
CopyOfFilterChainNode。filterInvoker,同时请求调用处理完成之后,也会处理 众多 filters 的 onResponse
序号 | 过滤器 | 分组 | order | 作用 |
---|---|---|---|---|
1 | ContextFilter | provider | Integer.MIN_VALUE | 主要负责RPC调用上下文的传递和处理,创建RpcContext上下文 |
2 | ProfilerServerFilter | provider | Integer.MIN_VALUE | 调用链路性能分析,它能够详细记录服务调用的执行时间、方法调用栈等关键性能数据,帮助开发者进行深度性能优化和瓶颈定位 |
3 | MetricsProviderFilter | provider | Integer.MIN_VALUE + 100 | 用于指标采集 监控 Dubbo 服务的调用性能、流量、错误率等关键数据 |
4 | EchoFilter | provider | -110000 | 主要用于处理 回声测试(Echo Test) 请求,即服务消费者通过 Dubbo 的 $echo() 方法检测服务提供者是否存活并正常响应 |
5 | ClassLoaderFilter | provider | -30000 | 切换类加载器 ,在invoke之前设置 STAGED_CLASSLOADER 和 WORKING_CLASSLOADER,在 onResponse时恢复 STAGED_CLASSLOADER |
6 | HttpContextFilter | provider | -29000 | 将 HTTP 协议 转化为 Dubbo 内部的 RPC 上下文 |
7 | GenericFilter | provider | -20000 | 用于处理泛化调用(Generic Invoke)相关的功能 |
8 | AccessLogFilter | provider | 0 | 记录服务访问日志 |
9 | ExceptionFilter | provider | 0 | 进行异常处理,在onResponse时判断异常类型 |
10 | MonitorFilter | provider | 0 | 在Invoker之前 count up,在 onResponse 时 count down |
11 | TimeoutFilter | provider | 0 | 在 onResponse 时进行超时判断 |
12 | TraceFilter | provider | 0 | 在 Invoker之后记录链路信息 |
13 | HttpContextCallbackFilter | provider | 10 | 在 onResponse 时将 RpcContext上下文转化为Http协议响应 |
14 | RestExtensionExecutionFilter | provider | 1000 | 主要处理基于 HTTP/REST 协议的扩展调用逻辑 |
15 | ClassLoaderCallbackFilter | provider | Integer.MAX_VALUE | 在 onResponse 时恢复 WORKING_CLASSLOADER |
AbstractProxyInvoker :执行反射调用
原文地址:https://blog.csdn.net/qq_45325916/article/details/149137254
免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!