二. 图说 Eureka 源码 (环境搭建)
前言
上一篇已经完成了Eureka的初步简介,这篇文章我们来研究Eureka源码环境的搭建
课程目标
目录
- 概述
- 源码环境搭建
- 入口类
1.概述
eureka源码不是直接由springcloud提供的,我们平时通过注解@EnableDiscoveryClient
和@EnableEurekaServer
使用的,都是springcloud
在原有代码上进行了封装的。而原生的底层实现是有netflix
实现的。因此我们阅读源码的时候直接阅读netflix
下的eureka源码。
1.1.源码的阅读技巧
- 抓住核心流程,其他流程去猜测它的实现,后续去验证
- 通过画图去梳理,可以先绘制一个大图,然后逐步去完成其细节。
2.源码环境搭建
本博客以Eureka的,此处i建议使用
idea.2018
版本,Eureka选择v1.7.x
分支
2.1.环境配置
- gradle配置:eureka需要依赖gradle的环境配置。关于gradle的配置这里就不多说明了,自己网上百度下就好
- 源码下载
- 执行eureka目录下的gradlew.bat
文件,mac的执行gradlew命令
2.2.导入idea
使用
idea.2018
版本导入,其他版本可能存在问题,导入idea后如下图,分为如下几个module
>结构图概述
- eureka-client:eureka的客户端,注册到Eureka上的一个服务,即我们通过@EnableDiscoveryClient
完成标记的这些服务
- eureka-client-jersey2: jersey2是一个mvc框架,类似我们经常使用的Spring MVC,这里主要是通过jersey2来完成Eureka Server
和Eureka Client
之间服务的数据传输的
- eureka-core: eureka server包中引入的一个子module,该模块主要就是eureka server的一些处理,也即eureka的注册中心
- eureka-core-jersey2: 同eureka-client-jersey2,这里是eureka-server
中的一些mvc通信的组件
- eureka-examples: 一些测试案例,可以debug来完成服务的处理
- eureka-resources:一些资源管理,这里主要是eureka中的web页面资源,也即我们上一篇看到的eureka的页面,这里主要是一些jsp的资源
- eureka-server:该模块的gradle中引入了eureka-core
,eureka-client
以及eureka-resources
,会将这几个组件打包成一个war。从这里也就可以看出,我们的eureka-server会同时作为一个client注册到其他服务器上。
3.入门分析
基于我们之前的知识,我们知道Eureka的启动顺序是 Eureka Server
--> Eureka Client
启动并注册到 Eureka Server上 --> 服务之间完成调用。如图
- 入口类
那么我们先来了解下Eureka Server
启动时,都做了哪些事情。先梳理Eureka Server的启动流程。Eureka server是一个jsp组成的项目,所以我们先研究下Eureka server
下的web.xml
文件。
回忆下我们之前学习jsp的时候,项目的入口类就是listener
,因此我们可以找到EurekaBootStrap
:该类即为Eureka server
的入口类。
- 主页
该页面即为我们上一篇看到的页面。
- filter
此处的一些filter,暂时先不管,后续再进行讲解。
本篇内容就到此为止,先对Eureka的结构有个大致的了解,然后下一节我们开始Eureka Server的启动流程。
关于
- Github: https://github.com/liangliang1259/common-notes
- 公众号
版权声明: 本文为 InfoQ 作者【阿亮】的原创文章。
原文链接:【http://xie.infoq.cn/article/4ff36c0e29355a54593424cb7】。文章转载请联系作者。
评论