推广 热搜: csgo  vue  angelababy  2023  gps  新车  htc  落地  app  p2p 

dubbo调用流程

   2023-08-22 网络整理佚名2460
核心提示:分布式协调和通知:不同的客户端都对上的同一个数据节点进行注册,监听数据节点的变化。总结:轮询调用并不是简单的一个接着一个依次调用,它是根据权重的值进行循环的。所有的sent事件方法、心跳请求全部在IO线程上执行。只有请求事件在线程池中执行,其他在IO线程上执行。请求事件在线程池中执行,连接、断开连接事件排队执行(含一个线程的线程池)所有事件都在IO线程中执行。

服务提供者启动时,会将自己的URL地址写入zk上的/dubbo/${}/目录

Dubbo会先调用figs方法检查配置是否合理,如果合理则调用ocol方法通过配置组装URL,然后调用该方法暴露服务

注:报名中心

客户端首先会检查配置是否合理,然后创建实例,生成服务消费者链接向注册中心注册,然后订阅。 由于一项服务可能部署在多台服务器上,因此该节点下的数据会生成多个节点。 ,这时候就需要将多个服务节点合并为一个,生成一个。

分布式协调和通知:不同的客户端注册到互联网上的同一个数据节点,并监听数据节点的变化。 如果数据节点发生变化,所有订阅的客户端都可以收到相应的通知并进行相应的处理。

2)集群管理:

A。 如果客户端注册监听该数据节点,那么当数据和列表内容或其子节点列表发生变化时,服务器会向订阅的客户端发送变化通知。 b. 对于 上创建的临时节点,一旦客户端与服务器之间的会话失败,临时节点也会被自动删除。

3)负载均衡:com..dubbo.rpc..类

(默认使用)

随机,按权重设置随机概率。 某个路段发生碰撞的概率较高,但调用量越大,分布越均匀,使用概率后权重也更均匀,有利于动态调整权重。 该方法的具体方法是,首先遍历每个服务提供机器,获取每个服务的权重,然后累加该权重值,以确定每个服务提供者的权重是否相同。 如果每个调用者的权重不同,并且每个权重都大于0,那么会根据权重的总值生成一个随机数,然后用这个随机数每次减去调用者的权重根据呼叫者的数量,直到计算出当前服务提供商的随机数小于0。就选择该提供商! 另外,如果每台机器的权重相同,那么权重就不会参与计算,直接选择随机算法生成的一个选择,完全是随机的。 可以看出,随机调用方法,

轮询,根据约定后的权重设置轮询比例。 有一个缓慢的提供者类是一个请求问题。 例如:第二台机器很慢,但没有挂掉。 当请求传输到第二台机器时,它就卡在那里。 随着时间的推移,所有请求都卡在第二台机器上。 轮询调用,轮询调用的过程主要是维护一个局部变量()来存储调用者和权重值的对应关系,然后遍历每个调用者,比较调用者和当前权重是否大于0。输入值,然后累加重量值。 还有一个全局变量的映射。 找到第一个服务调用者,首先求每个服务的键值之和,可以理解为标识第一个调用者的唯一键,然后给它对应的值,保证原子+1(r是原子的),然后取这个值的模总权重,然后每次将它的权重值-1,知道它的模和总权重值等于0,选择调用者,这可以称为“减少权重和取模数”(只是计算水平,并非真正的减重)。 总结:轮询调用并不是简单的一次次调用,而是根据权重的值进行循环。

最小活跃通话数,同一活跃号码的随机数,活跃数是指通话前后的计数差值。 让慢速提供者收到更少的请求,因为对于慢速提供者来说,调用前后的计数差异会更大。 最不活跃号码呼叫方法:该方法的主要作用是根据服务提供商的运行状况来选择服务器。 主要思想是遍历每个调用者,然后获取每个服务器的运行状态。 如果当前运行的运行状态小于最小状态-1,则保存在 中的第一个位置,并判断所有调用者的权重相同,然后直接返回那个调用者(这里的逻辑是:找到最不活跃的) (代码层的响应为:value))。 如果计算出的权重值与最小权重值相同,则将其保存到数组中,并累加权重值。 如果当前权重值不等于初始值,则确定并非所有呼叫者都具有不同的权重。 然后再次遍历,取权重累加值的随机数生成权重偏移量,累加,小于0时返回给调用者。如果这些都不匹配,就随机选择一个索引返回给调用者!

一致的Hash,具有相同参数的请求总是发送到同一个提供者。 当某个提供者宕机时,原来发送给该提供者的请求会基于虚拟节点传播到其他提供者,不会引起剧烈的变化。

注意调度策略:

所有发送的事件方法和心跳请求都是在IO线程上执行的。

1. all :除了发送的事件回调方法和心跳外,全部在线程池上执行。

2. : 与all类似,唯一的区别是在不指定线程池的情况下all可以使用共享线程池。 这个区别就相当于没有。

3. :只有请求事件在线程池中执行,其他的在IO线程上执行。

4.:请求事件在线程池中执行,连接和断开事件排队执行(一个线程的线程池)

5.:所有事件都在IO线程中执行。

 
反对 0举报 0 收藏 0 打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报
Powered By DESTOON