1. Eureka 源码

Spring cloud eureka 是在 netflix 的 eureka 基础上进行了封装,加了一些注解,对 springboot 进行支持。学习 eureka 源码,先下载 netflix eureka 源码进行剖析,后面再把 spring cloud eureka 看一下就好了。

Eureka Github 地址:

准备对 Spring Cloud 2020.0.0-RC1 版本(2020-12-11)进行源码学习,对应的是 Spring Cloud Netflix 3.0.0-RC1,根据 maven 仓库的版本看到 netflix eureka 对应的是 1.10.10.

image.png

2. Eureka 源码阅读环境搭建

  1. 下载 gradle 6.3,https://gradle.org/releases/,eureka 源码目录 ./gradle/wrapper/gradle-wrapper.properties 可以找到需要的 gradle 版本;
    1. distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-bin.zip
  1. 解压,设置 GRADLE_HOME 环境变量:值是 gradle 的解压目录;
  2. 在 path 环境变量中,加入 %GRADLE_HOME%/bin;
  3. 在 cmd 终端中运行 gradle -v 检验 gradle 安装成功;
  4. IDEA 中 Open Project 导入 eureka 源码项目
  5. 项目配置 JDK 8
  6. 在 build.gradle 中添加内容,解决构建过程中 console 控制台乱码; ```groovy tasks.withType(JavaCompile) { options.encoding = “utf-8” } tasks.withType(Javadoc) { options.encoding = “utf-8” }

```

  1. Build Project,gradle 构建的过程需要翻墙,不然找不到 plugin 和依赖;

image.png

3. Netflix eureka 项目结构

  • eureka-client:这个就是指的 eureka 的客户端,注册到 eureka 上面去的一个服务,就是一个 eureka client,无论是你要注册,还是要消费别的服务,无论是服务提供者还是服务消费者,都是一个 eureka 客户端。
  • eureka-core:这个就是指的 eureka 的服务端,其实就是 eureka 的注册中心
  • eureka-resources:这个是基于 jsp 开发的 eureka 控制台,web 页面,上面你可以看到各种注册服务
  • eureka-server:这是把 eureka-client、eureka-core、eureka-resources 打包成了一个 war 包,也就是说 eureka-server 自己本身也是一个 eureka-client,同时也是注册中心,同时也提供 eureka 控制台。真正的使用的注册中心
  • eureka-examples:eureka 使用的例子
  • eureka-test-utils:eureka 的单元测试工具类

    4. eureka 源码解读思路

    eureka 的核心流程:

  • 服务注册:eureka client 往 eureka server 进行注册的过程;

  • 服务发现:eureka client 从 eureka server 获取注册表的过程;
  • 服务续约:eureka client 定时往 eureka server 发送续约通知(心跳);
  • 服务剔除:eureka server 定时清除失去心跳的 eureka client 的过程;

然后,包含其他的一些底层机制:通信,限流,自我保护,server 集群。

所以先阅读 eureka server 模块的源码,看看 eureka server 是怎样启动的。

eureka 非常适合通过 Test 代码作为入口,来进行阅读,核心机制都能找到专门的测试方法,可以借助这些方法来理解这些机制的实现源码。

参考:
https://blog.csdn.net/bigbigworld_/category_11117072.html