eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
而访问eureka注册中心控制台页面管理则是:http://localhost:8761,即可。
所以,这也是网友所疑惑的:为什么eureka.client.serviceUrl.defaultZone配置需要增加/eureka作为后缀。
我们知道,eureka使用的http组件是:Jersey。
Jersey 是 JAX-RS(JSR311)开源参考实现用于构建 RESTful Web service。此外 Jersey 还提供一些额外的 API 和扩展机制,所以开发人员能够按照自己的需要对 Jersey 进行扩展。
那么/eureka这个后缀是什么时候使用的,或者从哪里进行处理?
在EurekaServerAutoConfiguration中注入了Filter:
@Bean
public FilterRegistrationBean jerseyFilterRegistration(
javax.ws.rs.core.Application eurekaJerseyApp) {
FilterRegistrationBean bean = new FilterRegistrationBean();
bean.setFilter(new ServletContainer(eurekaJerseyApp));
bean.setOrder(Ordered.LOWEST_PRECEDENCE);
bean.setUrlPatterns(
Collections.singletonList(EurekaConstants.DEFAULT_PREFIX + "/*"));
return bean;
}
从上面源码可知,eureka server启动时创建了/eureka/*过滤器,所以所有相关注册请求都被此进行处理。
比如:eureka client启动时拉取实例数据入口:
由此可知,/eureka是作为默认版本V2。并且后缀/eureka已经是被定义成常量,也就是说,eureka server提供的注册地址已经被规范化为包含/eureka。
由此,可知控制台处理是在spring-cloud-netflix-eureka-server这个项目模块中,可通过eureka.dashboard.path来配置控制台的地址,默认为:/。
同时,我们在配置eureka server yml配置文件时,是没有指定context-path,也就是默认为/。如果我们想指定的话,那么相关的配置都要进行调整。
server:
port: 8761
context-path: /verysu # 默认为 /
此时访问eureka控制台则为:http://localhost:8761/verysu/
eureka.client.serviceUrl.defaultZone=http://localhost:8761/verysu/eureka/
1)eureka后台管理和客户端注册地址做区分,达到比较好的隔离作用,不同请求走不同context。
2)使用eureka作为后缀(固定/规范),也能很好的区分是将eureka作为注册中心,如果不是这样的话,直接给你一个地址可能并不清楚到底使用哪个注册中心了。
上面这些是我个人观点,如果你有不同想法,欢迎探讨哦。
【eureka相关源码剖析】
回复公众号【资料】获得干货资料集锦:技术ppt、IT大会资料、架构、分布式资料等。
1、互联网Code Review最佳实践分享
2、dubbo面试题!会这些,说明你看懂了dubbo源码
3、Kafka面试题!掌握它才说明你真正懂Kafka
4、Netty 5.0为啥被舍弃?原因竟然是...
5、中台之上——业务架构系列【汇总】
6、必备瑞士军刀IDEA插件,你使用了哪些
7、线上热更新代码只需3步 Arthas实战
8、Eureka源码剖析之七:架构&面试题【总结】
9、互联网工程师应该用这种姿势打印日志
10、加入:互联网基础/架构交流群
-关注搬运工来架构,与优秀的你一同进步-
如果喜欢这篇文章可以点在看哦↘
本文仅供学习!所有权归属原作者。侵删!文章来源: 搬运工来架构
文章评论