以编程方式识别何时创建或终止微服务的新实例?

Posted

技术标签:

【中文标题】以编程方式识别何时创建或终止微服务的新实例?【英文标题】:Programmatically identify when a new instance of a microservice has been created or killed? 【发布时间】:2019-08-10 03:25:02 【问题描述】:

有没有办法以编程方式识别单个微服务的实例数量是否在给定时间达到一定数量? 例如:我如何以编程方式知道我的 Account 微服务的实例现在正在运行多少?另外,如何知道该数字何时发生变化?

我的目的是在超过阈值时通知管理员。我使用 Spring Boot 和 Spring Cloud、Spring Config 和 Consul 作为服务发现。如果需要,我愿意更改为 Eureka。

【问题讨论】:

服务发现可以提供你想要的信息,你想知道其他微服务的信息吗? 是的,实际上在另一个应用程序中,很可能是一个预定的作业。但理想情况下,我想实现一个监听器,当实例数量发生变化时进行监听,可以这样做吗? 是的,你可以得到它,让我添加代码作为答案.. 但我不确定 Consul 是否相同 ... :V 我会使用ConsulClient 来观看服务。 【参考方案1】:

嗯,基于文档,您可以使用DiscoveryClient 来获取基于文档​​示例中的某些服务的实例"STORES",看看,您可以通过以下示例来实现:

@Autowired
private DiscoveryClient discoveryClient;

public List<ServiceInstance> getInstances(String serviceName) 
    List<ServiceInstance> list = discoveryClient.getInstances(serviceName);
    if (list != null && list.size() > 0 ) 
        // logic here if it is necessary. 
    
    return list;

【讨论】:

监听事件会更好

以上是关于以编程方式识别何时创建或终止微服务的新实例?的主要内容,如果未能解决你的问题,请参考以下文章

EC2 上的 LAMP 服务器(Amazon Linux 微实例)

如何使用POST 方法调用服务

漫谈何时从单体架构迁移到微服务?

Spring Cloud+Docker创建微服务容器实例

微服务举例

微服务