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); //调用服务的健康检查接口