前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >软件架构-Dubbo调用模块​详解

软件架构-Dubbo调用模块​详解

作者头像
IT架构圈
发布2021-09-17 11:44:20
6340
发布2021-09-17 11:44:20
举报
文章被收录于专栏:IT架构圈IT架构圈

之前说了RPC协议,RPC传输,终于到调用这块了,一步步走过来看的头都炸了,太艰辛了,上次主要说的就是线程之间的协作,业务线程池,IO线程池,重连线程池,心跳发送的线程池,调用重试的线程池。每个连接都有2个守护线程(心跳连接,重连接检测)。线程之前的协作:(客户端:调度线程,IO线程,结果Exchange线程)(服务端:IO线程,业务线程)

Dubbo调用模块概述

•① 介绍

dubbo调用模块核心功能是发起一个远程方法的调用并顺利拿到返回结果,其体系组成如下:

1.透明代理:通过动态代理技术,屏蔽远程调用细节以提高编程友好性。2.负载均衡:当有多个提供者时,如何选择哪个进行调用的负载算法。3.容错机制:当服务调用失败时采取的策略。4.调用方式:支持同步调用、异步调用。5.结果获取:指同步等待结果返回,还是异步通过回调通知获取结果。

• ② 负载均衡

Dubbo 目前官方支持以下负载均衡策略

1.随机(random):按权重设置随机概率。此为默认算法。2.轮循 (roundrobin):按公约后的权重设置轮循比率。3.最少活跃调用数(leastactive):相同活跃数的随机,活跃数指调用前后计数差。4.一致性Hash(consistenthash ):相同的参数总是发到同一台机器。

设置方式支持如下四种方式设置,优先级由低至高

代码语言:javascript
复制

•③ 容错

Dubbo 官方目前支持以下容错策略:

1.失败自动切换:调用失败后基于retries=“2” 属性重试其它服务器2.快速失败:快速失败,只发起一次调用,失败立即报错。3.忽略失败:失败后勿略,不抛出异常给客户端。4.失败重试:失败自动恢复,后台记录失败请求,定时重发。通常用于消息通知操作。5.并行调用: 只要一个成功即返回,并行调用指定数量机器,可通过 forks="2" 来设置最大并行数。6.广播调用:广播调用所有提供者,逐个调用,任意一台报错则报错。

设置方式支持如下两种方式设置,优先级由低至高

代码语言:javascript
复制

•④ 异步调用

异步调用是指发起远程调用之后获取结果的方式

1.同步等待结果返回2.异步等待结果返回3.不需要返回结果

Dubbo 中关于异步等待结果返回的实现流程

异步调用配置

代码语言:javascript
复制

异步调用结果获取

代码语言:javascript
复制

•⑤ 过滤器

类似于 WEB 中的Filter ,Dubbo本身提供了Filter 功能用于拦截远程方法的调用。其支持自定义过滤器与官方的过滤器,以上配置 就是 为 服务提供者 添加 日志记录过滤器, 所有访问日志将会集中打印至 accesslog 当中

代码语言:javascript
复制

•⑥ 泛化提供

是指不通过接口的方式直接将服务暴露出去。通常用于Mock框架或服务降级框架实现。

代码语言:javascript
复制

•⑦ 泛化引用

不通过常规接口的方式去引用服务,通常用于测试框架。

代码语言:javascript
复制

•⑧ 隐示传参

是指通过非常方法参数传递参数,类似于http 调用当中添加cookie值。通常用于分布式追踪框架的实现。

代码语言:javascript
复制

•⑨ 令牌验证

通过令牌验证在注册中心控制权限,以决定要不要下发令牌给消费者,可以防止消费者绕过注册中心访问提供者,另外通过注册中心可灵活改变授权方式,而不需修改或升级提供者

代码语言:javascript
复制

PS:dubbo毕竟是国人写的,很符合国人的口味,虽然dubbo有年头了,但是始终没有996icu的star多,这是为什么呢?实践的人少了,吹牛的人多啊。

点击👆卡片,共同学习共同进步,我的坚持你的收获。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-08-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT架构圈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Dubbo调用模块概述
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档