• 5.Eureka服务注册的源码分析(springcloud)


    一、Eureka 概念的理解
    1 服务的注册
    当项目启动时(eureka 的客户端),就会向 eureka-server 发送自己的 元数据(原始数据) (运行的 ip ,端口 port ,健康的状态监控等,因为使用的是 http/ResuFul 请求风格), eureka-server 会在自己内部保留这些元数据 ( 内存中 ) 。(有一个服务列表) restful 格,以 http 动词的请求方式,完成对 url 资源的操作)
    2 服务的续约
    项目启动成功了,除了向 eureka-server 注册自己成功,还会 定时 的向 eureka-server 汇报自己,心跳,表示自己还活着。(修改一个时间)
    3 服务的下线(主动下线)
    当项目关闭时,会给 eureka-server 报告,说明自己要下机了。
    4 服务的剔除(被动下线,主动剔除)
    当项目超过了指定时间没有向 eureka-server 汇报自己,那么 eureka-server 就会认为此节点死掉了,会把它剔除掉,也不会放流量和请求到此节点了。
    二、Eureka 源码分析
    了解他的原理 出了问题排查 bug ,优化你的代码
    1 Eureka 运作原理的特点
    Eureka-server 对外提供的是 restful 风格的服务
    http 动词的形式对 url 资源进行操作 get post put delete
    http 服务 + 特定的请求方式 + 特定的 url 地址
    只要利用这些 restful 我们就能对项目实现注册和发现
    只不过, eureka 已经帮我们使用 java 语言写了 client ,让我们的项目只要依赖 client 就能实现注册和发现!
    只要你会发起 Http 请求,那你就 有可能 自己实现服务的注册和发现。不管你是什么语言!
    三、服务注册的源码分析【重点】

    Eureka-client 发起注册请求
    1.源码位置

    2 如何发送信息注册自己

     

    3 真正的注册 AbstractJerseyEurekaHttpClient

     

    总结:
    eureka 启动的时候,会向我们指定的 serviceUrl 发送请求,把自己节点的数据以 post请求的方式,数据以 json 形式发送过去。
    当返回的状态码为 204 的时候,表示注册成功。
    Eureka-server 实现注册+保存

     1 接受客户端的请求

    com.netflix.eureka.resources.ApplicationResource

    2 源码位置

     

    3 接受 client 的注册请求

     

    4 处理请求(注册自己,向其他节点注册)

     

    5 真正的注册自己

     

    服务注册总结 

    重要的类:
    DiscoveryClient 里面的 register() 方法完后注册的总体构造
    AbstractJerseyEurekaHttpClient 里面的 register() 方法具体发送注册请求(post
    InstanceRegistry 里面 register() 方法接受客户端的注册请求
    PeerAwareInstanceRegistryImpl 里面调用父类的 register() 方法实现注册
    AbstractInstanceRegistry 里面的 register() 方法完成具体的注册保留数据到 map 集合保存服务实例数据的集合:
    第一个 key 是应用名称(全大写) spring.application.name
    Value 中的 key 是应用的实例 id
    eureka.instance.instance-id
    Value 中的 value 是 具体的服务节点信息
  • 相关阅读:
    相比Superset,DataEase开源工具的部署为什么更简单?
    【函数式编程】函数式编程、纯函数、高阶函数以及函数柯里化
    SpringBoot项目使用EasyPoi实现导入导出,就是这么的丝滑
    基于SSM+Vue的物流管理系统的设计与实现
    Golang如何使用命令行-- flag库
    卷积神经网络结构设计,卷积神经网络参数设置
    SSM项目【Spring MVC、MyBatis、Spring】传智健康项目,关于检查项页面问题
    Comparison method violates its general contract 问题
    zabbix监控
    idea插件generateAllSetMethod一键生成set/get方法以及bean对象转换
  • 原文地址:https://blog.csdn.net/weixin_59334478/article/details/126960444