您好!欢迎来到爱源码

爱源码

热门搜索: 抖音快手短视频下载   

灵魂一问:为什么负载均衡gRPC会火? <源码交易>

  • 时间:2022-07-07 01:21 编辑: 来源: 阅读:310
  • 扫一扫,手机访问
摘要:灵魂一问:为什么负载均衡gRPC会火? <源码交易>
在过去的几年中,随着微服务的增长,gRPC在这些较小的服务之间的相互通信中获得了很大的人气。在后端,gRPC使用http/2在同一个连接和双工流中复用许多请求。 使用一个快速轻量级的二进制协议和结构化数据作为服务之间的通信媒介确实很有吸引力,但使用gRPC时需要考虑几个因素,最重要的是如何解决负载均衡。 GRPC采用胶粘连接gRPC连接是胶粘的。 这意味着当从用户端到服务器的连接建立后,相同的连接将尽可能长时间地用于许多请求(多路复用)。 这样做是为了避免将所有的初始时间和资源花费在TCP握手上。 因此,当客户端获得与服务器实例的连接时,它将保持连接。 现在,当同一个客户机开始发送大量请求时,它们都将发送到同一个服务器实例。 这就是问题所在,没有机会将负载分配给其余的实例。 他们都去同一个实例。 这就是为什么粘性连接使得负载平衡非常困难。 下面是负载均衡gRPC相互通信的几种方法,以及每种方法的一些细节。 1.当服务器端完成负载均衡后,客户端会非常简化,完全不知道如何解决服务器端的负载:网络负载均衡器网络负载均衡器运行在OSI(开放系统互联)模型的第四层。 所以很快,可以解决更多的连接。 当出现新的TCP通信连接时,负载平衡器将选择一个实例,并在连接的有效期内将连接路由到单个实例。 现在请记住,gRPC连接是粘滞的和持久的,因此它将在负载平衡器后面的客户机和同一个服务器实例之间保持相同的连接,只要它能够 现在问题来了:粘性连接和自动伸缩。如果单个服务器实例上的负载(内存或cpu)高于自动伸缩策略,将在目标组中启动一个新实例。 但是,目标组中的新实例将无济于事。 为什么?类似地,因为gRPC连接是持久且有粘性的 发送大量请求的客户端将继续将请求发送到与其连接的同一个服务器实例。 因此,启动了一个新的服务器实例,但是不会有请求过载流向新的实例。 具有高利用率的同一个服务器实例仍然在接收来自客户机的请求负载(因为客户机一直在重用同一个连接)。 自动扩展策略可能会不断触发并向目标组添加新实例(由于单个实例的CPU/内存过载) 但是这些新实例收到的流量几乎为零。 自动缩放策略可能会继续触发,并且可能会最大化目标组中允许的实例,而不会真正受益于发送到新实例的请求。 如何使用gRPC粘性连接来分配负载?为了基本上有机会分配负载,我们必须使用以下方法之一来放弃粘性和持久性连接:1 .如果您可以控制已连接的gRPC客户端,您可以强制客户端定期断开连接并重新连接。 这种行为将迫使客户端向负载均衡器发送新的请求,作为对该请求的响应,这次将返回一个更健康的实例。 2.服务器定期强制断开客户端。如果不能控制连接的gRPC客户端,可以在服务器端实现类似的逻辑。 让服务器在一段时间后强制关闭连接,当他们重新连接时,会自动让新的连接进入更健康的实例。 这些方法都失去了gRPC的基本优势:可重用的连接。 类似地,我们可以将服务器实例放在DNS服务发现之后,而不是弹性负载平衡器之后。 服务发现本质上是一种DNS服务。当一个请求进来时,它会以随机的顺序返回所有实例(或者普通实例的子集)的IP地址列表。 因此,当用户选择要连接的服务器并执行DNS查找时,服务发现将返回排序后的实例的IP地址。 网络负载均衡器的几乎所有问题都适用于DNS服务发现负载均衡。 当客户端获得到单个实例的连接时,它将保持并继续重用它。 2.客户端如果你对客户端有完全的控制权,就可以在客户端实现负载均衡的逻辑。 让客户端了解所有可用的服务器及其健康状态,并选择要连接的服务器。 这会造成用户逻辑负担的增加。 因此,它们不仅应该包含执行应该做的事情的逻辑,还需要实现负载平衡、健康检查等逻辑。 在一种情况下,这是一个可行的选择:如果您完全控制所有客户端。 你不能让有故障的客户端连接到你的服务,导致各种负载均衡问题。 只要需要一个有故障的客户端,就能造成足够的麻烦。 3.观察方式根据官方gRPC负载均衡的推荐,这种方式使用外部负载均衡器或单臂负载均衡器在服务器实例间分配流量。 客户端联系外部服务,它将返回可用服务器列表、服务发现和所有其他必要的信息。 理想情况下,客户也将有少量的逻辑来帮助决策。 这种方法容易出现上面提到的胶粘连接问题,所以需要谨慎实施。 每个调用将被单独负载平衡,而不是每个连接一个,这是理想的和理想的,它将避免有沉重的粘性连接。 您只需要实现和部署一个新的专用服务来平衡其他服务之间的gRPC连接。 每个新服务都有自己的维护、操作、监控、报警等。 结论服务器端负载均衡是一个非常重要的考虑因素,我们不能受益于gRPC的一个主要优势,那就是粘性可重用连接。 客户端负载均衡需要完全控制客户端,如果有一个错误的客户端,所有的计划都可能被破坏。 观察模式负载均衡是负载均衡gRPC连接最符合逻辑、性能最高的解决方案,但它需要自己完整的、专用的服务,这意味着要在架构中实现和运行一个新的服务,这是要考虑的。 GRPC也需要权衡取舍,了解这个方案并做出相应的选择至关重要。 如果你觉得这篇文章对你有帮助,可以喜欢,关注一下。


  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【域名/主机/服务器|】qq邮箱提醒在哪里打开(2024-06-04 18:58)
【技术支持|常见问题】1556原创ng8文章搜索页面不齐(2024-05-01 14:43)
【技术支持|常见问题】1502企业站群-多域名跳转-多模板切换(2024-04-09 12:19)
【技术支持|常见问题】1126完美滑屏版视频只能显示10个(2024-03-29 13:37)
【技术支持|常见问题】响应式自适应代码(2024-03-24 14:23)
【技术支持|常见问题】1126完美滑屏版百度未授权使用地图api怎么办(2024-03-15 07:21)
【技术支持|常见问题】如何集成阿里通信短信接口(2024-02-19 21:48)
【技术支持|常见问题】算命网微信支付宝产品名称年份在哪修改?风水姻缘合婚配对_公司起名占卜八字算命算财运查吉凶源码(2024-01-07 12:27)
【域名/主机/服务器|】帝国CMS安装(2023-08-20 11:31)
【技术支持|常见问题】通过HTTPs测试Mozilla DNS {免费源码}(2022-11-04 10:37)

联系我们
Q Q:375457086
Q Q:526665408
电话:0755-84666665
微信:15999668636
联系客服
企业客服1 企业客服2 联系客服
86-755-84666665
手机版
手机版
扫一扫进手机版
返回顶部