开发者学堂课程【阿里巴巴分布式服务框架 Dubbo 快速入门:启动检查】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/624/detail/9466
启动检查
演示启动检查
上节课说了 dubbo 的配置规则以及属性的覆盖策略,dubbo 里到底有多少配置,官方文档在示例中一一列举了 dubbo 支持的所有配置,这节课先演示几个常用的设置,第一项为启动时检查,这项在开发中常用,开发中有一个服务提供者,也有一个服务的消费者,默认他们都要注册到注册中心去,消费者要从注册中心获取提供者的调用地址,如果某一天,注册中心里没有提供者,那就启动了消费者,那消费者在启动期间默认会报错,会发现它需要的服务不在注册中心,可通过调整启动时检查,默认 check=“true”,即要检查它要消费的服务是不是已经在注册中心,如果没有就会报错,而我们把启动时检查关掉,check=“false”,就可以跳过检查,消费者自动启动,只有在调用的时候才去注册中心检查服务当前是否可用。测试一下效果,以 user-service-provider 为例,以前 user-service 是服务提供者,order-service 是服务消费者,在我们没有将服务提供者注册到注册中心,控制台为此时没有注册中心,那直接启动消费者会是什么的效果?
把此图片中的调用注掉
即时不做代码调用,进行测试
会看到 fail to check,检查到服务状态有异常,No provider available 没有可服务的提供者。
以上就是启动时的检查,一旦检查失败,启动就会报错,程序中止,为了能用期间,在服务消费者里设置属性,此处有一个引用远程服务,将 check 改成 check=“false”,让其启动时不检查重新进行测试。
重新进行测试
成功启动,并且控制台打印调用完成,也就是说,并没有来做检查;当我们真正调用时,向注册中心发起检查,此时配置用的 dubbo:reference,配置了一个远程应用的服务,让它启用不检查,后续消费者里要引用非常多的服务,一一配置不检查也是麻烦的,可用另外一个标签 dubbo consumer,统一配置消费者的所有规则,
统一规则的配置即为 reference 的默认值,即可在此处写 check=“false“,也就是说所有的 reference 配置都是 check=”false“。
代码为
<!--配置当前消费者的统一规则,所有的服务都不检查-->
<dubbo:consumer check=”false”></dubbo:consumer>
进行测试,也可以调用完成,
如下:
dubbo consumer 配置的属性可参照官方文档 schema 手册 dubbo consumer,左键打开,即为服务消费者缺省值配置,同时也是<dubbo:reference>一些标签的默认设置,可以在默认设置上找到所有 reference 的规则。
另一种设置在启动时检查,除了配某一个服务启动时是否检查和所有服务启动时是否检查,还能配注册中心是否启动时检查,如果有注册中心那么启动一切正常,
如果没有注册中心,以前会默认报错,现在写上 check=“false“,服务启动时即使没有注册中心,暂时也不报错,注册中心什么时候启动起来,会连接上注册中心,包括可以看<dubbo:registry>这个标签的详细信息,在 schema 配置手册 dubbo:registry,
这是是注册中心的一些配置,其中check是来调整注册中心不存在时,是否报错,默认值为 true,可参照文档做很多调整。