Dubbo高级特性应用之关闭服务检查
admin
2021-01-21 16:15:21
0

概述

在服务消费者端的dubbo:reference标签中,有一个属性check,它是一个服务治理类的属性,其作用是在启动服务消费者应用时,检查引用的服务,即interface属性中指定的服务,在注册中心是否存在。check属性值默认为true,即启动时将对服务进行检查;也可以设置为false,忽略检查操作。普通使用场景

check属性缺省使用dubbo:consumer标签的check属性值,默认为true,即在启动服务消费者应用时进行检查。如果服务还未注册到注册中心或不存在,此时应用将报错而无法启动。

从服务治理的角度看,它是一个非常有用的属性,可以在应用向用户提供服务前及早发现问题,确保服务可用,一般情况下并不需要特别去配置,默认开启服务检查。循环消费场景

但有一些特殊情况除外,例如服务出现循环消费的场景,简单来讲,就是应用A和应用B分别使用了对方提供的服务。由于服务检查机制,产生了服务循环依赖,导致任何一方都没有办法启动。如不进行架构设计级别的调整,要解决服务循环依赖,必须将其中一方的服务检查关闭,然后先于另一方启动。

比如某个教育培训机构,将原有平台改造为微服务架构的过程中,用户服务发布在原有的个人中心 ,订单服务发布在运营平台。在个人中心查看个人购买的课程时需要调用运营平台的订单服务,在运营平台查看订单详情时需要调用个人中心的用户服务。运营平台和个人中心互为对方的服务提供者和消费者。

运营平台配置

个人中心配置

此时便形成了服务的循环消费。如果不将个人中心或运营平台其中一方的服务检查关闭,两个应用都将无法启动。比如关闭运营平台用户服务userService的检查后,便可依次启动运营平台和个人中心。当然,也可以粗暴的做法就是两个平台都关闭服务检查即可。

#java开发工程师# #架构师# #诗和远方#

Dubbo高级特性应用之关闭服务检查

学习工作之余,一起看看诗和远方:白云山摩星岭的日落

相关内容