【dubbo系列】rpc、dubbo基础知识(五)

开课吧开课吧锤锤2021-03-08 14:10

    Java编程语言是一种简单、面向对象、分布式、解释型、健壮安全、与系统无关、可移植、高性能、多线程和动态的语言。如今Java已经广泛应用于各个领域的编程开发。

Java

    Dubbo分层架构

    总的而言Dubbo分为三层,如果每一层再细分下去,一共有十层。别怕也就十层,本丙带大家过一遍,大家先有个大致的印象,之后的文章丙会带着大家再深入。

Java

    大的三层分别为Business(业务层)、RPC层、Remoting,并且还分为API层和SPI层。

    分为大三层其实就是和我们知道的网络分层一样的意思,只有层次分明,职责边界清晰才能更好的扩展。

    而分API层和SPI层这是Dubbo成功的一点,采用微内核设计+SPI扩展,使得有特殊需求的接入方可以自定义扩展,做定制的二次开发。

    接下来咱们再来看看每一层都是干嘛的。

    Service,业务层,就是咱们开发的业务逻辑层。

    Config,配置层,主要围绕ServiceConfig和ReferenceConfig,初始化配置信息。

    Proxy,代理层,服务提供者还是消费者都会生成一个代理类,使得服务接口透明化,代理层做远程调用和返回结果。

    Register,注册层,封装了服务注册和发现。

    Cluster,路由和集群容错层,负责选取具体调用的节点,处理特殊的调用要求和负责远程调用失败的容错措施。

    Monitor,监控层,负责监控统计调用时间和次数。

    Portocol,远程调用层,主要是封装RPC调用,主要负责管理Invoker,Invoker代表一个抽象封装了的执行体,之后再做详解。

    Exchange,信息交换层,用来封装请求响应模型,同步转异步。

    Transport,网络传输层,抽象了网络传输的统一接口,这样用户想用Netty就用Netty,想用Mina就用Mina。

    Serialize,序列化层,将数据序列化成二进制流,当然也做反序列化。

    SPI

    我再稍微提一下SPI(ServiceProviderInterface),是JDK内置的一个服务发现机制,它使得接口和具体实现完全解耦。我们只声明接口,具体的实现类在配置中选择。

    具体的就是你定义了一个接口,然后在META-INF/services目录下放置一个与接口同名的文本文件,文件的内容为接口的实现类,多个实现类用换行符分隔。

    这样就通过配置来决定具体用哪个实现!

    而DubboSPI还做了一些改进,篇幅有限留在之后再谈。

    以上内容由开课吧老师敖丙提供,更多Java教程尽在开课吧广场Java教程频道。

有用1
分享