HZERO微服务平台03: 平台理服务、服务注册

概述

hzero的微服务体系里, 服务除了要注册到注册中心(nacos等), 还注册到admin服务(平台治理服务);
admin服务接收到注册信息, 负责完成路由刷新、权限刷新、swagger信息刷新, 任意一项刷新失败都会导致服务出现异常现象;
由于刷新是异步执行, 且涉及的服务较多, 出现问题通常不好排查; 详细了解注册流程有助于快速排查定位;

调用过程阅读方法: 如何以纯文本方式简单快速记录java代码的调用过程

服务的注册流程:

注册成功的表现:

  • 服务没有不停地报错
  • swagger中可以看到服务并且可以调用接口;

注册失败时的排查方法

检查注册流程每个环节, 与之对应的排查过程:

代码调用过程

调用过程阅读方法: 如何以纯文本方式简单快速记录java代码的调用过程

业务服务:

//hzero-boot-admin.jar 
//bean注册: AdminRegistrationAutoConfiguration
AdminAutoRegistration#start  //SmartLifecycle.start
AdminAutoRegistration#register
retryAlwaysUntilSuccess //死循环, 从一启动就开始注册, 直到成功
AdminTransport#transport 注册到admin
AdminTransport#requestAdmin
    //请求的地址: post 8061端口: /actuator/service-init-registry/register
    //requestBody: org.hzero.boot.admin.registration.Registration 实例
response = (Response)this.httpTransporter.transport(new StaticEndpointHttpRequest(instance, staticEndpoint, requestBody, Response.class));

注册接口:

StaticEndpoint#ADMIN_SERVICE_REGISTER
ADMIN_SERVICE_REGISTER("/actuator/service-init-registry/register", HttpMethod.POST, true, "HZERO治理服务注册服务的api接口"),

doc接口:

/v2/iosp/api-docs
...swagger.controller.CustomController.getDocumentation

/v2/api-docs
springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation

admin服务:

ServiceInitRegistryEndpoint#register
RestServiceInitRegistry#register
RestServiceInitRegistry#assertHealth
RestServiceInitRegistry#isHealth
restTemplate.exchange(healthUrl, HttpMethod.GET, null, Map.class);  //调用服务的健康检查接口
posted @ 2021-11-16 10:51  QIAOXINGXING001  阅读(504)  评论(0编辑  收藏  举报