据我所知,当 Spring Cloud Config Server 配置更改时,可以通过 Spring Cloud Bus 在微服务之间传播刷新事件。然后,这会触发通知的微服务从 Spring Cloud Config Server 拉取最新配置。
这种方法是否可以很好地扩展?我的意思是我们可以拥有 1000 个微服务实例,如果某些全局配置发生更改,那么所有这 1000 个微服务将同时尝试从配置服务器获取配置。这不是潜在地意味着超载和崩溃吗?
据我所知,当 Spring Cloud Config Server 配置更改时,可以通过 Spring Cloud Bus 在微服务之间传播刷新事件。然后,这会触发通知的微服务从 Spring Cloud Config Server 拉取最新配置。
这种方法是否可以很好地扩展?我的意思是我们可以拥有 1000 个微服务实例,如果某些全局配置发生更改,那么所有这 1000 个微服务将同时尝试从配置服务器获取配置。这不是潜在地意味着超载和崩溃吗?
此问题的解决方案可能是对 Spring Cloud Configuration Server 的请求实施一些速率限制策略。
限速策略强制每单位时间只处理有限数量的请求,从而保护您的应用程序免受资源耗尽。此处详细介绍了此政策及其风格的更全面说明。
对于这种特殊情况,您可以通过添加速率限制器过滤器来限制对 Spring Cloud 配置服务器的请求。您可以将过滤器添加到 Spring Cloud 配置服务器,就像添加任何其他 Spring 应用程序一样。这篇文章提供了一个如何应用安全过滤器的示例 - 您可以使用速率限制器过滤器执行类似的操作。
如果您的 Spring Cloud Configuration Server 在某些反向代理服务器(例如Nginx或Apache )后面运行,您可以在反向代理上配置限速策略。