dubbo中出现can not be invoked any more
具体错误示例如下


从错误看,是客户方发起调用时,dubbo会去检查本地的invoker instance,如果发现invoker已经是destroy status,则直接抛出上面的异常,下面先来说下平台部小伙伴曾遇到过的此异常情况
平台部小伙伴用springboot包装了一个dubbo的starter出来
该starter大多是基于注解的,如果同时在多个地方去实列化引用同一个远程服务的实列,就会出现此错误,究其原因,是因为spring在多次重复实列化时,会先去检查容器中是否已有相同的class实列存在,如果有,会先销毁旧,再去实列化一个新的,在销毁时会调用AbstractInvoker中的destroy方法。导致destroy属性被至为true,下面来看下该class的UML图


从上图可以看出,该Invoker是所有invoker的顶级父类所有的调用都会经过这里,但是任何对象的销毁也都会调用该类的destroy方法,到此我们可以来说说最上面的问题了,上面的问题都是在发布的时候才出现,分析原因最大可能是运维GG在stop服务前,没有将其从nginx上摘除,在停服务的过程中,要先进行资源的销毁,但是此时8080端口依然对外可用(也就是服务),如果此时有流量进来发起调用,就会抛出上面的异常了
dubbo中出现can not be invoked any more的更多相关文章
- Dubbo中集群Cluster,负载均衡,容错,路由解析
Dubbo中的Cluster可以将多个服务提供方伪装成一个提供方,具体也就是将Directory中的多个Invoker伪装成一个Invoker,在伪装的过程中包含了容错的处理,负载均衡的处理和路由的处 ...
- Dubbo中服务消费者和服务提供者之间的请求和响应过程
服务提供者初始化完成之后,对外暴露Exporter.服务消费者初始化完成之后,得到的是Proxy代理,方法调用的时候就是调用代理. 服务消费者经过初始化之后,得到的是一个动态代理类,InvokerIn ...
- Dubbo中对Spring配置标签扩展
Spring提供了可扩展Schema的支持,完成一个自定义配置一般需要以下步骤: 设计配置属性和JavaBean 编写XSD文件 编写NamespaceHandler和BeanDefinitionPa ...
- 在Dubbo中开发REST风格的远程调用(RESTful Remoting)
rest 在Dubbo中开发REST风格的远程调用(RESTful Remoting)
- 架构师之路-在Dubbo中开发REST风格的远程调用
架构师之路:从无到有搭建中小型互联网公司后台服务架构与运维架构 http://www.roncoo.com/course/view/ae1dbb70496349d3a8899b6c68f7d10b 概 ...
- Dubbo中订阅和通知解析
Dubbo中关于服务的订阅和通知主要发生在服务提供方暴露服务的过程和服务消费方初始化时候引用服务的过程中. 2345678910111213141516171819 public <T> ...
- Dubbo中Directory解析
Directory代表多个Invoker,可以把它看成List Directory接口 Directory接口继承了Node接口: 1234567 public interface Directory ...
- Dubbo中编码和解码的解析
(这里做的解析不是很详细,等到走完整个流程再来解析)Dubbo中编解码的工作由Codec2接口的实现来处理,回想一下第一次接触到Codec2相关的内容是在服务端暴露服务的时候,根据具体的协议去暴露服务 ...
- Dubbo中暴露服务的过程解析
dubbo暴露服务有两种情况,一种是设置了延迟暴露(比如delay="5000"),另外一种是没有设置延迟暴露或者延迟设置为-1(delay="-1"): 设置 ...
随机推荐
- Jackson日期转换少一天
1. 案例 添加一个学生,前端把生日传给后端,后端使用Datel类型接收到后,然后调用其它服务进行保存入库. 与其它服务交互时,使用的是JSON格式,出现日期少一天. @Data @AllArgsCo ...
- Spring基础(一)
一.Spring简介 Spring框架性质是属于容器性质的.容器中装什么对象就有什么功能.所以可以一站式开发(springmvc+ioc+spring jdbc).核心是IOC(控制反转)和AOP(面 ...
- Unreal Engine 4 系列教程 Part 4:UI教程
.katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > ...
- Java中Integer.parseInt和Integer.valueOf,你还傻傻分不清吗?
在Java的Integer类中,有Integer.valueOf(String s)和Integer.parseInt(String s)两个静态方法,他们都能够将字符串转换为整型,他们到底有什么区别 ...
- MakeDownPad2基本使用
一.安装 1.1.MakeDownPad2下载安装 MakeDownPad2从官网下载安装包直接安装即可 1.2.依赖安装 MakeDownPad2支持html代码,如果要使用预览功能就需要安装awe ...
- Spring Boot2 系列教程(十六)定时任务的两种实现方式
在 Spring + SpringMVC 环境中,一般来说,要实现定时任务,我们有两中方案,一种是使用 Spring 自带的定时任务处理器 @Scheduled 注解,另一种就是使用第三方框架 Qua ...
- kaldi使用cvte模型进行语音识别
操作系统 : Unbutu18.04_x64 gcc版本 :7.4.0 该模型在thch30数据集上测试的错误率只有8.25%,效果还是不错的. 模型下载地址: http://www.kaldi-as ...
- Arduino学习笔记④ 经典按键实验
1.前言 我们讲了数字IO口介绍以及做了流水灯演示(主要用到IO口的输出功能),这节课我们讲解一下IO口的输入功能,说到输入功能,最经典的例子莫过于按键实验.废话少说,赶紧上车. 2.实验材料 ...
- 刷14道leetcode的总结
引子 为什么我要刷leetcode?换工作?不是!那是?玩!巴菲特的双目标清单系统,基本方法是列两个清单,一个是职业生涯最重要的目标(不超过5个),另一个是比较重要的目标.对于比较重要的目标,要像躲避 ...
- Kerberos kinit crontab定时任务不生效的问题解决
问题 有这样一个定时任务 1 */12 * * * kinit -kt xxxxxx.keytab principle 这样写每天 12点,执行一次. 但是服务器的应用程序报错: GSS initia ...