Dubbo之旅--问题汇总

2023-05-16

   


    在工作和学习的过程中,具体运用Dubbo的时候遇到了很多的问题,这些问题一方面让自己进一步了解所谓的dubbo,另一方面通过对它们的总结和分析能够在工作中加倍的提高效率,接下来将会对遇到的和别人总结的一些常见的问题进行汇总.

 

1.增加提供服务版本号和消费服务版本号.

 

 

        这个具体来说不算是一个问题,而是一种问题的解决方案,在我们的实际工作中会面临各种环境资源短缺的问题,也是很实际的问题,刚开始我们还可以提供一个服务进行相关的开发和测试,但是当有多个环境多个版本,多个任务的时候就不满足我们的需求,这时候我们可以通过给提供方增加版本的方式来区分.这样能够剩下很多的物理资源,同时为今后更换接口定义发布在线时,可不停机发布,使用版本号.

 

        引用只会找相应版本的服务,例如

 

<dubbo:serviceinterface=“com.xxx.XxxService”ref=“xxxService” version=“1.0” />

 

 

<dubbo:referenceid=“xxxService”interface=“com.xxx.XxxService” version=“1.0”/>

 

dubbo服务的版本号在项目中非常实用,如果后续系列允许的话,我会专门对dubbo的版本进行一个详细的文章说明.

 

 

 

 

2.dubbo reference注解问题

 

       @Reference只能在springbean实例对应的当前类中使用,暂时无法在父类使用;如果确实要在父类声明一个引用,可通过配置文件配置dubbo:reference,然后在需要引用的地方跟引用springbean一样就可以了.

 

3.服务超时问题.

 

此问题也是在项目中非常常见的一个问题,但是这个问题背后可能是各种原因导致.

 

         目前如果存在超时,情况基本都在如下:

 

(1) 一种情况是服务请求超时.

 

       客户端耗时大,也就是超时异常时的client elapsedxxx,这个是从创建Future对象开始到使用channel发出请求的这段时间,中间没有复杂操作,只要CPU没问题基本不会出现大耗时,顶多1ms属于正常IOThread繁忙,默认情况下,dubbo协议一个客户端与一个服务提供者会建立一个共享长连接,如果某个客户端处于特别繁忙而且一直往一个服务提供者塞请求,可能造成IOThread阻塞,一般非常特殊的情况才会出现服务端工作线程池中线程全部繁忙,接收消息后塞入队列等待,如果等待时间比预想长会引起超时网络抖动,如果上述情况都排除了,还出现在请求发出后,服务接收请求前超过预想时间,只能归类到网络抖动了,需要SA一起查看问题服务自身耗时大,这个需要应用自身做好耗时统计,当出现这种情况的时候需要用数据来说明问题及规划优化方案,建议采用缓存埋点的方式统计服务中各个执行阶段的耗时情况,最终如果超过预想时间则把缓存统计的耗时情况打日志,减少日志量,且能够得到更明确的信息现在我们应用使用过程中发现两种类型的耗时,一种我们目前只能归类到网络抖动,后续需要找运维一起关注这个问题,另外一种是由于一些历史原因,数据库查询容易发生抖动,总有一个时间点会突然多出很多超时。

 

        (2) 二大类的情况是调用的版本不对.

 

在上面我们已经说了具体的版本问题,如果你调用的对方版本不对的话,就相当于你的消费者没有提供者.所以会出现超时,此时只需要把版本对应好即可.

 

(3)提供者的服务被禁止.

 

这是一种人为的控制,通过监控中心我们可以对具体的服务,以及它的权重进行控制,当我将一个具体的服务禁止之后消费者就调不到相关的服务,此时就会出现超时的问题.解决方案,取消禁止即可.注意这里有一定时间的缓存,实际操作的时候应该注意.

            

4.服务保护

 

         服务保护的原则上是避免发生类似雪崩效应,尽量将异常控制在服务周围,不要扩散开。说到雪崩效应,还得提下dubbo自身的重试机制,默认3次,当失败时会进行重试,这样在某个时间点出现性能问题,然后调用方再连续重复调用,很容易引起雪崩,建议的话还是很据业务情况规划好如何进行异常处理,何时进行重试。服务保护的话 考虑服务的dubbo线程池类型(fix线程池的话考虑线程池大小)、数据库连接池、dubbo连接数限制是否都合适.

 

 

5.注册中心的分组group和服务的不同实现group

 

           这两个东西完全不同的概念,使用的时候不要弄混了。registry上可以配置group,用于区分不同分组的注册中心,比如在同一个注册中心下,有一部分注册信息是要给开发环境用的,有一部分注册信息时要给测试环境用的,可以分别用不同的group区分开,目前对这个理解还不透彻,大致就是用于区分不同环境。service和reference上也可以配置group,这个用于区分同一个接口的不同实现,只有在reference上指定与service相同的group才会被发现。

 

        以上为5类我们所遇到的问题,总结下来为了以后的路走的更顺畅.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Dubbo之旅--问题汇总 的相关文章

  • dubbo解析-@EnableDubbo注解详解

    本文基于dubbo 2 7 5版本代码 文章目录 一 EnableDubbo注解功能 二 详细介绍注解引入的三个类的作用 dubbo必须配置注解 EnableDubbo 一 EnableDubbo注解功能 EnableDubbo整合了三个注
  • Spring Cloud 与 Dubbo 区别

    1 定位点不同 SpringCloud SpirngCloud 定位为微服务架构下的一站式解决方案 Dubbo 关注点主要在于服务的调用 流量分发 流量监控和熔断 2 dubbo基于rpc 底层netty SpirngCloud基于http
  • Dubbo调用过程监控

    MonitorFilter 主要对调用过程进行监控 public Result invoke Invoker
  • check the manual that corresponds to your MySQL server version for the right syntax to use near

    check the manual that corresponds to your MySQL server version for the right syntax to use near WHERE 价格 11 at line 1 注意
  • 「从零开始造 RPC 轮子系列」01 我为什么要去造一个轮子?

    目录 好日子 为什么你需要学习造轮子 投资自己 不要成为调包侠 通过造轮子你能学到什么 下一步计划 好日子 宣布一件事情 好日子 12月有个好日子 20211202 从左往右读 接着从右往左读你会发现居然是对称的 这是属于程序员的 浪漫 身
  • Android 内存优化(四) —— 未取消注册或回调导致内存泄露

    未取消注册或回调导致内存泄露 比如我们在 Activity 中注册广播 如果在 Activity 销毁后不取消注册 那么这个刚播会一直存在 系统中 同上面所说的非静态内部类一样持有 Activity 引用 导致内存泄露 因此注册广播后在 A
  • dubbo validation 参数验证 参数校验 @NotNull 自定义响应

    使用dubbo 框架 使用 validation 进行参数校验 首先创建类 import com fasterxml jackson annotation JsonProperty import lombok Getter import l
  • 精心整理的15道 Dubbo 基础面试题,拿去!

    1 Dubbo是什么 Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC 分布式服务框架 现已成为 Apache 基金会孵化项目 dubbo是一个分布式框架 远程服务调用的分布式框架 其核心部分包含 集群容错 提供基于接口方法的透明
  • 浏览器可直接访问 Dubbo、gRPC 后端微服务,Dubbo-js 首个alpha 版本来了!

    基于 Dubbo3 定义的 Triple 协议 你可以轻松编写浏览器 gRPC 兼容的 RPC 服务 并让这些服务同时运行在 HTTP 1 和 HTTP 2 上 Dubbo TypeScript SDK 1 支持使用 IDL 或编程语言特有
  • 开发前期准备工作

    开发前期准备工作 文章目录 开发前期准备工作 0 代码规范 0 1 强制 0 2 推荐 0 3 参考 dao 跟数据库打交道 service 业务层 人类思维解决 controller 抽象化 0 4 注释规范 0 5 日志规范 0 6 专
  • Dubbo入门---搭建一个最简单的Demo框架

    原文地址 https blog csdn net noaman wgs article details 70214612 Dubbo背景和简介 Dubbo开始于电商系统 因此在这里先从电商系统的演变讲起 单一应用框架 ORM 当网站流量很小
  • Jmeter(三十七) - 从入门到精通进阶篇 - 输出HTML格式的性能测试报告(详解教程)

    1 简介 相对于Loadrunner Jmeter其实也是可以有测试报告产出的 虽然一般都不用 没有Loadrunner的报告那么强大是一方面 但是有小伙伴们私下问 那宏哥还是顺手写一下吧 今天我们就来学习下 如何输入HTML格式的JMet
  • SpringBoot+Dubbo分布式SOA项目骨架搭建(二)

    SpringBoot Dubbo分布式SOA项目骨架搭建 项目介绍 本项目是来自于上一篇文章http blog csdn net songxinjianqwe article details 77478385 中的服务化拆分这个部分 经过一
  • tcc分布式事务源码解析系列(一)之项目结构

    happylifeplat tcc 是什么 有什么功能 这是碧桂园旺生活解决分布式事务的TCC开源方案 github地址 支持dubbo springcloud等rpc框架进行分布式事务 本地事务存储 支持redis mogondb zoo
  • Dubbo源码解析:服务暴露与发现

    dubbo源码解析 服务暴露与发现 概述 dubbo是一个简单易用的RPC框架 通过简单的提供者 消费者配置就能完成无感的网络调用 那么在dubbo中是如何将提供者的服务暴露出去 消费者又是如何获取到提供者相关信息的呢 这就是本章我们要讨论
  • java使用MD5生成摘要

    对value进行hash处理 return hash处理结果 public static String digest String input int length 32 try MessageDigest md MessageDigest
  • 零基础自学:2023 年的今天,请谨慎进入网络安全行业

    前言 2023 年的今天 慎重进入网安行业吧 目前来说信息安全方向的就业对于学历的容忍度比软件开发要大得多 还有很多高中被挖过来的大佬 理由很简单 目前来说 信息安全的圈子人少 985 211 院校很多都才建立这个专业 加上信息安全法的存在
  • Dubbo 支持哪些协议?

    Dubbo 支持多种通信协议 包括但不限于以下几种 Dubbo 协议 Dubbo 框架自带的通信协议 用于服务之间的调用 Hessian协议 轻量级远程调用协议 基于 HTTP 传输 Thrift 协议 跨语言 跨平台的服务接口定义和序列化
  • Dubbo 负载均衡策略?

    Dubbo是一款高性能 轻量级的开源Java RPC框架 它提供了一种灵活的负载均衡策略 以平衡服务调用时的负载 提高系统的可扩展性和稳定性 Dubbo支持多种负载均衡策略 其中包括 随机负载均衡 Random Dubbo使用随机负载均衡策
  • HttpRunner(20):脚手架工具使用(一键搭建)-httprunner运行方式

    脚手架工具使用 每一个成熟的系统工具 都会有对应的脚手架工具 它可以快速构建项目的必要目录 不必自己一个一个的配置与搭建 只需要执行一些命令即可 httprunner也提供了脚手架工具 使用步骤如下 1 在命令模式下输入hrun start

随机推荐

  • FAT12文件系统

    一 FAT12软盘格式 软盘格式如图1 xff1a 每个扇区是512字节 xff0c 512B 2880 61 1 44MB 图 1 软盘 xff08 1 44MB xff0c FAT12 xff09 1 引导扇区 占512字节 xff0c
  • X86/Win32函数调用规范研究

    一 函数调用总体框图如下 xff1a 二 C语言函数如下 xff1a int sum int x int y int s s 61 x 43 y return s int foo void int m 61 2 int n 61 3 int
  • ELF文件结构

    一 ELF文件结构如下图 xff1a 之所以要用ELF文件格式 xff0c 是因为这样可以用C语言和汇编语言混合写内核代码 二 ELF header及Program header详细介绍 nasm f elf o kernel o kern
  • int 13H int 10H int 15H

    一 int 13h中断 对于1 44MB的软盘来讲 xff0c 总共有两面 xff08 磁头号0和1 xff09 xff0c 每面有80个柱面 xff08 0 79 xff09 xff0c 每个柱面有18个扇区 软盘的容量的由来 xff1a
  • Orange's 进程

    解释一个操作系统的实现 chapter6 r中代码 程序流程如下 xff1a 1 把Loader中的GDT和esp挪到Kernel中 xff0c 初始化IDTPTR 2 初始化8259 xff0c 初始化IDT xff0c 初始化GDT中的
  • Orange's TTY

    一 TYY任务本质就是增加了一个进程 xff0c 并且运行在ring1 xff0c 且优先级调高了 并且设置了键盘中断用于接收键盘输入 xff0c 并将扫描码存放在缓冲区 task tyy也就是新加入的进程 xff0c 循环执行读写缓冲区
  • C语言指针强制类型转换

    一 举例说明 上图 对应函数调用为int printf const char fmt xff0c fmt为char 指针类型 xff0c 所以共占了32位字节 xff0c 但是 fmt执行的是一个字节 xff0c fmt 43 43 执行的
  • vimdiff 使用笔记

    vimdiff 是建立在 diff 命令之上的 启动方法 xff1a vimdiff file left file right 或者 vim d file left file right 只在某一文件中存在的行的背景色被设置为蓝色 xff0
  • Orange's 进程间通信

    新增一个系统进程 xff0c 和TESTA进行通信 xff0c 通信的流程是这样的 xff0c 如果首先执行到系统进程 xff0c 发送消息 xff0c 那么会触发内中断到ring0级 xff0c 完成发送所需要的动作 xff0c 之后回到
  • CDH启动tserver报错:java.lang.IllegalStateException: Multiple processes with same name

    现象 在CDH界面上重启kudu tserver时界面报错 xff1a 原因 1 首先查看cloudera scm agent的日志cm log cloudera scm agent supervisord log xff0c 看到 xff
  • 【FastRTPS】RTPS协议简介、创建第一个应用

    RTPS协议简介 Domain xff08 域 xff09 xff1a 定义了一个独立的通信平面 xff0c 多个域是同时独立存在的 域包含了多个Participant和发送接收数据的元素 Participant xff08 参与者 xff
  • putty time out超时

    解决方案 xff1a 关键是虚拟机网络 设置为桥接模式
  • Intel Realsense Tracking Camera T265上手测试与总结

    首先在官网 https www intelrealsense com zh hans get started tracking camera 上认真阅读使用教程 xff0c 让自己对 Realsense T265相机有一个初步的认识 了解过
  • C++ 标准模板库(STL)——迭代器、迭代器类型以及序列式,关联容器迭代器失效问题(iterator)

    迭代器iterator 迭代器iterator1 定义2 iterator中typedef的型别 xff08 iter traits xff09 3 iterator的五种类型3 1 Output iteator xff08 只写 xff0
  • 关于x11vnc在ubuntu14.04服务器版上开启远程桌面的使用(作为自己备忘)

    先上一个最后的结果图 xff08 配了好几个小时 xff0c 到处找资料 xff09 如题 xff0c 仅仅作为自己的一个备忘 xff0c 如果能顺便帮助到你 xff0c 我将非常开心 xff01 主要目的 xff1a 利用命令行开启远程服
  • 2021CVPR-Cross Modal Focal Loss for RGBD Face Anti-Spoofing

    用于RGBD人脸反欺骗的交叉模式焦损 摘要 xff1a 自动检测呈现攻击的方法对于确保面部识别技术的可靠使用至关重要 文献中提供的大多数用于呈现攻击检测 PAD 的方法都无法将其推广到看不见的攻击 近年来 xff0c 人们提出了多通道方法来
  • 带你走进EJB--EJB和Spring对比

    通过对 EJB 系列的总结和学习我们已经对 EJB 有了基本的了解 但是为了更进一步的去深入学习 EJB 我们很有必要将它拿出来跟之前非常熟悉的 Spring 进行一下对比 通过对比来了解这两个内容的相同与不同之处 更有利于我们对两者进行深
  • Dubbo之旅--Provider示例

    在本篇文章中我们将通过集体的示例来对 Dubbo 的提供和消费进行代码层面的认识 这里所介绍的是基本的提供者和消费者通过 Spring 容器来进行相关的提供和消费的服务 首先看整个示例的项目结构如下 我们通过 Maven 的方式来进行示例
  • 用EditPlus配置MASM汇编

    最开始写汇编程序 xff0c 是打开一个记事本就写 但是记事本不是专门的程序编辑器 xff0c 格式不好控制 xff0c 更容易写错程序 于是想到 xff0c 能有一个简单的文本编辑器 xff0c 能控制好ASM的格式 xff0c 有关键字
  • Dubbo之旅--问题汇总

    在工作和学习的过程中 具体运用 Dubbo 的时候遇到了很多的问题 这些问题一方面让自己进一步了解所谓的 dubbo 另一方面通过对它们的总结和分析能够在工作中加倍的提高效率 接下来将会对遇到的和别人总结的一些常见的问题进行汇总 1 增加提