自动伸缩是每个人都想要的,尤其是在微服务领域。让我们看看如何在基于弹簧引导的应用程序中实现。
我们决定使用Kubernetes,关键云计算或HashiCorp的游牧等工具的一个更重要的原因是为了让系统可以自动伸缩。当然,这些工具也提供了许多其他有用的功能,在这里,我们只是用它们来实现系统的自动伸缩。乍一看,这似乎很困难,但是,如果我们使用弹簧引导来构建应用程序,并使用詹金斯来实现,那么就用不了太多工作。
今天,我将向您展示如何使用以下框架/工具实现这样的解决方案:
-
<李>春季启动李>
<李>弹簧引导驱动器李>
<李>春云Netflix尤里卡李>
<李>詹金斯CI李>
每一个包含弹簧引导致动器库的弹簧引导应用程序都可以在/致动器/指标端点下公开指标。许多有价值的指标都可以提供应用程序运行状态的详细信息。在讨论自动伸缩时,其中一些指标可能特别重要:JVM, CPU度规,正在运行的线程数和HTTP请求数。有专门的詹金斯流水线通过按一定频率轮询/致动器/指标端点来获取应用程序的指标。如果监控的任何指标【指标】低于或高于目标范围,则它会启动新实例或使用另一个驱动器端点/致动器/关闭来关闭一些正在运行的实例。在此之前,我们需要知道当前有那些实践在提供服务,只有这样我们才能在需要的时候关闭空闲的实例或启动新的新例。
春天:
应用程序:
名称:示例服务
服务器:
端口:${端口:0}
尤里卡:
实例:
instanceId: $ {spring.cloud.client.hostname}: $ {spring.application.name}: $ {random.int [999999]}
为了启用弹簧引导驱动器,我们需要将下面的依赖添加到pom.xml。
& lt; dependency> & lt; groupId> org.springframework.boot & lt; artifactId> spring-boot-starter-actuator & lt;/dependency>
我们还必须通过HTTP API将属性management.endpoints.web.exposure.include设置为‘*’来暴露致动器的端点。现在,所有可用的指标名称列表都可以在/致动器/指标端点中找的到,每个指标的详细信息可以通过/致动器/标准/{metricName}端点查看。
除了查看指标端点外,弹簧引导驱动器还提供了停止应用程序的端点。然而,与其他端点不同的是,缺省情况下,此端点是不可用的。我们必须把management.endpoint.shutdown.enabled设为真实的。在那之后,我们就可以通过发送一个帖子请求到/致动器/关闭端点来停止应用程序了。
这种停止应用程序的方法保证了服务在停止之前从尤里卡服务器注销。
尤里卡是最受欢迎的发现服务器,特别是使春天用云来构建微服务的架构,所以,如果你已经有了微服务,并且想要为他们提供自动伸缩机制,那么尤里卡将是一个自然的选择。它包含每个应用程序注册实例的IP地址和端口号。为了启用尤里卡客户端,您只需要将下面的依赖项添加到pom.xml中。
& lt; dependency> & lt; groupId> org.springframework.cloud微服务领域弹簧引导自动伸缩的实现方法