导读
- 本文主要分析Dubbo框架整体设计及层次划分,内容主要来源于官网
- 关键字 :Dubbo整体设计、Dubbo层次划分
- 版本:Dubbo 2.7+
- 经过互联网架构的演变,微服务的概念已经深入骨髓了。说起微服务,首先想到的就是:Dubbo、SpringCloud。本篇与后面的连载都将专注于分析Dubbo框架,想了解SpringCloud的读者可以参考作者的SpringCoud文集。
Dubbo框架设计概览
-
说到Dubbo的整体设计,不得不引用官方的配图:
概况图 当然,如果你是第一次看到这个图,可能会被KO。即使作者这个老司机第一眼看到也是一脸懵逼,嘴上真牛逼,心里mmp !
在这里,作者给出的建议是我们只看最左边的分层,暂不考虑右边的调用过程,而且本文的目的就是说清楚Dubbo的分层,至于调用关系等到后面源码解读时再结合此图自然就清晰了。
各层概述
-
config配置层
:主要以api编程模式下的 ServiceConfig, ReferenceConfig 为中心来构建消费者与生产者,当然也可以通过Spring XML文件来配置。 -
proxy代理层
:通过SPI工厂接口ProxyFactory来适配不同的代理生成方式:Java assist 和 jdk动态代理,创建代理类,使调用方透明无感知,跟本地方法一样的使用。 -
registry 注册中心层
:提供服务注册与发现的能力,抽象了一套服务注册与发现的规范,可以方便扩展大多数注册中心,并实现了变更推送功能。也提供了SPI扩展接口RegistryFactory -
cluster 路由层
:显而易见,此层的作用就是从集群中通过负载均衡路由到选中的服务上发起调用。也提供了SPI扩展接口为 Cluster, LoadBalance -
monitor 监控层
:RPC 调用次数和调用时间监控,,以 Statistics 为中心,扩展接口为 MonitorFactory, Monitor, MonitorService -
protocol 远程调用层
:封装了RPC调用的过程,包括过滤器的编排、调用结果的监听器通知、请求、响应回复等。也提供了相关扩展接口 Protocol, Invoker, Exporter -
exchange 信息交换层
:将RPC请求封装成request、response模式实现客户端与服务端之前的信息交换。扩展接口有Exchanger, ExchangeChannel, ExchangeClient, ExchangeServer -
transport 网络传输层
:抽象 mina 和 netty 为统一接口,以 Message 为中心,扩展接口为 Channel, Transporter, Client, Server, Codec -
serialize 数据序列化层
:抽象了数据序列化与反序列化的公共接口,默认实现方式是hession2(改造版,hession2-lite),扩展接口为 Serialization, ObjectInput, ObjectOutput -
整体的服务分层大致分析完毕,后面作者将通过场景驱动的方式解读源码,敬请期待~
- ☛ 文章要是勘误或者知识点说的不正确,欢迎评论,毕竟这也是作者通过阅读源码获得的知识,难免会有疏忽!
- ☛ 要是感觉文章对你有所帮助,不妨点个关注,或者移驾看一下作者的其他文集,也都是干活多多哦,文章也在全力更新中。
- ☛ 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处!
网友评论