我正在编写一些简单的微服务来了解Netflix Eureka的工作方式
我想知道是否有可能以编程方式关闭Java中的服务,因此会立即从Eureka Service Registry注销。我找到了Spring Boot执行器端点的解决方案(向service-URL/actuator/shutdown
发送POST请求)。
在我想要关闭不是基于Spring Boot的服务的情况下,如何达到相同的结果?
答案 0 :(得分:0)
以一种非常抽象的方式,无限期运行的每个进程,如监听请求的服务器,基本上都是像
一样的循环while flag:
listen and process request
shutdown
只是影响flag
的api并使程序从循环中存在并恢复直接流程,这将导致结束该程序
所以要关闭一个不是弹簧启动的服务,你需要创建一个可以像上面那样操作代码流的api
另外,spring boot
是一个非常强大且最小的包装器,所以你可以将spring boot合并到几乎所有的java服务和程序中
请注意Eureka
支持手动覆盖服务状态,因此您可以告诉Eureka忽略并取消注册一个或多个服务,而不管其实际状态
大多数发现服务都处于被动模式(不主动发起与服务的联系),例如eureka
每个服务每隔x次发送健康检查,发现服务器就会知道该服务处于脱机状态仅在x时间过去且健康状况检查到期后(还有一些其他参数,如阈值和特殊操作模式也要考虑)
有关控制"spring-boot-eureka"
(尤其是最后评论)的逐出率的更多信息,请参阅此post