dubbo学习九--服务降级,优雅停机,日志
2017-01-05 15:02
246 查看
向注册中心写入动态配置覆盖规则:(通过由监控中心或治理中心的页面完成)
其中:
mock=force:return+null
表示消费方对该服务的方法调用都直接返回null值,不发起远程调用。
屏蔽不重要的服务不可用时对调用方的影响。
还可以改为
mock=fail:return+null
表示消费方对该服务的方法调用在失败后,再返回null值,不抛异常。
容忍不重要服务不稳定时对调用方的影响
优雅停机
dubbo是通过JDK的shutdownHook来完成优雅停机的,所以如果用户使用kill -9 pid等强制关闭指令,是不会执行优雅停机的,只有通过kill pid时,才会执行。
原理:
服务提供方:停止时,先标记为不接收新请求,新请求过来时直接报错,让客户端重试其它机器。然后,检测线程池中的线程是否正在运行,如果有,等待所有线程完成,除非超时,则强制关闭。
服务消费方:停止时,不再发起新的调用请求,所有新的调用在客户端即报错。检测有没有请求的响应还没有返回,等待响应返回,除非超时,则强制关闭。
设置优雅停机超时时间,缺省超时时间是10秒:(超时则强制关闭)
如果ShutdownHook不能生效,可以自行调用:
日志适配
缺少自动查找
log4j
slf4j
jcl
jdk
可以通过以下方式配置日志输出策略:
dubbo.properties
dubbo.xml
访问日志
可以通过以下方式配置日志输出策略:
dubbo.properties
dubbo.xml
将访问日志输出到当前应用的log4j日志:
将访问日志输出到指定文件:
RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension(); Registry registry = registryFactory.getRegistry(URL.valueOf("zookeeper://10.20.153.10:2181")); registry.register(URL.valueOf("override://0.0.0.0/com.foo.BarService?category=configurators&dynamic= false&application=foo&mock=force:return+null")); |
mock=force:return+null
表示消费方对该服务的方法调用都直接返回null值,不发起远程调用。
屏蔽不重要的服务不可用时对调用方的影响。
还可以改为
mock=fail:return+null
表示消费方对该服务的方法调用在失败后,再返回null值,不抛异常。
容忍不重要服务不稳定时对调用方的影响
优雅停机
dubbo是通过JDK的shutdownHook来完成优雅停机的,所以如果用户使用kill -9 pid等强制关闭指令,是不会执行优雅停机的,只有通过kill pid时,才会执行。
原理:
服务提供方:停止时,先标记为不接收新请求,新请求过来时直接报错,让客户端重试其它机器。然后,检测线程池中的线程是否正在运行,如果有,等待所有线程完成,除非超时,则强制关闭。
服务消费方:停止时,不再发起新的调用请求,所有新的调用在客户端即报错。检测有没有请求的响应还没有返回,等待响应返回,除非超时,则强制关闭。
设置优雅停机超时时间,缺省超时时间是10秒:(超时则强制关闭)
<dubbo:application ...> <dubbo:parameter key="shutdown.timeout" value="60000" /> <!-- 单位毫秒 --> </dubbo:application> |
ProtocolConfig.destroyAll(); |
缺少自动查找
log4j
slf4j
jcl
jdk
可以通过以下方式配置日志输出策略:
java -Ddubbo.application.logger=log4j |
dubbo.application.logger=log4j |
<dubbo:application logger="log4j" /> |
可以通过以下方式配置日志输出策略:
java -Ddubbo.application.logger=log4j |
dubbo.application.logger=log4j |
<dubbo:application logger="log4j" /> |
<dubbo:protocol accesslog="true" /> |
<dubbo:protocol accesslog="foo/bar.log" /> |
相关文章推荐
- Dubbo学习:服务降级
- Dubbo学习(十三):服务降级
- linux 完整学习资料:第十三章 日志服务rsyslog
- dubbo学习之服务消费者
- dubbo源码学习(五)dubbo暴露服务的过程
- 阿里巴巴分布式服务框架dubbo学习笔记
- 关于dubbo的服务降级
- JBoss配置学习:概述 ,日志(Log4j),命名服务(NS) ,事务(TM),EJB开发 ,消息服务(JMS)
- dubbo 使用学习五(dubbo开发中使用到的一些服务配置方式)
- Dubbo学习(十二):服务多版本
- Linux学习日志day2 Part1——搭建freeIPA服务器实现用户管理以及SSH服务远程登录
- 淘宝SOA框架dubbo学习(2)--搭建Zookeeper注册中心服务
- 跟我学习dubbo-在Linux操作系统上手工部署Dubbo服务(5)
- 跟我学习dubbo-使用Maven构建Dubbo服务的可执行jar包(4)
- dubbo 服务的调用堆栈-- 学习dubbo启动后执行逻辑和代码
- dubbo学习(三)-dubbo的服务发布
- 跟我学习dubbo-使用Maven构建Dubbo服务的可执行jar包(4)
- 跟我学习dubbo-在Linux操作系统上手工部署Dubbo服务(5)
- 分布式服务--dubbo学习二
- dubbo 使用 学习二(spring+dubbo+zookeeper单机服务)