首页 > 编程知识 正文

eureka是哪里,eureka缓存机制

时间:2023-05-04 22:24:53 阅读:46298 作者:2882

公司的springcloud已经在线运行,但在最近的测试环境中,zuul无法进行服务传输,出现了如下错误消息的奇怪问题

com.net flix.zuul.exception.zuulexception :前向错误

caused by : Java.lang.runtime exception : org.Apache.http.conn.httphostconnectexception : connectocore 01.decore velop.etong Dai.com/10.20.9.155 ]故障排除:连接重建(连接io

n refused (atrx.exceptions.exceptions.propagate (exceptions.Java :58 ) )。

che.http.conn.httphostconnectexception : connecttocore 01.develop.etong Dai.com :9210 [ core 01.develop.Eton

caused by : Java.net.connect exception : connection refused (connection refused ) )

这个调用的接口本来是可调用的,试着直接调用以下服务,发现服务的接口是可调用的,进行域名和ip的连接测试,发现都没有问题,这突然觉得zuul的服务地址是从eureka同步的,跑到eureka调查服务信息时发现了问题,hostname被解析为localhost。 下图

这很奇怪为什么会解析为localhost,但是如果在同一台计算机上部署了其他服务就没问题了。 一开始怀疑是配置问题,但比较起来,和其他项目没有差别。 为什么只有这个项目不行呢?

似乎只能翻阅源代码,但在一篇文章中,我了解了eureka的地址解析过程。 链接: http://www.it much.com/spring-cloud-code-read/spring-cloud-code-read-eead

IntetUtils.class

publicinetutils.hostinfofindfirstnonloopbackhostinfo (

inetaddressaddress=this.findfirstnonloopbackaddress (;

地址!=空) {

return this.convert address (地址;

} else {

inet utils.hostinfo hostinfo=newinetutils.hostinfo (;

hostinfo.set hostname (this.properties.getdefaulthostname ) );

hostinfo.set IP地址(this.properties.getdefaultipaddress () );

返回主机;

}

}

publicinetutils.hostinfoconvertaddress {

inet utils.hostinfo hostinfo=newinetutils.hostinfo (;

future result=this.executorservice.submit (new callable () )。

公共字符串调用(throws exception )。

return address.getHostName (;

}

);

String hostname;

try {

hostname=(string ) result.get ) ) long ) this.properties.gettimeoutseconds ),TimeUnit.SECONDS;

}catch(exceptionvar6) {

this.log.info (cannotdeterminelocalhostname );

主机名称=' localhost ';

}

Hostinfo.setHostname(Hostname );

hostinfo.set IP地址(地址. gethostaddress ) );

回退

rn hostInfo;

}

发现了上面一段代码,非常可疑。大概意思应该是调另外一个线程去解析网卡等信息,如果一定时间内没有结果,就默认用localhost作为用户名,那么就看一下这个时间是多少

@ConfigurationProperties("spring.cloud.inetutils")

public class InetUtilsProperties {

public static final String PREFIX = "spring.cloud.inetutils";

private String defaultHostname = "localhost";

private String defaultIpAddress = "127.0.0.1";

@Value("${spring.util.timeout.sec:${SPRING_UTIL_TIMEOUT_SEC:1}}")

private int timeoutSeconds = 1;

private List ignoredInterfaces = new ArrayList();

private boolean useOnlySiteLocalInterfaces = false;

private List preferredNetworks = new ArrayList();

好吧,默认是1秒,正常来说,1秒应该是足够了,但是我们测试环境的是虚拟机,而且性能不是特别好,所以更加怀疑是这个地方,但是怎么证明一下呢,这个调底层操作,不太好重现。想了半天,代码翻看了几遍,突然发现,他报错的地方有打日志。那就好办,去日志里搜索一下,如图

至此确定是这个问题了。

这个地方后来确认了一下是因为dns解析慢引起的,看了下面这篇文章确认的:http://xhao.io/2016/04/host-ip/

但是我没有找到spring.util.timeout.sec的配置项,最后找到了一个cloud的网上配置项spring.cloud.inetutils.timeout-seconds

根据说明显示也是配置网卡信息读取超时。

后来我再novaplan.yml中设置了如下配置解决了这个问题

spring:

profiles: prd

cloud:

inetutils:

timeout-seconds: 6

在k8s中搭建可解析hostname的DNS服务

2016-01-25更新 上篇文章总结k8s中搭建hbase时,遇到Pod中hostname的DNS解析问题,本篇将通过修改kube2sky源码来解决这个问题. 1 前言 kube2sky在Githu ...

深入解析hostname

结论:/etc/sysconfig/network 确实是hostname的配置文件,hostname的值跟该配置文件中的HOSTNAME有一定的关联关系,但是没有必然关系,hostname的值来自内 ...

白话SpringCloud | 第三章:服务注册与发现(Eureka)-下

前言 上一章节,讲解了在单机模式下的服务注册与发现的相关知识点及简单示例.而在实际生产或者在这种微服务架构的分布式环境中,需要考虑发生故障时,各组件的高可用.而其实高可用,我的简单粗俗理解就是,通过系 ...

Eureka 入门,带视频

疯狂创客圈 Java 高并发[ 亿级流量聊天室实战]实战系列 [博客园总入口 ] 架构师成长+面试必备之 高并发基础书籍 [Netty Zookeeper Redis 高并发实战 ] 前言 Crazy ...

【转】Eureka集群

Eureka作为SpringCloud的服务发现与注册中心,在整个的微服务体系中,处于核心位置.单一的eureka服务,显然不能满足高可用的实际生产环境,这就要求我们配置一个能够应对各种突发情况,具有 ...

Mysql 服务在本机,需要单机调试Mysql数据库 发生 不认识hostname‘localhost’

今天在本机安装Mysql Server然后用Workbench打开,连接本机数据库 hostname:localhost port:3306 弹出:localhost 不能连接 错误-1042 尝试了 ...

spring cloud 入门系列三:使用Eureka 搭建高可用服务注册中心

在上一篇中分享了如何使用Eureka 进行服务治理,里面搭建的服务注册中心是单体的, 但是在实际的应用中,分布式系统为了防止单体服务宕机带来严重后果,一般都会采用服务器集群的形式,服务注册中心也是一样 ...

玩转Spring Cloud之服务注册发现(eureka)及负载均衡消费(ribbon、feign)

如果说用Spring Boot+Spring MVC是开发单体应用(或单体服务)的利器,那么Spring Boot+Spring MVC+Spring Cloud将是开发分布式应用(快速构建微服务)的 ...

.NET Core微服务之基于Steeltoe使用Eureka实现服务注册与发现

Tip: 此篇已加入.NET Core微服务基础系列文章索引 =>  Steeltoe目录快速导航: 1. 基于Steeltoe使用Spring Cloud Eureka 2. 基于Steelt ...

随机推荐

No.25

每天三件事必做: 1.背单词: 2.跑步: 3.读书.

[Java] phdxm注解

温暖的早晨(http://phdxm.codehaus.org)库是基于java语言的开源json格式解析工具.相对于javajson解析的其他库,诸如json-lib.gson包,Jacks ...

UICollectionView 自定义组头组尾的XIB方法

UICollectionView的加载方式和Tableview很像,基本上加载的方法都差不多,尤其是它的数据源的方法和代理方法基本上类似,只不过是名字上有点细微的差别而已.这里面不赘述. 1. UIC ...

让PictureBox支持URL显示图片

[ToolboxItem(true)] public class PictureBoxURL : PictureBox { private string _url = ""; pu ...

SSIS的CheckPoint用法

在SSIS的Package Property中有CheckPoints的属性目录,CheckPoint是SSIS的Failover Feature.通过简单的配置CheckPoint,能够在Packa ...

iOS 深入理解UINavigationController 和 UIViewController 之间的关系

创建三个类 BasicViewController : UIViewController SecondViewController : UIViewController ThirdViewContro ...

WIN7,WIN8,WIN8.1,64位客户端使用32位的ODBC配置

运行64位的ODBC管理器,点开始-->运行-->odbcad32回车即可打开,但打开后看不到32位的驱动, 如果要运行32位的ODBC管理器,该怎么办呢,其实很简单, 只要执行C:Wi ...

可以使用QT给龙芯开发软件

直接apt-get install libqt5core5a就有了,也许是一个很好的小众市场机会呢 至于系统,可以使用debian mips https://www.debian.org/devel/ ...

myeclipse8.6安装svn插件

1.从官方网站下载site-1.6.16.zip,网址:subclipse.tigris.org: 2.将解压出来的features与plugins,复制到任意目录:Genuitec/MyEclips ...

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。