负载均衡策略有哪些?如何自定义?
你先记一句总纲负载均衡策略就是当一个服务有多个实例时客户端或网关该按什么规则选一个实例去调用。常见负载均衡策略1. 轮询 Round Robin按顺序一个一个分配请求第1个请求给实例A第2个请求给实例B第3个请求给实例C优点是简单、均匀。缺点是不考虑机器性能差异。2. 随机 Random每次随机选一个实例。优点是实现简单。缺点是短时间内可能不够均匀。3. 加权轮询 / 加权随机给性能更好的机器更高权重让它分到更多请求。比如A 权重 5B 权重 3C 权重 2这样 A 会承担更多流量。适合机器配置不一致的场景。4. 最少连接 Least Connections优先把请求分给当前连接数最少的实例。适合请求处理时间差异比较大的场景。5. 哈希策略按照某个固定值做哈希比如用户 IDIP请求参数这样同一类请求会稳定落到同一个实例。常见有一致性哈希IP Hash适合会话保持、缓存命中这类场景。项目里常见的负载均衡位置客户端负载均衡比如 Spring Cloud LoadBalancer、Ribbon服务端 / 网关负载均衡比如 Nginx、Gateway、SLB本质都一样就是选实例的规则不同。如何自定义负载均衡核心思路就一句话先拿到服务实例列表再按自己的规则选一个返回。比如你想按这些规则选优先选同机房优先选低负载机器按用户 ID 做灰度路由指定版本优先按权重分配如果是 Spring Cloud 里怎么自定义现在常见是Spring Cloud LoadBalancer。自定义本质上就是获取某个服务的实例列表自己写选择逻辑返回一个实例在 Spring Cloud 里一般可以通过自定义ReactorServiceInstanceLoadBalancer或类似扩展点重写实例选择逻辑实现自己的负载均衡策略比如按权重、按区域、按版本路由。你可以举个简单例子比如我们想做灰度发布可以在实例元数据里加 versionv2然后自定义负载均衡策略优先把一部分用户路由到 v2 实例其余流量走旧版本。面试回答版常见负载均衡策略有轮询、随机、加权轮询、加权随机、最少连接和哈希策略。轮询是最简单的按顺序分发请求随机实现简单加权策略适合机器性能不一致的场景最少连接适合请求处理时间差异较大的场景哈希策略适合做会话保持或者提高缓存命中率。自定义负载均衡的核心思路是先拿到服务实例列表再按照业务规则选择一个实例返回。比如可以按机房、权重、版本、用户 ID 或灰度标记来路由请求。在 Spring Cloud 里一般可以通过扩展负载均衡器的实例选择逻辑来实现自定义策略比如自定义ReactorServiceInstanceLoadBalancer从而实现灰度发布、同机房优先等能力。超短背诵版负载均衡策略就是多实例下如何选一个实例常见有轮询、随机、加权、最少连接、哈希自定义本质上就是拿到实例列表后按自己的业务规则选一个。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2419559.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!