21 天前 / 浪客书心
最近一个同学说遇到了一个 Dubbo 异步调用的问题,怀疑是个 Bug。提到Bug我可就不困了,说不定可以水,哦不。..写一篇文章。 问题复现 遇到问题,尤其不是自己遇到的,必须要复现出来才好排查,截一个当时的聊天记录: 他的问题原话是: 今天发现一个问题 有一个 dubbo 接口返回类型是 boolean。把接口从同步改成异步 server 端返回 true,消费端却返回 false。把 boolean 改成 Boolean 就能正常返回结果。
30 天前 / 博文视点Broadview
实施微服务的首要条件就是选择适合团队的微服务框架。 目前市场上微服务的框架,不管是开源的还是收费的,都有很多,比如 Dubbo、Spring Cloud、Tars、Helidon、SOFAStack、gRPC、Thrift、Brpc、Motan 等。在选择框架时需要考虑如下技术点。 ◎ 服务发布订阅:是自动发现注册,还是手动在线注册。 ◎ 服务路由形式:框架中支持的服务路由(比如常用的随机路由)是否满足我们的需求,或者是否支持自定义路由。 ◎ 集群容错:集群容错所支持的方式,比如快速失败、失败自动切换等常用的容错方式。
72 天前 / 捉虫大师
hello,大家好呀,我是小楼! 今天给大家带来一篇关于 Dubbo IO 交互的文章,本文是一位同事所写,用有趣的文字把枯燥的知识点写出来,通俗易懂,非常有意思,所以迫不及待找作者授权然后分享给大家: 一些有趣的问题 Dubbo 是一个优秀的 RPC 框架,其中有错综复杂的线程模型,本篇文章笔者从自己浅薄的认知中,来剖析 Dubbo 的整个 IO 过程。在开始之前,我们先来看如下几个问题: 业务方法执行之后,数据包就发出去了吗?netty3 和 netty4 在线程模型上有什么区别?数据包到了操作系统 socket buffer,经历了什么?Provider 打出的 log 耗时很小...
189 天前 / 捉虫大师
大家好~我是小楼。其实这篇文章早就写好了,本来上班第一天就发出来,拖到了现在。 是因为我发烧躺了 3 天,今天好点上班了,晚上来打最后一瓶点滴。生病真的很痛苦,大家多休息,多锻炼,保持好的抵抗力~ 今天想和大家聊聊 Dubbo 源码中实现的一个注册中心扩展。它很特殊,也帮我解决了一个困扰已久的问题,刚刚在生产中用了,效果很好,迫不及待想分享给大家。 Dubbo 的扩展性非常灵活,可以无侵入源码加载自定义扩展。能扩展协议、序列化方式、注册中心、线程池、过滤器、负载均衡策略、路由策略、动态代理等等,甚至「扩展本身」也可以扩展。
239 天前 / 三分恶
源码地址:https://gitee.com/fighter3/eshop-project.git 持续更新中…… 大家好,我是老三,断更了半年,我又滚回来继续写这个系列了,还有人看吗…… 在前面的章节中,我们使用 Fegin 完成了服务间的远程调用,实际上,在更加注重性能的互联网公司中,一般都会使用 RPC 框架,如 Dubbo 等,来实现远程调用。 这一节,我们就来把我们的服务间调用从 Feign 改造成 Dubbo。 1.Dubbo 简介 Architecture- 来自官网 Apache Dubbo 是一款微服务开发框架,它提供了 RPC 通信与微服务治理两大关键能力。
240 天前 / 虞大胆
作者介绍: 李志信(github @laurencelizhixin),dubbo-go 3.0 负责人,Apache Dubbo PMC,来自阿里云中间件团队,从事 Go 语言中间件的研发和开源工作。 于雨 (github @AlexStocks),dubbo-go 社区负责人,Apache Dubbo PMC,蚂蚁集团可信原生部【TNT】基础设施和中间件研发一线程序员。工作十一年来陆续参与和改进过 Redis/Pika/Pika-Port/etcd/Muduo/Dubbo/dubbo-go/Sentinel-golang/Seata-golang 等知名项目。 牛学蔚(github @justxuewei),Apache Dubbo Committer,北邮计算机学院二年级研究生,对中间件、云原生领域有着浓厚的兴趣。
265 天前 / 编程一生
引子 刚才下班回家路上,无意中听到大街上放的歌,歌词有这么一句:“毡房外又有驼铃声声响起,我知道那一定不是你”。这一句我似乎听懂了歌者的魂牵梦绕和绝望,如果在十年前我大概只能感受出悠扬的声调里溢出的悲凉吧。 在工作上,我没有十年的时间来把思考能力上升一个等级。对于一个问题,需要在很短的时间反复思考,深层次的弄懂。懂得,有三个初级境界,对应三个方法: 1>字面理解 -what、why、how 2>前因后果 -5why 3>选择最优 -SMART 想了解 what、why、how 黄金圈法则或者 5why 分析法可参考我之前的文章:《代码荣辱观 - 以运用风格为荣...
285 天前 / 捉虫大师
背景很久之前我给业务方写了一个 dubbo loadbalance 的扩展(为了叙述方便,这个 loadbalance 扩展就叫它 XLB 吧),这两天业务方反馈说 XLB 不生效了 我心想,不可能啊,都用了大半年了~ 排查于是我登上不生效的 consumer 机器进行排查,还好我留了一手,当 XLB 加载时,会打印一行日志 看了下这个服务,并没有打印日志,说明 XLB 并没有加载成功 于是,我就去问对应的开发,有按照我的文档配置 loadbalance 吗?答复:完全按照文档配置 这下我就有点不相信了,但转念一想,配置 loadbalance 如此简单,不应该出错啊...
324 天前 / 捉虫大师
背景最近某天的深夜,刚洗完澡就接到业务方打来电话,说他们的 dubbo 服务出故障了,要我协助排查一下。 电话里,询问了他们几点 是线上有损故障吗?——是止损了吗?——止损了有保留现场吗?——没有于是我打开电脑,连上 VPN 看问题。为了便于理解,架构简化如下 只需要关注 A、B、C 三个服务,他们之间调用都是 dubbo 调用。 发生故障时 B 服务有几台机器完全夯死,处理不了请求,剩余正常机器请求量激增,耗时增加,如下图(图一请求量、图二耗时) 问题排查由于现场已被破坏,只能先看监控和日志 监控除了上述监控外...
331 天前 / vivo互联网技术
I 作者:vivo 互联网服务器团队 -Wang Genfu 一、Dubbo 分层整体设计概述 我们先从下图开始简单介绍 Dubbo 分层设计概念: (引用自 Duboo 开发指南 - 框架设计文档) 如图描述 Dubbo 实现的 RPC 整体分 10 层:service、config、proxy、registry、cluster、monitor、protocol、exchange、transport、serialize。 service:使用方定义的接口和实现类; config:负责解析 Dubbo 定义的配置,比如注解和 xml 配置,各种参数; proxy:主要负责生成消费者和提供者的代理对象,加载框架功能,比如提供者过滤器链...
334 天前 / bytearch
一、背景最近生产环境引入 Dubbo 服务,每次上线重启服务,都会有超时报警,诡异的是,客户端和服务端重启都会有影响,量大了报警就愈发明显了。 大致报警信息如下: cause:org.apache.dubbo.remoting.TimeoutException:Waitingserver-sideresponsetimeoutbyscantimer.starttime:2021-09-0911:59:56.822,endtime:2021-09-0911:59:58.828,clientelapsed:0ms,serverelapsed:2006ms,timeout:2000ms,request:Request[id=307463,version=2.0.2,twoway=true,event=false,broken=false,data=null],channel:/XXXXXX:52149->/XXXXXX:20880]withrootcause] 会是什么原...
337 天前 / yes的练级攻略
最近不是 Dubbo3.0 正式发布了嘛,我也推了阿里巴巴中间件发的那篇文章,但是私下还是有小伙伴让我用大白话说说和之前版本到底有哪些不同。 今天这篇就来唠唠。对了,最近面试的小伙伴要小心被问这些新的特性或者版本,面试官用来考察你是不是“紧跟潮流”。 就像之前我写的 Kafka 抛弃 ZooKeeper 一样,这种热点很容易在当下被问,特别是当候选人对相关知识点说的头头是道时,有能力的面试官会问你新的版本或者特性,一问三不知,很大程度表明你前面哪些说的就是背的。 关于 Dubbo3 的很多细节我还没深入研究,所以这篇先说说大方向上的东西。
338 天前 / 捉虫大师
dubbo 是一款开源的 RPC 框架,主要有 3 个角色:提供者(provider)、消费者(consumer) 、注册中心(registry) 提供者启动时向注册中心注册服务地址,消费者启动时订阅服务,并通过获取到的提供者地址发起调用,当提供者地址变更时,通过注册中心向消费者推送变更。这就是 dubbo 主要的工作流程。 在 2.7.5 之前,dubbo 只支持接口级服务发现模型,>=2.7.5 的版本提供了接口级与应用级两种服务发现模型,3.0 之后的版本应用级服务发现更是非常重要的一个功能。
368 天前 / 捉虫大师
不想看字的同学可直接划到底部查看思维导图 问题分析使用过 Dubbo 的朋友很多都碰到过如下报错: No provider available for the service org.newboo.basic.api.MyDemoService from registry 127.0.0.1:2181 on the consumer 127.0.0.1 using the dubbo version 2.7.6. Please check if the providers have been started and registered. 从源码来看这个报错位于 org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker#checkInvokers protectedvoidcheckInvokers(List>invokers,Invocationinvocation){ if(CollectionUtils.isEmpty(invokers)){ th...