我已经在GitHub上启动了一个简单的项目。它基本上是一个Eureka服务器(阿基米德)和三个Eureka客户端微服务(一个公共API和两个私有API)。查看GitHub的自述文件获得详细描述。
关键是,当一切都在运行时,我希望如果一个私有微服务被杀死,那么Eureka服务器会发现并从注册表中删除它。
我在Stackoverflow上发现了这个问题,通过在Eureka服务器配置中使用enableSelfPreservation:false
解决了这个问题。这样做一段时间后,被杀死的服务就会像预期的那样消失。
不过我可以看到以下消息:
已关闭自我保护模式。如果出现网络/其他问题,这可能无法保护实例过期。
1.自我保存的目的是什么?文档中说,在自我保存的情况下,“客户端可以获得不再存在的实例”。那么什么时候开/关它是可取的呢?
Lease expiration enabled true/false
Renews threshold 5
Renews (last min) 4
我遇到了一个奇怪的阈值计数行为:当我单独启动Eureka服务器时,阈值是1。
2.我有一台Eureka服务器,并且配置了registerwitheureka:false
以防止它在另一台服务器上注册。那么,它为什么会出现在阈值计数中呢?
3.对于我启动的每一个客户端,阈值计数增加+2。我猜是因为他们每分钟发送2条续订信息,对吗?
renew threshold 5
rewnews last min: (client1) +2 + (client2) +2 -> 4
服务器CFG:
server:
port: ${PORT:8761}
eureka:
instance:
hostname: localhost
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
server:
enableSelfPreservation: false
# waitTimeInMsWhenSyncEmpty: 0
客户端1 CFG:
spring:
application:
name: random-image-microservice
server:
port: 9999
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
healthcheck:
enabled: true
我得到了与@codependent相同的问题,我在谷歌上搜索了很多,并做了一些实验,在这里我贡献一些关于Eureka服务器和实例如何工作的知识。
每个实例都需要更新其对Eureka服务器的租约,频率为每30秒一次,可以在Eureka.instance.LeaseRenewalIntervalinSeconds
中定义。
Renews(last min):表示在最后一分钟内从Eureka实例接收到的更新次数
Renews Threshold:Eureka服务器期望每分钟从Eureka实例接收的更新。
例如,如果registerwitheureka
设置为false,Eureka.instance.LeaseRenewalIntervalinSeconds
设置为30并运行2个Eureka实例。两个Eureka实例每分钟将向Eureka服务器发送4次更新,Eureka服务器最小阈值为1(用代码编写),因此阈值为5(这个数字将乘以Eureka.server.RenewalPercentThreshold
,稍后将讨论)。
自我保存模式:如果更新(最后一分钟)小于更新阈值,自我保存模式将被激活。
所以在上面的例子中,由于阈值是5,所以启动了自我保护模式,但是Eureka服务器每分钟只能接收4次更新。
设计了自保模式,以避免网络连接不良故障。Eureka实例A和B之间的连通性很好,但是B由于连通性出现故障而无法在短时间内续签给Eureka服务器,此时Eureka服务器不能简单地踢出实例B,如果踢出实例B,则实例A将无法从Eureka服务器获得可用的注册服务,尽管B可用。所以这就是自我保存模式的目的,最好打开它。
代码中写入了最小阈值1。registerwitheureka
设置为false,因此没有Eureka实例寄存器,阈值为1。
在生产环境中,通常我们部署两台Eureka服务器,registerwitheureka
将设置为true。因此阈值将为2,并且Eureka服务器将每分钟向自己续订两次租约,因此续订少于threshold
不会有问题。
是的,你是对的。Eureka.Instance.LeaseRenewalIntervalinSeconds
定义了每分钟发送到服务器的更新次数,但它会乘以前面提到的一个系数Eureka.server.RenewalPercentThreshold
,默认值为0.85。
是的,这是正常的,因为阈值初始值设置为1。因此,如果registerwitheureka
设置为false,则renews总是低于阈值。
对此我有两点建议:
RegisterWithEureKA
。Eureka.server.RenewalPercentThreshold
设置为0.49,这样当您单独启动Eureka服务器时,threshold将为0。尤里卡服务器2:
问题内容: 我已经开始开发微服务,尽管我已经研究了一段时间,同时阅读了Spring的文档和Netflix的文档。 我已经开始在Github上进行一个简单的项目。它基本上是一个Eureka服务器(Archimedes)和三个Eureka客户端微服务(一个公共API和两个私有)。查看github的自述文件以获取详细描述。 关键是,当一切都运行时,我希望如果某个私有微服务被杀死,Eureka服务器会意识
在客户端,使用“new WebSocket('ws:/blahlah')”创建新的套接字处理程序 然后使用onOpen()方法就知道我们已连接到WS服务器 使用onMessage()方法,已知已从WS服务器接收到消息 onClose()方法指示套接字连接已关闭 所以从客户的角度来看是很清楚的。但是从服务器的角度来看,流程是如何进行的(就像上面的客户端一样),websocket服务器进程的确切含义是
我有一个简单的eureka服务器,配置简单(这个服务器用于开发和本地测试,spring-boot-starter 1.5.4版本,eureka 1.3.4)。 它有以下配置(没有其他特殊配置):
我的Kubernetes集群运行在谷歌云下。我有部署运行端口443和LoadBalancer公开它到互联网。 我是这样创建的: 运行此命令后,loadbalancer将指向部署。现在,我创建了,并希望更改loadbalancer以指向新的部署()。 注意:删除和重新创建部署是释放外部IP地址,我想避免它。 如何在不丢失外部IP的情况下修补现有服务以指向另一个部署?
我是Docker的新人,我正在尝试创建/使用现有映像来启动我的应用程序。在阅读了几篇stackoverflow帖子和Docker文档后,我能够使用Docker容器启动我的应用程序。现在我正在寻找保存修改后的Docker容器的正确方法,以便我可以重用容器通过运行docker命令来启动我的应用程序。 我看到人们使用$docker提交来保存docker容器。如果我运行此命令,容器将保存在哪里?其他人可以