首页 > 编程知识 正文

dubbo是干嘛的,dubbo协议是基于什么实现的

时间:2023-05-05 01:40:07 阅读:39089 作者:3469

Dubbo框架用于处理分布式系统中的服务发现、注册和调用问题,并管理调用过程。一,工作流程:

服务提供商在启动时通过读取一些配置来实例化服务。 Proxy封装服务调用接口,调用方容易调用。 当客户端获取代理时,可以像调用本地服务一样调用远程服务。 封装Proxy时,必须调用Protocol来定义协议格式。 例如,dubbo协议。 将代理封装到Invoker中。 这是实际服务呼叫的实例。 将Invoker转换为Exporter,Exporter将Invoker转换为

包装是为了在注册中心暴露自己,方便消费者使用。 在注册中心注册打包的导出器。 服务消费者创建良好的实例,然后前往服务注册中心订阅服务提供商元数据。 元数据包括服务IP、端口和调用方法(Proxy )。 消费者用获取的Proxy调用。 从服务提供商的包装流程可以看出,Proxy实际上是在包装Invoker实体,因此必须使用它

将调用Invoker。 在调用Invoker之前,从目录中检索服务提供者的Invoker

名单。 分布式服务中出现相同的服务,有可能分散在不同的节点上。 路由规则表明服务需要从哪个节点获取。 在Invoker调用过程中,在群集上执行容错,如果出现失败的策略,则重试。 在调用中,多个服务可能分布在不同的节点上,因此必须在LoadBalance中实现负载平衡。 必须在调用Invoker之前通过过滤器。 这是一个用于处理上下文、流限制和计数工作的过滤链。 生成过滤后的Invoker。 在客户端进行数据传输。 编解码器基于协议定义的协议进行协议的结构。 构建的数据通过序列化序列化传输到服务提供商。 Request已到达服务提供商。 将分配给线程池进行处理。 服务器收到请求后,查找相应的导出器(包括invoker )。 因为导出也是在通过过滤器层层包围的过滤器后,在获得Invoker后调用服务提供者实体。二、各个部分整体机制

1、提供者暴露服务的总体机制:

初始化服务提供程序时,将从Config组件中的服务配置中读取服务的配置信息。 此配置信息有三种格式: XML文件、注释(Annoation )、属性文件(Properties )和yaml。

读取配置文件并生成服务实体后,代理通过代理工厂转换为Invoker。

此时,Invoker将定义为协议,然后打包为导出器。

最后,导出器将作为服务的注册信息发送到注册中心

2 .注册中心

主要作用如下:

动态加载服务动态发现服务参数动态协调服务集成配置管理

启动提供程序(提供程序)时,它会将自己的元数据信息(调用方式)写入注册中心。 当“消费者”(Consumer )启动时,其元数据信息也会写入注册中心,并向服务提供商注册,以路由和配置元数据信息。 服务治理中心(duubo-admin )启动后,将同时订阅所有消费者、提供者、路由和配置元数据的信息。 注册中心将在提供商离开或新提供商加入时通知消费者和服务治理中心发现更改。 Dubbo实现了四个注册中心: ZooKeeper、Redis、Simple和Multicast。

ZooKeeper负责协调基于服务的APP应用程序。 在树文件中保存的ZNode在/dubbo/Service目录下创建了以下四个目录:

在Providers目录下,存储服务提供者的URL和元数据。 Consumers目录下包含消费者的URL和元数据。 在Routers目录下,存储着消费者的路由策略。 Configurators目录下包含多个信息,供服务提供者动态配置URL元数据。 客户端首次连接到注册中心时,将检索所有服务元数据,包括服务提供商和服务消费者以及路由和配置信息。

ZooKeeper客户端的特点使客户端和注册中心在支持ZNode的目录中注册Watcher,同时保持TCP的长连接。

如果服务的元数据信息发生更改,客户端将收到更改通知,并前往注册中心更新元数据信息。 更改基于ZNode节点上的版本更改。

3 .服务消费者

服务消费者首先拥有远程服务实例生成的Invoker,然后将Invoker转换为用户界面的动态代理引用,服务引用的入口点位于ReferenceBean中

4.Dubbo集群容错

分布式服务经常作为集群出现,消费服务启动呼叫时涉及集群、目录、路由器和负载平衡几个核心组件。

群集生成Invoker对象后,它将获取可调用服务的列表,目录获取所有Invoker列表后,它将调用路由接口(Router )。 Invoker列表将根据用户设置的各种策略进行筛选,仅返回符合规则的Invoker。 生成的Invoker服务可能分布在不同的节点上。 所以,需要经由加载平衡。

5.Dubbo 远程调用

服务消费者经过容错、Invoker列表、路由和负载平衡,过滤Invoker,然后在客户端进行编码,序列化并发送到服务提供商。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。