31

Eureka 客户端配置注册地址为什么要加eureka做后缀?

 3 years ago
source link: https://mp.weixin.qq.com/s/0tdDTv_uIwB9ScW5DVLTAA
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Eureka 客户端配置注册地址为什么要加eureka做后缀?

原创 cocodroid 搬运工来架构 1周前

640?wx_fmt=gif点击上方蓝色字关注我们~

最近在网上看到别人提出了这个问题 :

640?wx_fmt=png
现在从源码的角度简单剖析其原因。我们知道,一般在配置注册中心eureka的地址类似这个:eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/而访问eureka注册中心控制台页面管理则是:http://localhost:8761,即可。
640?wx_fmt=png
所以,这也是网友所疑惑的:为什么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启动时拉取实例数据入口:
640?wx_fmt=png
640?wx_fmt=png
而/{version}则为/eureka。
640?wx_fmt=png
由此可知,/eureka是作为默认版本V2。并且后缀/eureka已经是被定义成常量,也就是说,eureka server提供的注册地址已经被规范化为包含/eureka。那么,控制台请求和页面处理等,是在哪里处理呢?
640?wx_fmt=png
640?wx_fmt=png
由此,可知控制台处理是在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配置中心地址对应应该为:eureka.client.serviceUrl.defaultZone=http://localhost:8761/verysu/eureka/最后,我觉得网友的问题原因应该是:1)eureka后台管理和客户端注册地址做区分,达到比较好的隔离作用,不同请求走不同context。2)使用eureka作为后缀(固定/规范),也能很好的区分是将eureka作为注册中心,如果不是这样的话,直接给你一个地址可能并不清楚到底使用哪个注册中心了。上面这些是我个人观点,如果你有不同想法,欢迎探讨哦。

【eureka相关源码剖析】

Eureka源码剖析之一:初始化-启动
Eureka源码之二:服务注册
Eureka源码剖析之三:服务拉取
Eureka源码剖析之四:服务续约
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、加入:互联网基础/架构交流群

640?wx_fmt=png

-关注搬运工来架构,与优秀的你一同进步-

如果喜欢这篇文章可以点在看哦↘


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK