前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >图个源码系列 · 开端 · eureka项目解构

图个源码系列 · 开端 · eureka项目解构

作者头像
简熵
发布2023-03-06 21:39:10
3060
发布2023-03-06 21:39:10
举报
文章被收录于专栏:逆熵逆熵

目录

1、eureka的项目分析

2、其实,我就是个web工程

eureka,是springCloud生态中的负责构建服务注册与发现的注册中心组件。本文,通过从eureka的项目结构出发,一点点去剖析eureka的源码。

1、eureka的项目分析

既然要看源码一定是先把代码拉到本地,GitHub地址【https://github.com/Netflix/eureka】,本文基于1.7.3版本去分析。基于Gradle一通build之后,我们可以看到项目结构。

先简单分析一下几个要看的项目目录:

eureka-client:eureka客户端相关代码逻辑和配置

eureka-server:eureka服务端,其实就是一些配置文件,重点去分析他的打包配置文件。

eureka-resources:eureka注册中心控制台页面

eureka-examples:eureka的客户端功能的测试例子,可以都跑跑看

eureka-core:eureka封装的一些核心功能,注册中心和服务客户端的交互很多都封装在里面

eureka-core-jersey2&eureka-client-jersey2:eureka是基于jersey2封装的一套用于客户端和注册中心服务端的请求交互的MVC层逻辑。

那我们来看看eureka-server的build.gradle文件,通过观察打包的过程来看看各个module之间的依赖关系。

eureka-server实现依赖了eureka-client模块,这个必须的,毕竟eureka-server本身也可以作为eureka-client去向另外一台eureka-server进行注册,组成集群模式的注册中心。

eureka-core模块也毋庸置疑需要依赖的。很多注册中心相关的核心功能都封装在其中。并且eureka-core也去依赖了eureka-client工程。

然后可以看到依赖了jersey2,一个类似于SpringMVC的MVC框架,对外提供restful请求。基于这个框架,eureka-server就可以将eureka-core中的注册中心功能暴露出去给客户端访问。由此,我们也可以明确eureka是基于http请求通信的。

然后就是把eureka-resources下的一些jsp,js,css文件都打包进去,最终就形成了一个war包。

02

其实,我就是个web工程

在eureka-server的module中,我们可以看到一个很关键的配置文件,那就是web.xml。我们可以确定eureka-server打成一个war包之后,就和我们平时写的web工程一样。最终交由web容器例如tomcat来运行。所以eureka-server也没有那么神秘,我们慢慢来看eureka的各种配置和操作。

我们先从web.xml文件入手,来看看整个web应用启动的时候都做了什么?

首先映入眼帘的是listener配置,当web容器启动的时候回去加载listener配置的类,这里配置了一个EurekaBootStrap类,这个类可以说很关键,整个eureka的启动初始化都可能在这个类中完成,我们后面的分析也会从这个类展开。

紧接着就是几个filter,StatusFilter,状态过滤器;ServerRequestAuthFilter,请求认证相关的过滤器;RateLimitingFilter,限流过滤器;GzipEncodingEnFocingFilter,解压缩相关的过滤器。这几个过滤器都在core包下面,从下图也可以看出来各个过滤器作用的路径,并且限流过滤器默认是不开的。我们后面可以去一一分析一下他们具体的作用。

还有一个MVC相关的核心过滤器,jersey的核心过滤器,这个一定和其他的MVC框架的核心过滤器一样都会接管所有的请求并处理,如下图,还配置一些参数的初始化。

如下图我们也可以看到整个jersey过滤器拦截了全部的url,而且,我们在这里也可以看到默认的欢迎页面就是status.jsp,也就是我们在eureka控制台页面看到的哪些就是这个jsp提供的。

上面一套配置文件看下来,我们对整个eureka工程就有了大概的了解,后面的解读也能够顺着文中的思路去慢慢分析,一步步去展开eureka的架构设计和原理。谢谢大家阅读,文中有不正确的地方,欢迎留言,指正,批评。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-01-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 逆熵架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
微服务引擎 TSE
微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档