Spring Cloud Config Server/Bus 自动刷新扩展性
Posted
技术标签:
【中文标题】Spring Cloud Config Server/Bus 自动刷新扩展性【英文标题】:Spring Cloud Config Server/Bus auto refresh scalability 【发布时间】:2021-03-15 11:30:49 【问题描述】:据我所知,当 Spring Cloud Config Server 配置更改时,可以通过 Spring Cloud Bus 在微服务之间传播刷新事件。然后,这会触发通知的微服务从 Spring Cloud Config Server 拉取最新配置。
这种方法是否可以很好地扩展?我的意思是我们可以拥有 1000 个微服务实例,如果某些全局配置发生更改,那么所有这 1000 个微服务将同时尝试从配置服务器获取配置。这不是潜在地意味着过载和崩溃吗?
【问题讨论】:
您在这里提到的场景只是简单的休息调用,您的每个服务都会对配置进行 get 调用以获取更新的配置,因此每秒 1000 个请求以几 Kbs 的形式返回数据 - 我不知道'不要认为那会是超载和失败 【参考方案1】:此问题的解决方案可能是对 Spring Cloud Configuration Server 的请求实施一些速率限制策略。
速率限制策略强制每单位时间仅处理有限数量的请求,从而保护您的应用程序免受资源耗尽。有关此政策及其风格的更全面说明,请参阅here。
对于这种特殊情况,您可以通过添加速率限制器过滤器来限制对 Spring Cloud 配置服务器的请求。您可以将过滤器添加到 Spring Cloud 配置服务器,就像添加任何其他 Spring 应用程序一样。 This post 提供了如何应用安全过滤器的示例 - 您可以使用速率限制器过滤器执行类似的操作。
如果您的 Spring Cloud Configuration Server 运行在某些 reverse proxy server 后面,例如 nginx 或 Apache,您可以在反向代理上配置限速策略。
【讨论】:
以上是关于Spring Cloud Config Server/Bus 自动刷新扩展性的主要内容,如果未能解决你的问题,请参考以下文章
spring-cloud-starter-eureka-server 和 spring-cloud-starter-netflix-eureka-server的区别
spring-cloud-config:spring-cloud-config Maven配置错误
无法通过 spring.cloud.config.enabled:false 禁用 Spring Cloud Config