分布式篇:Dubbo架构原理流程

架构原理图

蓝色部分为服务消费者
绿色部分为服务提供者
在这里插入图片描述

Dubbo架构层级划分

第一层:service层,接口层,给服务提供者和消费者来实现的

第二层:config层,配置层,主要是对dubbo进行各种配置的

第三层:proxy层,服务代理层,透明生成客户端的stub和服务单的skeleton

第四层:registry层,服务注册层,负责服务的注册与发现

第五层:cluster层,集群层,封装多个服务提供者的路由以及负载均衡,将多个实例组合成一个服务

第六层:monitor层,监控层,对rpc接口的调用次数和调用时间进行监控

第七层:protocol层,远程调用层,封装rpc调用

第八层:exchange层,信息交换层,封装请求响应模式,同步转异步

第九层:transport层,网络传输层,抽象mina和netty为统一接口

第十层:serialize层,数据序列化层

Dubbo从架构设计角度,是怎么保证极高的可扩展性的

1、是核心的组件全部接口化,组件和组件之间的调用,必须全部是依托于接口,去动态找配置的实现类,如果没有配置就用他自己默认的

2、提供一种自己实现的组件的配置的方式,比如说你要是自己实现了某个组件,配置一下,人家到时候运行的时候直接找你配置的那个组件即可,作为实现类,不用自己默认的组件了

架构流程

现在有一个服务提供者和一个服务消费者

其中服务提供者会在服务注册中心进行注册

服务消费者会获取注册中心的服务提供者列表

按照架构层级

服务消费者要访问服务注册者会有如下流程

1、在配置文件中我们会配置服务提供者的接口

2、会通过proxy代理层,动态代理对象去调用服务提供者的接口

3、在代理之前,会通过cluster这一层进行负载均衡,如果服务提供者部署了两台机器
那么这两台机器都会去注册中心去注册,在cluster这一层,它都是会拿到服务的机器列表,
通过内部的负载均衡组件算法找到一台机器的IP

4、拿到服务的地址之后,会走protocol层,选择一种协议组织我们的请求
这个意思是以一种什么格式,来发送我们的请求,默认采用dubbo协议

5、确认好协议之后,需要走一个信息交换层exchange。来封装我们的请求,例如封装为 xxxRequest

6、封装好请求之后,要把信息通过网络发送给对方的服务器,接下来会走一个网络通信层transport。采用 netty / mina

7、在发送之前,会把这个数据进行序列化

服务提供者接收请求会有如下流程

内部通过网络通信这个框架 netty / mina

会有一个 server 这个概念

是由 server 来监听端口

收到一个请求之后

也会走如下流程

1、信息交换层exchange。通过这一层,把人家封装好的 xxxRequest 解析出来

2、会走protocol层。选择一种协议来解析请求

3、会走代理层。针对服务提供者的接口生成一个动态代理对象,去调用实际的目标方法

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值