跳到主要内容

(六) Nacos Server处理注册请求

文章目录

  • InstanceController.register()
    • 1.获取到请求中指定属性的值
  • 2.通过请求参数组装出instance
  • 3.将instance写入到注册表
    • 3.1 创建一个空的service临时的实例
      • 3.1.1 重写计算校验和
      • 3.1.2 将service写入到注册表
        • 3.1.2.1 将service写入注册表
        • 3.1.2.2 初始化service内部健康检测任务
          • 3.1.2.2.1 定时清除过期instance任务
          • 3.1.2.2.2 cluster的健康检测任务
      • 3.1.3 持久实例到其他Nacos Server
    • 3.2 将instance写入到service
  • 4.总结

InstanceController.register()

 

InstanceController#register(): 处理Nacos Client的注册请求。

    @CanDistro
@PostMapping
@Secured(parser = NamingResourceParser.class, action = ActionTypes.WRITE)
public String register(HttpServletRequest request) throws Exception {



// 从请求中获取指定属性的值
final String namespaceId = WebUtils
.optional(request, CommonParams.NAMESPACE_ID, Constants.DEFAULT_NAMESPACE_ID);
// 从请求中获取指定属性的值
final String serviceName = WebUtils.required(request, CommonParams.SERVICE_NAME);
// 检测serviceName名称是否合法
checkServiceNameFormat(serviceName);
// 通过请求参数组装出instance
final Instance instance = parseInstance(request);
// 将instance写入到注册表
serviceManager.registerInstance(namespaceId, serviceName, instance);
return "ok";
}