![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
dubbo
文章平均质量分 91
dubbo相关
捉虫大师
微信搜索”捉虫大师“
展开
-
抓到Dubbo异步调用的小BUG,再送你一个贡献开源代码的机会
hello,大家好呀,我是小楼。最近一个技术群有同学at我,问我是否熟悉Dubbo,这我熟啊~他说遇到了一个Dubbo异步调用的问题,怀疑是个BUG,提到BUG我可就不困了,说不定可以水,哦不…写一篇文章。遇到问题,尤其不是自己遇到的,必须要复现出来才好排查,截一个当时的聊天记录:他的问题原话是:注意几个重点:听到这个描述,我的第一反应是这个返回结果定义为boolean肯定有问题!《Java开发手册》中就强调了RPC接口返回最好不要使用基本类型,而要使用包装类型:但这个是业务编码规范,如果RPC框架不能使用原创 2022-07-04 11:12:06 · 167 阅读 · 0 评论 -
我是一个Dubbo数据包...
hello,大家好呀,我是小楼。前几天不是写了这篇文章《发现一个开源项目优化点,点进来就是你的了》嘛。文章介绍了Sentinl的自适应缓存时间戳算法,从原理到实现都手把手解读了,而且还发现Sentinel-Go还未实现这个自适应算法,于是我就觉得,这简单啊,把Java代码翻译成Go不就可以混个PR?甚至在文章初稿中把这个描述为:「有手就可以」,感觉不太妥当,后来被我删掉了。过了几天,我想去看看有没有人看了我的文章真的去提了个PR,发现仍然是没有,心想,可能是大家太忙(懒)了吧。于是准备自己来实现一遍,周末我原创 2022-06-08 13:00:56 · 129 阅读 · 0 评论 -
灵感乍现,造了个与众不同的Dubbo注册中心扩展轮子
hello大家好呀,我是小楼。作为一名基础组件开发,服务好每一位业务开发同学是我们的义务(KPI)。客服群里经常有业务开发同学丢来一段代码、一个报错,而我们,当然要微笑服务,耐心解答。有的问题,凭借多年踩坑经验,一眼就能看出;有的问题,看一眼代码也能知道原因,但有的问题,还真就光凭看是看不出来的,这时,只能下载代码,本地跑跑看了。熟悉我的朋友都知道,我从事dubbo相关开(客)发(服)工作多年,所以我就来讲一个dubbo问题排查过程中的有趣的事。通常遇到看不能解决的问题时,先git拉取代码,再导原创 2022-04-28 09:55:40 · 174 阅读 · 0 评论 -
这个Dubbo注册中心扩展,有点意思
今天想和大家聊聊Dubbo源码中实现的一个注册中心扩展。它很特殊,也帮我解决了一个困扰已久的问题,刚刚在生产中用了,效果很好,迫不及待想分享给大家。Dubbo的扩展性非常灵活,可以无侵入源码加载自定义扩展。能扩展协议、序列化方式、注册中心、线程池、过滤器、负载均衡策略、路由策略、动态代理等等,甚至「扩展本身」也可以扩展。在介绍今天的这个注册中心扩展之前,先抛出一个问题,大家思考一下。如何低成本迁移注册中心?有时出于各种目的需要迁移Dubbo的注册中心,或因为觉得Nacos比较香,想从Zookeep原创 2022-02-11 13:07:42 · 716 阅读 · 0 评论 -
Dubbo为什么要用Go重写
先说两句我常常在散步时思考很多技术上的「为什么问题」,有时一个问题会想很久,直到问题的每一个点都能说服自己时,才算完结。于是想把这些思考记录下来,形成文章,可以当做一个新的系列。这些文章中你可能看不到代码,但能窥探到一些容易被忽视的问题,以及问题更深层次的「为什么」。今天带来第1篇,Dubbo为什么要用Go重写?诞生于阿里巴巴,2011年开源的Dubbo已经走过了10个年头。在2019年,它被用Go重写并开源,如今两年过去,已经从当初的V1.0.0版本发展到了V3.0.0,截止目前star数3.8K原创 2021-12-31 11:29:07 · 607 阅读 · 1 评论 -
skywalking内存泄露排查
背景介绍最近写的关于dubbo内存泄露稍微复杂了一点,很多人表示看不明白,想到之前遇到的比较简单的内存泄露问题,更容易入门,于是拿出来分享一下。为了做微服务的熔断降级限流,引入了sentinel组件,对于sentinel引入到公司内部使用只是做了一些简单的定制化,如持久化配置规则,监控数据收集展示,后台登录权限整合等等。在功能验证通过的情况下,也做了压测,性能符合要求,于是就推上了生产做线上灰度。刚开始没问题,直到有一天线上配置了一条降级规则,并且触发了,监控告警就炸了锅。开始是服务出现大量慢请求原创 2021-11-11 18:53:15 · 2377 阅读 · 0 评论 -
dubbo 配置 loadbalance 不生效?撸一把源码
背景很久之前我给业务方写了一个 dubbo loadbalance 的扩展(为了叙述方便,这个 loadbalance 扩展就叫它 XLB 吧),这两天业务方反馈说 XLB 不生效了我心想,不可能啊,都用了大半年了~排查于是我登上不生效的 consumer 机器进行排查,还好我留了一手,当 XLB 加载时,会打印一行日志看了下这个服务,并没有打印日志,说明 XLB 并没有加载成功于是,我就去问对应的开发,有按照我的文档配置 loadbalance 吗?答复:完全按照文档配置这下我就有点不相信了原创 2021-11-03 12:51:19 · 873 阅读 · 0 评论 -
案例分享 | dubbo 2.7.12 bug导致线上故障
本文已收录 https://github.com/lkxiaolou/lkxiaolou 欢迎star。搜索关注微信公众号"捉虫大师",后端技术分享,架构设计、性能优化、源码阅读、问题排查、踩坑实践。背景最近某天的深夜,刚洗完澡就接到业务方打来电话,说他们的 dubbo 服务出故障了,要我协助排查一下。电话里,询问了他们几点是线上有损故障吗?——是止损了吗?——止损了有保留现场吗?——没有于是我打开电脑,连上 VPN 看问题。为了便于理解,架构简化如下只需要关注 A、B、C 三个服.原创 2021-09-27 10:43:31 · 480 阅读 · 0 评论 -
小白也能看懂的dubbo3应用级服务发现详解
搜索关注微信公众号"捉虫大师",后端技术分享,架构设计、性能优化、源码阅读、问题排查、踩坑实践。本文已收录 https://github.com/lkxiaolou/lkxiaolou 欢迎star。dubbo 是一款开源的 RPC 框架,主要有3个角色: 提供者(provider)、消费者(consumer) 、注册中心(registry)提供者启动时向注册中心注册服务地址,消费者启动时订阅服务,并通过获取到的提供者地址发起调用,当提供者地址变更时,通过注册中心向消费者推送变更。这就是 d.原创 2021-09-14 10:35:42 · 1514 阅读 · 1 评论 -
Dubbo No provider问题排查思路
本文已收录 https://github.com/lkxiaolou/lkxiaolou 欢迎star。不想看字的同学可直接划到底部查看思维导图问题分析使用过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.原创 2021-08-13 17:16:41 · 3408 阅读 · 0 评论 -
Nacos注册中心之概要设计
前言在之前的文章中分析了Nacos配置中心,配置中心的核心是配置的创建、读取、推送。注册中心的核心比配置中心多一个服务探活模块,他俩的相似度非常高,甚至阿里内部的注册中心就叫ConfigServer。Nacos注册中心打算分成几个模块来分析,本文重点在于概要设计,基于2.0.0版本。环境搭建用Nacos的源码来搭建源码阅读和调试环境,可参考《Nacos配置中心模块详解》 Nacos调试环境搭建部分。其中 JVM参数可以指定只启动Naming模块,也可以不指定,默认全都启动。example模块下原创 2021-08-06 12:20:19 · 161 阅读 · 0 评论 -
使用dubbo-go搭建dubbo接口测试平台
背景http接口测试只需要一个curl命令,但dubbo协议没有这样的现成接口测试工具。通常公司内的dubbo控制台或其他平台会集成一个dubbo接口测试工具。调用一个dubbo接口,需要知道服务名service、方法名method和参数args。正常的调用,调用方需引入服务提供方定义的接口jar包。作为接口测试平台,没办法引入所有提供方定义的接口jar包,可以有以下方案来解决:dubbo支持telnet协议调用dubbo接口dubbo的泛化调用可以在不引入提供方接口定义jar包的情况下对接口原创 2021-07-22 20:06:27 · 1112 阅读 · 4 评论 -
zookeeper到nacos的迁移实践
本文已收录 https://github.com/lkxiaolou/lkxiaolou 欢迎star。技术选型公司的RPC框架是dubbo,配合使用的服务发现组件一直是zookeeper,长久以来也没什么大问题。至于为什么要考虑换掉zookeeper,并不是因为它的性能瓶颈,而是考虑往云原生方向演进。云原生计算基金会(CNCF)对云原生的定义是:云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设.原创 2021-07-11 21:37:52 · 978 阅读 · 2 评论 -
dubbo网关演进之路
本文已收录 https://github.com/lkxiaolou/lkxiaolou 欢迎star。背景随着公司业务的飞速发展,基于php的模块化架构难以支持未来业务的发展:php模块化架远远落后于行业主流架构(微服务–>云原生),而php生态的服务治理开源组件匮乏,研发投入过大杭州php人才匮乏,导致新鲜血液招聘困难基于php的多进程架构难以支撑电商高并发业务场景尽管很早我们就做了会员、商品、交易的服务化,但流量入口还是php主站,php实际上仍是一个单体应用,单体应用无需网.原创 2021-06-28 19:13:05 · 1057 阅读 · 0 评论 -
dubbo 2.7应用级服务发现踩坑小记
本文已收录 https://github.com/lkxiaolou/lkxiaolou 欢迎star。背景本文记录最近一位读者反馈的dubbo 2.7.x中应用级服务发现的问题,关于dubbo应用级服务发现的相关介绍可以参考之前的文章《dubbo应用级服务发现初体验》,这里不再赘述。读者反馈他们在基于dubbo 2.7应用级服务发现开发dubbo网关,根据文章《dubbo应用级服务发现初体验》写了demo调用时报no provider的错误。首先觉得他们挺有想法,把dubbo应用级服务发现搬上.原创 2021-06-25 19:26:41 · 772 阅读 · 2 评论 -
给dubbo贡献源码,做梦都在修bug
本文已收录 https://github.com/lkxiaolou/lkxiaolou 欢迎star。一在之前的文章《redis在微服务领域的贡献》中,从一次面试经历中了解了redis可以在微服务中玩的这么溜,同时也从源码角度分析了dubbo的redis注册中心。最后得出了dubbo的redis注册中心不能用于生产的结论,其中原因有如下两点:使用了keys命令,会阻塞单线程的redis,keys执行期间,其他命令都得排队没有心跳检测这个功能,我测试了provider被kill -9杀死后,c.原创 2021-06-13 21:02:07 · 135 阅读 · 0 评论 -
dubbo应用级服务发现初体验
本文已收录 https://github.com/lkxiaolou/lkxiaolou 欢迎star。dubbo应用级服务发现介绍了解dubbo的朋友知道,dubbo的provider启动时向注册中心注册,consumer从注册中心消费。目前dubbo往注册中心上注册的数据是接口级,而应用级服务发现是往注册中心上注册实例(ip+port),两者的区别只是注册的粒度不同。至于为什么会出现应用级服务发现,有如下几点原因与业界主流微服务模型对齐,比如 SpringCloud、Kubernetes.原创 2021-06-04 09:39:46 · 479 阅读 · 1 评论 -
实测Tengine开源的Dubbo功能
本文已收录 https://github.com/lkxiaolou/lkxiaolou 欢迎star。背景Tengine是阿里巴巴基于Nginx开发并开源的Web服务器,它继承了Nginx所有的功能和特性,并在其基础上做了大量的扩展和增强,其中像动态模块加载,四层负载均衡,reuseport支持等能力,都逐渐被Nginx官方吸收引用。Tengine在开源以后大受欢迎,成为了Nginx最好的替代品之一,官方网站(http://tengine.taobao.org/)。Dubbo是阿里巴巴开.原创 2021-05-28 19:39:36 · 165 阅读 · 1 评论 -
dubbo的前世今生
本文已收录 https://github.com/lkxiaolou/lkxiaolou 欢迎star。背景在很久以前,网站应用是单体应用的架构,流量小,所有功能、代码都部署在一起,成本低。此时数据库访问框架ORM是关键。后来流量逐渐增大,单体应用被拆分为互不相干的多个应用,这就是垂直架构,此时加速前端页面开发的Web框架MVC是关键。再后来,垂直应用越来越大,应用间的交互不可避免,分布式服务框架RPC变成了关键。dubboRPC,全称Remote Procedure Call,即远程过程调.原创 2021-05-25 14:00:15 · 153 阅读 · 0 评论 -
聊聊dubbo协议2
本文已收录 https://github.com/lkxiaolou/lkxiaolou 欢迎star。在《聊聊dubbo协议》中介绍了attachments在consumer和provider间的传递情况,有个疑问没有给出答案。为什么2.7.x版本的dubbo不支持provider端向consumer端回传隐式参数呢?今天的续集将揭晓答案。抓包确定是provider没发还是consumer丢掉以下测试基于dubbo 2.7.6版本在provider端加入下面的代码RpcContext..原创 2021-05-24 12:23:59 · 246 阅读 · 0 评论 -
聊聊dubbo协议
协议协议通俗易懂地解释就是通信双方需要遵循的约定。我们了解的常见的网络传输协议有tcp、udp、http等。再到我们常用的基础组件,一般来说client端与server端也有相应的协议,如redis、mysql、zookeeper等都是各自约定的私有协议,同样今天标题中的dubbo协议也是一种私有协议,他们都是应用层协议,基于tcp或udp设计。通常应用层协议都是基于tcp和udp,可靠传输通常使用tcp,如大多数的基础组件,如redis、mysql。只有能容忍丢失且需要很高的性能时使用udp协议,比原创 2021-05-21 12:25:23 · 728 阅读 · 0 评论 -
几个你不知道的dubbo注册中心细节
本文已收录 https://github.com/lkxiaolou/lkxiaolou,欢迎star。你会正确配置backup地址吗?在配置dubbo注册中心时,一般会这样写dubbo.registry.protocol=zookeeperdubbo.registry.address=127.0.0.1:2181也会简单地写成dubbo.registry.address=zookeeper://127.0.0.1:2181当zookeeper地址不止一个,需要配置backup地址时,.原创 2021-05-12 08:24:50 · 433 阅读 · 0 评论 -
升级个dubbo,差点p0故障
本文已收录 https://github.com/lkxiaolou/lkxiaolou,欢迎star。上周遇到个关于升级dubbo 2.6 到2.7的兼容性问题,差点造成线上故障,这里记录下,也给大家提个醒。问题回放有一个接口的提供方(dubbo 2.6.6)这么配置接口的版本号<dubbo:provider version="1.0.0"/>消费方(也是dubbo 2.6.6)的reference这么配置<dubbo:reference id="sampleServi.原创 2021-05-11 21:46:02 · 156 阅读 · 1 评论 -
排查dubbo接口重复注销问题,我发现了一个巧妙的设计
背景我在公司内负责自研的dubbo注册中心相关工作,群里经常接到业务方反馈dubbo接口注销报错。经排查,确定是同一个接口调用了两次注销接口导致,由于我们的注册中心注销接口不能重复调用,调用第二次会因为实例已经注销而报实例找不到的错误。虽然这个报错仅会打印一条错误日志,不影响业务,但本着 follow through的精神,我决定还是一探究竟,更何况重复注销也增加了应用的结束时间,影响了发布回滚速度。问题复现拿到业务方的dubbo版本,基于开源2.7.3内部定制的一个版本,该版本修改主要涉及安全漏洞原创 2021-04-30 16:59:03 · 286 阅读 · 3 评论