01|温故知新:Dubbo基础知识你掌握得如何?
总体架构
- 深入了解
- 翻译
- 解释
- 总结
Dubbo是一款优秀的微服务框架,本文详细介绍了Dubbo的总体架构和实际操作。文章首先分析了Container的服务运行容器和Provider的提供方的工程创建及启动过程,并介绍了Dubbo 3.x的应用级注册新特性。此外,还讨论了消费方向提供方发起远程调用可能遇到的异常情况及解决方法。文章还提供了设置超时时间、重试次数和故障转移等实用技巧。通过对Dubbo的基础知识和实际操作的详细介绍,本文对于想要深入了解Dubbo的读者具有很高的参考价值。文章内容丰富,涵盖了Dubbo框架的各种调用考量因素,以及Dubbo的容错策略和负载均衡策略。整体而言,本文是一篇值得阅读的技术文章,适合对Dubbo架构体系中各个角色的作用和操作注意点感兴趣的技术人员。 文章内容涵盖了Dubbo的总体架构、服务运行容器、提供方的工程创建及启动过程、应用级注册新特性、远程调用异常情况及解决方法、超时时间设置、重试次数、故障转移等实用技巧。此外,还介绍了Dubbo的消费方、提供方、注册中心、监控中心和容器等五个角色的作用和操作注意点。通过对Dubbo框架的各种调用考量因素和容错策略、负载均衡策略的详细介绍,读者可以快速了解Dubbo的技术特点和操作要点。文章内容丰富,语言简洁,适合技术人员快速了解Dubbo框架的关键知识点。
《Dubbo 源码剖析与实战》,新⼈⾸单¥59
全部留言(22)
- 最新
- 精选
- 熊猫老师,你好,dubbo有没有这样的功能,一个接口多种实现,根据参数(标识渠道不同)来区分最终路由到哪个实现?再或者有没有在客户端可以知道有哪几种实现?
作者回复: 你好,熊猫:顺着你的意思,在客户端就知道有哪几种实现,是不是可以再继续抽象一层,通过 “路由标识” 到不同的实现(甚至都可以不用关心是哪个实现,只要路由标识能找到就行)。至于这个 “路由标识” 可以通过查找存储媒介形式(比如:数据库、配置中心等)来寻找对应的 “接口中具体的方法”,这样应该就可以做成一套通用的分发调用框架了(比如:智能网关)。详细的话可以去看看 “泛化调用”、“点点直连” 章节。
2022-12-19归属地:广东66 - Geek_895efd老师,关于注册中心部分,确实有很多选择,相对于zookeeper等,用阿里自家孵化出的nacos来做注册中心是不是更好
作者回复: 你好,Geek_895efd:可以参考我之前对etcd的一些理解,没有更好,只有适合自己当前项目的才是最好的。 比如etcd是一个年轻的go项目,同样是解决分布式协调问题,并且吸收zookeeper实现上的经验,在api的使用、实例的动态增减、数据体量的存储,且对外部语言的支持也更加友好。但是他的年轻和高速的迭代开发不免在稳定性上会使得一些大项目望而却步的考量因素。 其次还得看公司的运维能力,如果运维擅长zookeeper的话那大概率就使用zookeeper了,如果运维擅长etcd的话那正好可以借此机会狠狠与真实业务实战一把。两者都擅长的话,项目求稳还是可以考虑使用传统的zookeeper的,激进的话可以考虑etcd。不过大多数项目对于好多新特性都用不着,基本的增删改查和灵活的通知机制就非常够用了。
2022-12-23归属地:湖南24 - Geek_244b79老师,您好,看完课程有两个疑问,1.监控中心是存在于哪里 2.注册中心的消息推送是主动推送的吗?希望老师看到可以帮忙解答,谢谢!
作者回复: 你好,Geek_244b79: 1.监控中心,是一个模块,可以是和应用运行在同一个进程的模块,也可以是和应用隔离开的另外一个进程(或另外一台服务器)。而监控中心,是针对数据监控的,那就势必有数据上报,既然需要上报数据,那就得分为监控中心客户端模块(负责收集监控数据上报至监控中心服务端),监控中心服务端模块(负责分析处理监控中心客户端上报的数据)。 2.注册中心的消息推送是zk服务端主动推送至zk客户端,主要是基于zk客户端与zk服务端建立了长连接机制。
2023-01-18归属地:北京31 - java小霸王异常信息可以看出 1 超时机制是通过completeFutrue 2 failover策略
作者回复: 你好,java小霸王:你的眼睛很犀利,看出了两个具有代表性的特征,非常好,为你的认真仔细点赞。 异常信息中,还有蛮多的,详细可以见“02 异步化实践”章节的解答,熟悉这个异常是基本,灵活根据异常分析出问题是关键,可以多多体会一下~
2022-12-27归属地:广东1 - null老师,注册中心使用zookeeper和etcd哪个好?
作者回复: 你好,特别的 null 标识朋友:etcd是一个年轻的go项目,同样是解决分布式协调问题,并且吸收zookeeper实现上的经验,在api的使用、实例的动态增减、数据体量的存储,且对外部语言的支持也更加友好。但是他的年轻和高速的迭代开发不免在稳定性上会使得一些大项目望而却步的考量因素。 其次还得看公司的运维能力,如果运维擅长zookeeper的话那大概率就使用zookeeper了,如果运维擅长etcd的话那正好可以借此机会狠狠与真实业务实战一把。两者都擅长的话,项目求稳还是可以考虑使用传统的zookeeper的,激进的话可以考虑etcd。不过大多数项目对于好多新特性都用不着,基本的增删改查和灵活的通知机制就非常够用了。
2022-12-21归属地:湖南1 - 慎独明强补充一点:负载均衡策略,源码里面还有ShorestResponseLoadBalance 异常信息获取: 1) 重试次数为3,取的默认值 正常调用+重试2次 2) providers [192.168.100.183:28040] (1/1) providers列表为1,第一次调用就失败了 3)集群容错策略为failOver故障转移 4)超时时间为1000ms 5)调用DemoFacade的sayHello方法超时
作者回复: 慎独明强,你好:补充的非常棒,补充了我遗漏的一个,为你的细心点赞,细心是好事,可以抠出很多自己未知的细节因素,很好很棒。 异常信息中,还有蛮多的,详细可以见“02 异步化实践”章节的解答,熟悉这个异常是基本,灵活根据异常分析出问题是关键,可以多多体会一下~
2022-12-19归属地:广东1 - Geek_327f7f老师,我觉得您这里的dubbo架构图跟dubbo官网的出入挺大的,感觉您这个架构图应该是在dubbo框架下的微服务架构而不是dubbo的架构图,不知道我的理解是否正确。而且provider和consumer都是需要一个container提供dubbo的运行环境的吧,我看您的架构图中只有provider有container而consumer并没有。
作者回复: 你好,Geek_327f7f:侧重在提供方,主要是消费方也可以不是 dubbo 服务,比如消费方直接用 Socket 请求模拟 dubbo 协议发送请求,同样可以拿到数据的。
2023-05-21归属地:中国香港 - simuso为什么本地的zk连接没问题,如何连接其他服务器的zk就不行呢
作者回复: 你好,simoso:能描述再具体点么?是遇到墙不通的问题呢?还是需要做下域名啥的还是啥啥啥呀?
2023-05-02归属地:四川 - 天天学习老师,dubbo.application.service-discovery.migration在yml文件配置的时候为什么没有提示选项呢,也点不进这个配置,我用的dubbo是3.1.8版本的
作者回复: 你好,天天学习:我用的不是社区版,所以可以点进去看的~
2023-04-27归属地:福建 - Geek_forMySelf发生了TimeoutException应该需要provider方实现接口的幂等吧
作者回复: 你好,Geek_forMySelf:很 nice 的一个经典场景回答,不过也得看具体业务,如果是那种查询请求的话,幂等性与否意义不是很大;但是对于写请求的话,如果业务逻辑容忍重复数据,也做幂等性处理也无关痛痒;反而对于那种不允许重复请求导致生成重复数据的功能业务,幂等性就显得至关重要了。
2023-03-22归属地:广东