又踩到Dubbo的坑,但是这次我笑不出来
前言直入主题,线上应用发现,偶发性出现如下异常日志。当然由于线上具体异常包含信息量过大,秉承让肥朝的粉丝没有难调试的代码的原则,我特意抽取了一个复现的demo放在了git,让你不在现场,一样享受到排查
惊:Dubbo居然有必现StackOverflowError的Bug
说明:本文场景基于dubbo-2.5.3版本。 如果你对StackOverflowError有一定的了解,就可以知道出现这个问题的主要原因就是调用栈太深,比如常见的无限递归调用。那本文要介绍的Dub
Dubbo应用无法重连zookeeper
前言dubbo是一个成熟且被广泛运用的框架。饶是如此,在某些极端条件下基于dubbo的应用还会出现无法重连zookeeper的问题。由于此问题容易导致比较大的故障,所以笔者费了一番功夫去定位,现将排查
What?一个 Dubbo 服务启动要两个小时!
前言前几天在测试环境碰到一个非常奇怪的与 ```dubbo``` 相关的问题,事后我在网上搜索了一圈并没有发现类似的帖子或文章,于是便有了这篇。希望对还未碰到或正在碰到的朋友有所帮助。 现象现象是这样
RPC的超时设置,一不小心就是线上事故
RPC接口超时设置,不仅涉及到接口幂等、服务降级和熔断、性能评估和优化,同时还需要从业务角度评估必要性。通过一个真实的线上事故系统性地介绍在微服务架构下,如何正确设置RPC接口的超时时间:超时的实现原理是什么?设置超时时间到底是为了解决什么问题?应该如何合理的设置超时时间?
一次StackOverflowError排查,原因竟然和Dubbo有关!
前言某天业务方的同事和我反馈,说系统出现了StackOverflowError.坦白说,Exception见得过了,但是Error倒是很少出现,此时他的心情是这样的 一波猛如虎的操作我们先来看血淋淋的
用隧道协议实现不同dubbo集群间的透明通信
前言笔者最近完成了一个非常有意思的隧道机制(已在产线运行),可以让注册到不同zookeeper之间的dubbo集群之间能够正常进行通信。如下图所示: 例如图中A/B两个网络隔离的集群,两者只能通过专线
【全网首发】解Bug之路-dubbo应用无法重连zookeeper
前言dubbo是一个成熟且被广泛运用的框架。饶是如此,在某些极端条件下基于dubbo的应用还会出现无法重连zookeeper的问题。由于此问题容易导致比较大的故障,所以笔者费了一番功夫去定位,现将排查过程写成博文分享出来。Bug现场这是一起在测试环境出现的故障。起因是网工做交换机切换演练,可能
Dubbo No provider问题排查思路
使用过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.
记一次提升18倍的性能优化
背景最近负责的一个自研的 Dubbo 注册中心经常收到 CPU 使用率的告警,于是进行了一波优化,效果还不错,于是打算分享下思考、优化过程,希望对大家有一些帮助。自研 Dubbo 注册中心是个什么东西,我画个简图大家稍微感受一下就好,看不懂也没关系,不影响后续的理解。Consume
案例分享 | dubbo 2.7.12 bug导致线上故障
背景最近某天的深夜,刚洗完澡就接到业务方打来电话,说他们的 dubbo 服务出故障了,要我协助排查一下。电话里,询问了他们几点是线上有损故障吗?——是止损了吗?——止损了有保留现场吗?——没有于是
你为什么吃不透Dubbo源码?这样看既不浪费时间又高效
对于Dubbo源码,首先,你需要先能在项目中引入Dubbo,以及能够使用基本功能,基于这个基础之上,正确的阅读顺序应该是这样
【全网首发】抓到Dubbo异步调用的小BUG,再送你一个贡献开源代码的机会
hello,大家好呀,我是小楼。最近一个技术群有同学at我,问我是否熟悉Dubbo,这我熟啊~他说遇到了一个Dubbo异步调用的问题,怀疑是个BUG,提到BUG我可就不困了,说不定可以水,哦不...写一篇文章。 正文问题复现遇到问题,尤其不是自己遇到的,必须要复现出来才好排查
一次C10K场景下的线上Dubbo问题排查及优化
导语Dubbo 是一款轻量级的开源 Java 服务框架,是众多企业在建设分布式服务架构时的首选。中国工商银行自 2014 年开始探索分布式架构转型工作,基于开源 Dubbo 自主研发了分布式服务平台。Dubbo 框架在提供方消费方数量较小的服务规模下,运行稳定、性能良好。随着银行业务线上化、多样
从一个Demo说起Dubbo3
简介2017年的9月份,阿里宣布重启Dubbo的开发维护,并且后续又将Dubbo捐献给了Apache,经过多年的发展已经发布到3.X版本了,Dubbo重启维护之后是否有值得我们期待的功能呢,下面就来看看吧。Apache Dubbo 是一款微服务框架,为大规模微服务实践提供高性能 RPC 通信、流
记一次产线报错引发关于CurrentHashmap使用的思考
最近笔者所在公司的业务团队在使用dubbo-admin进行应用发布的时候出现了一个问题,应用发布结束后,上线应用流量的时候某个节点的部分接口进行上线操作第一次会失败,但是同一批的相同节点其他接口上线正
记录一次dubbo项目实战
一、案例说明存在2个系统,A系统和B系统,A系统调用B系统的接口获取数据,用于查询用户列表。
源码分析Dubbo服务注册与发现机制RegistryDirectory)
RegistryDirectory,基于注册中心的服务发现,本文将重点探讨Dubbo是如何实现服务的自动注册与发现。从上篇文章,得知在消息消费者在创建服务调用器(Invoker)【消费者在初始时】时需要根据不同的协议,例如dubbo、registry(从注册中心获取服务提供者)来构建,其调用的方法为
源码分析Dubbo override实现原理
在上篇在讲解源码分析Dubbo路由注册与发现机制的时候,dubbo管理员可以通过dubbo-admin管理系统在线上修改dubbo服务提供者的参数,最终将存储在注册中心的configurators catalog,然后通知RegistryDirectory更新服务提供者的URL中相关属性,按照最新的
Dubbo Filter机制概述
从上文可知,在服务的调用或消费端发送请求命令中,Dubbo引入过滤器链机制来实现功能的包装(或扩展)。Dubbo很多功能,例如泛化调用、并发控制等都是基于Filter机制实现的,系统默认的Filter在/dubbo-rpc-api/src/main/resources/META-INF/dubbo/
源码分析Dubbo tps过滤器器实现原理
本文将重点分析一下dubbo限流的另外一个方式,tps过滤器。@Activate(group = Constants.PROVIDER, value = Constants.TPS_LIMIT_RATE_KEY)过滤器作用服务调用tps过滤器使用场景对Dubbo服务提供者实现限流(tps
源码分析Dubbo监控中心实现原理
Dubbo监控的基本实现原理就是在服务调用时收集服务调用并发度、服务响应时间,然后以一定频率向监控中心汇报统计数据。MonitorFilter过滤器过滤器作用监控过滤器,向监控中心汇报服务调用数据。使用场景搭建监控中心监控Dubbo服务调用。阻断条件非阻断过滤器。Monito
源码分析kryo对java基础数据类型与Stirng类型的序列化反序列化机制
kryo序列化原理用过dubbo的开发人员,在选取序列化时都会根据“经验”来选kryo为序列化,其原因是序列化协议非常高效,超过java原生序列化协议、hessian2协议,那kryo为什么高效呢?序列化协议,所谓的高效,通常应该从两方面考虑:序列化后的二进制序列大小。(核心)序列化、反序
源码分析kryo对象序列化实现原理
本文主要梳理Kryo序列化基本实现。重点剖析Kryo#writeClassAndObject、Kryo#readClassAndObject方法。Kryo对象序列化原理kryo对象序列化入口为Kryo的writeClassAndObject。Kryo#writeClassAndObject
源码分析Dubbo服务提供者、服务消费者并发度控制机制
本文将详细分析<dubbo:service executes=""/>与<dubbo:reference actives = “”/>的实现机制,深入探讨Dubbo自身的保护机制。源码分析ExecuteLimitFilter@Activate(gro
源码分析Dubbo服务调用日志(accesslog参数)实现原理
谈到服务调用日志,大家恐怕第一想到就是如果开启了这个参数,会影响性能。那真实的情况是怎么样了?性能损耗到底有多大呢?在实践中我们如何使用该功能呢?本文将详细分析Dubbo accesslog实现原理。AccessLogFilter概述过滤器作用记录调用日志。使用场景记录服务提供者端
Dubbo服务治理之灰度发布方案(版本发布控制影响范围)
方案背景背景:基于Dubbo服务的治理,是否可以支持业务级别的灰度发布、是否基于业务参数的路由转发。例如以GIS为例,当发布一个新版本时,是否可以以按照解析地址或合作伙伴来区分,版本发布之初,只希望地址为:广东省的解析请求发送到新版本,而其他的地址请求还是使用旧版;或者根据合作伙伴例如UCP(优享
源码分析Dubbo 泛化调用与泛化实现原理
本文将重点分析Dubbo的两个重要特性:泛化调用与泛化实现。泛化引用:通常是服务调用方没有引入API包,也就不包含接口中的实体类,故服务调用方只能提供Map形式的数据,由服务提供者根据Map转化成对应的实体。泛化实现泛化实现,是指服务提供者未引入API包,也就不包含接口用于传输数据的实体
源码分析Dubbo编码解码实现原理(Dubbo协议)
本节主要介绍了Dubbo协议的编码方式,涉及协议头、协议体具体的编码规则,默认使用Dubbo协议,其核心类图如下:在Dubbo整个框架中,codec2的可选值为dubbo、thrift,本文将重点分析Dubbo协议的编码解码。本文主要以Dubbo协议为例进行展开,其他通信方式,例如Thrift

有开始,就会有进​步!

在追求性能的道路上,记录每一刻的成长!源码解读,编程技巧,外文翻译,技术实践,线上案例等等,记录自己,启发他人!

专家作者推荐

巡山小汪

关注微信公众号《解Bug之路》,有问题请在公众号中咨询:) 无论多么艰苦的时刻,都不要忘记,辉煌的未来,在你的眼中闪耀!

飞哥开发内功

《深入理解Linux网络》作者,腾讯搜狗十年工程师,公众号「开发内功修炼」作者!

踩刀诗人

聊聊技术,唠唠段子,偶尔做菜写诗,欢迎关注我的公众号 踩刀诗人

Brand

搜索关注微信公众号【架构与思维】:撰稿者为bat、字节的几位高阶研发/架构,专注技术分享。

专题推荐

本系列文章主要针对Dubbo2.6.2(dubbox2.8.4)版本,从源码的角度分析Dubbo内部的实现细节,加深对Dubbo的各配置参数底层实现原理的理解,更好的指导Dubbo实践。
14篇文章24450阅读量
JVM的源码可以解决我们日常工作中遇到的不少问题,但是对于很多开发者来说阅读JVM源码的门槛比较高,而且JVM源码的体系非常大,需要有3-5年的开发经验才能阅读。如果想学源码的开发同学可以阅读本期专题,从实践问题切入,才能有真正提升。
16篇文章24825阅读量