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源码分析----过滤器之ActiveLimitFilter

    ActiveLimitFilter也是用来做并发控制的 区别在于ExecuteLimitFilter作用于服务端 而ActiveLimitFilter作用于客户端 看下官网的例子
  • Dubbo各种协议

    原文地址 http dubbo io User Guide zh htm UserGuide zh 协议参考手册 协议参考手册 外链图片转存失败 源站可能有防盗链机制 建议将图片保存下来直接上传 img QStFh0Ov 166207932
  • Spring Cloud 与 Dubbo 区别

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

    这里写目录标题 1 Dubbo服务的基本调用过程 1 1在Java中定义dubbo服务 以interface接口的方式 1 2 Provider提供服务的具体实现 并声明为dubbo服务 1 3 Consumer使用dubbo服务 1 Du
  • Dubbo调用过程监控

    MonitorFilter 主要对调用过程进行监控 public Result invoke Invoker
  • duboo使用zookeeper连接的单机及集群配置方式

    1 单机配置
  • 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 注意
  • 解决dubbo问题:forbid consumer

    原文地址 http www jameswxx com e4 b8 ad e9 97 b4 e4 bb b6 e8 a7 a3 e5 86 b3dubbo e9 97 ae e9 a2 98 ef bc 9aforbid consumer 线
  • 6种微服务RPC框架,你知道几个?

    6种微服务RPC框架 你知道几个 开源 RPC 框架有哪些呢 一类是跟某种特定语言平台绑定的 另一类是与语言无关即跨语言平台的 跟语言平台绑定的开源 RPC 框架主要有下面几种 Dubbo 国内最早开源的 RPC 框架 由阿里巴巴公司开发并
  • Android 内存优化(四) —— 未取消注册或回调导致内存泄露

    未取消注册或回调导致内存泄露 比如我们在 Activity 中注册广播 如果在 Activity 销毁后不取消注册 那么这个刚播会一直存在 系统中 同上面所说的非静态内部类一样持有 Activity 引用 导致内存泄露 因此注册广播后在 A
  • 【Dubbo】Dubbo(二)简单实践

    Dubbo 二 实践 安装注册中心 下载zookeeper 在zookeeper路径下新增date文件夹存储数据 conf路径下新增zoo cfg 编辑zoo cfg 修改数据目录dataDir为新增的data文件夹 其他与zoo samp
  • Dubbo基础学习

    目录 第一章 概念介绍 1 1 什么是RPC框架 1 2 什么是分布式系统 1 3 Dubbo概述 1 3 Dubbo基本架构 第二章 服务提供者 直连 2 1 目录结构和依赖 2 2 model层 2 3 service层 2 4 res
  • 深入探索 Dubbo 的 AOT 技术及其技术演进历程

    引言 随着云原生和微服务架构的兴起 高性能和低延迟成为了开发者们的关注重点 在 Java 生态系统中 Spring 和 Dubbo 是两个备受青睐的框架 它们为开发者提供了强大的功能和灵活性 为了进一步提升性能 Dubbo 团队引入了 AO
  • SpringCloud与Dubbo的比较

    目录 Dubbo 一 dubbo简介 二 dubbo组织架构图 三 dubbo的优势 SpringCloud 一 SpringCloud简介 二 SpringCloud组织架构 三 SpringCloud特点 四 Dubbo与SpringC
  • dubbo配置提供者和消费者

    1 找到对应的文件 提供者 消费者 参考dubbo官网 http dubbo apache org zh cn docs user quick start html
  • 零基础自学:2023 年的今天,请谨慎进入网络安全行业

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

    Dubbo 是一款高性能 轻量级的开源 Java RPC 框架 它提供了多种容错策略以应对网络通信过程中的各种异常情况 以下是 Dubbo 的一些常见容错策略 Failover 失败自动切换 当服务调用失败时 自动切换到其他可用的服务提供者
  • 说说 Dubbo 工作原理

    Dubbo 是一款高性能 轻量级的开源 Java RPC 框架 用于构建分布式系统 它提供了一种简单而灵活的解决方案 用于服务之间的远程调用和通信 Dubbo 的工作原理主要涉及以下几个关键组件和流程 组件说明 服务提供者 Provider
  • Dubbo 负载均衡策略?

    Dubbo是一款高性能 轻量级的开源Java RPC框架 它提供了一种灵活的负载均衡策略 以平衡服务调用时的负载 提高系统的可扩展性和稳定性 Dubbo支持多种负载均衡策略 其中包括 随机负载均衡 Random Dubbo使用随机负载均衡策
  • 说说 Dubbo 与 Spring Cloud 的区别?

    Dubbo 和 Spring Cloud 都是流行的分布式服务框架 但它们在设计和使用上有一些不同之处 以下是它们之间的一些主要区别 开发语言 Dubbo 主要基于 Java 而 Spring Cloud 是基于 Spring Boot 的

随机推荐

  • 80386保护模式--GDT,LDT,TSS,调用门,特权级转移,附pmtest5代码详解

    教材选择一个操作系统的实现 xff0c 作者于渊 xff0c 看此书前最好了有汇编语言 xff0c 保护模式下的汇编 xff08 参考清华杨季文的80X86汇编语言程序设计教程 xff09 xff0c C语言 xff0c 计算机组成原理 x
  • 80386保护模式--描述符,附pm.inc代码详解

    描述符包括 xff0c 存储段描述符 xff08 代码段 xff0c 数据段 xff0c 堆栈段 xff09 xff0c 系统描述符 xff08 任务状态段TSS xff0c 局部描述符表LDT xff09 xff0c 门描述符 xff08
  • 80386保护模式--分页机制,附pmtest8代码详解

    一 分段机制 逻辑地址 分段机制 线性地址 分页机制 物理地址 xff0c 分页机制示意图如图1 页目录表中的每一项叫页目录项 xff1b 页表中的每一项叫页表项 图 1 页映射表结构 页目录表PDE xff0c 及页表PTE如图2
  • 80386保护模式--中断机制,附pmtest9代码详解

    一 80386 xff0c 内存 xff0c 8259A的连接如图1 图 1 二 编程8259A中断控制器 xff08 将ICW写入特定的寄存器 xff09 8259A是可编程中断控制器 xff0c 对它的设置并不复杂 xff0c 是通过向
  • Android--›系统源码下载之"指定模块源码的下载"(如:系统闹钟源码下载)

    网上大多数的文章都是介绍Android系统源码的下载 本文小清新 介绍Android系统中 单个模块源码的下载 其实repo下载的Android系统 就是通过下载多个小模块 然后拼起来的 简单介绍下Android源码下载方法 来自Andro
  • 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 执行的
  • Orange's 进程间通信

    新增一个系统进程 xff0c 和TESTA进行通信 xff0c 通信的流程是这样的 xff0c 如果首先执行到系统进程 xff0c 发送消息 xff0c 那么会触发内中断到ring0级 xff0c 完成发送所需要的动作 xff0c 之后回到
  • IDEA找不到项目根路径问题【多模块情况】

    如果不对idea进行设置 则默认项目根路径是父项目根路径下 xff0c 即使父项目就是一个壳儿 从eclipse转过来又点不习惯 下面给出解决方法 在启动项找到Edit 这个配置 找到要启动的那个项目 xff0c 进行配置 解决 这时候这个
  • 使用wmic命令获得计算机硬件信息

    wmic的使用方法 wmic 硬件信息名称 get 属性名称 xff0c 属性名称2 代码示例 xff1a java获取CPU代码 public static String getCpuId throws IOException Proce
  • Kotlin--›Android Activity/Fragment转场动画极简使用方法

    Activity之间共享元素实现的转场动画 需要API gt 61 21才支持 但是 转场动画 在 support包里面提供了支持 所以没有API 21的限制 可以参考Transition转场动画的文章 https blog csdn ne
  • android日志抓取

    目录说明 00 mtk dump mtk dump文件 01 qcom dump qcom dump文件
  • 带你走进EJB--EJB和Spring对比

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

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

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