• consul注册中心服务注册过程源码分析


    一.如何入手源码过程:一般springcloud整合各大框架,基本都用到了springboot的自动装配机制,也就是在依赖包下,META-INF文件夹,spring.factories文件,包含了启动该框架的一些配置类

    根据这个原则,我们查看:

     由此我们发现了2个跟服务注册相关的类:

    ConsulAutoServiceRegistrationAutoConfiguration

     ConsulServiceRegistryAutoConfiguration:

     通过这2个配置类,向spring容器中导入了注册相关的几个重要类:

    我们先分析: ConsulAutoRegistration

    从继承体系看,它继承了ConsulRegistration:

     该类中有个NewService,我们的服务向注册中心注册,肯定要告诉注册中心,服务的一些基本信息吧,如ip 端口 服务名称 服务实例ID

     注册的过程,就是将该对象发送到注册中心,这些信息配置在application.yml中:

     后续我们分析:ConsulAutoServiceRegistration对象,它是注册的过程的核心,也就是它将上面的NewService推送给注册中心的:

    先看看它的方法有哪些:

     既然有注册方法,那问题是,该方法什么时候调用呢?

    继续分析该类的继承体系:

     分析该类的父类:

     我们发现,该类监听了WebServerInitializedEvent初始化事件,啥意思,该事件就是tomcat启动完毕的事件,我们debug在该方法,启动项目:

     继承跟踪debug

     

     

     

     

     

     

     

     

     我们看看请求的json:

     

     请求的路径是啥:

     所以,请求的路径是:http:ip:端口/v1/agent/service/register,请求方式PUT 请求参数是上面的json 因此,我们也可以自己使用postMan进行注册

    拓展:如果我某个服务启动了多台机,那么该服务在注册中心的存储格式是啥:Map<String,List<NewSerivce>> map; 这个就是注册中心注册列表的大概结构了,key是服务名称,同个服务名,不同实例,实例编号是不一样的

    
    
    
    
    
    





















  • 相关阅读:
    分析函数
    Orcal函数
    归档日志
    JSP数据交互
    JSP
    接口
    JAVA修饰符
    QuicKHit
    Java 三章错题
    Java 多态
  • 原文地址:https://www.cnblogs.com/yangxiaohui227/p/15098012.html
Copyright © 2020-2023  润新知