当前位置: 首页 > news >正文

es网站建设wordpress 询价记录

es网站建设,wordpress 询价记录,南宁建企业网站公司,百度经验登录入口一切都始于我向我们的高级软件工程师提出的一个问题#xff1a; “忘掉通信速度。你真的觉得在gRPC中开发通信比REST更好吗#xff1f;” 我不想听到的答案立刻就来了#xff1a;“绝对是的。” 在我提出这个问题之前#xff0c;我一直在监控我们的服务在滚动更新和扩展Po…一切都始于我向我们的高级软件工程师提出的一个问题 “忘掉通信速度。你真的觉得在gRPC中开发通信比REST更好吗” 我不想听到的答案立刻就来了“绝对是的。” 在我提出这个问题之前我一直在监控我们的服务在滚动更新和扩展Pod时出现的奇怪行为。我们的大多数微服务以往都通过REST调用进行通信没有任何问题。我们已经将一些这些集成迁移到了gRPC主要是因为我们想摆脱REST的开销。最近我们观察到了一些问题都指向了同一个方向——我们的gRPC通信。当然我们遵循了在Kubernetes中运行gRPC而不使用服务网格的建议实践我们在服务器上使用了一个无头服务对象并在gRPC中使用了客户端的“轮询”负载平衡与DNS发现等。 扩展Pod数量 Kubernetes内部负载均衡器不是用于负载均衡RPC而是用于负载均衡TCP连接。 第四层负载均衡器由于其简单性而很常见因为它们与协议无关。但是gRPC破坏了Kubernetes提供的连接级负载均衡。这是因为gRPC是基于HTTP/2构建的而HTTP/2被设计为维护一个长期存在的TCP连接该连接中的所有请求都可以在任何时间点同时处于活动状态。这减少了连接管理的开销。然而在这种情况下连接级别的负载平衡并不是非常有用因为一旦建立了连接就不再需要进行负载平衡。所有的请求都会固定到原始目标Pod直到发生新的DNS发现使用无头服务。这不会发生直到至少有一个现有连接断开。 问题示例 2个客户端A调用2个服务器B。自动缩放器介入并扩展了客户端。服务器Pod负载过重因此自动缩放器介入并增加了服务器Pod的数量但没有进行负载平衡。甚至可以看到新Pod上没有传入的流量。客户端被缩减。客户端再次扩展但负载仍然不平衡。一个服务器Pod因过载而崩溃发生了重新发现。在图片中没有显示但是当Pod恢复时情况看起来与图3类似即新Pod不会接收流量。 gRPC负载均衡的示例 2行配置解决了这个问题。 技术上说是一行 正如我之前提到的我们使用“客户端负载均衡”并使用无头服务对象进行DNS发现。其他选项可能包括使用代理负载均衡或实现另一种发现方法该方法将询问Kubernetes API而不是DNS。 除此之外gRPC文档提供了服务器端连接管理提案我们也尝试过它。 以下是我为设置以下服务器参数提供的建议以及gRPC初始化的Go代码片段示例 将MAX_CONNECTION_AGE设置为30秒。这个时间段足够长可以在没有昂贵且频繁的连接建立过程的情况下进行低延迟通信。此外它允许服务相对快速地响应新Pod的存在因此流量分布将保持平衡。将MAX_CONNECTION_AGE_GRACE设置为10秒。定义了连接保持活动状态以完成未完成的RPC的最大时间。 grpc.KeepaliveParams(keepalive.ServerParameters{MaxConnectionAge: time.Second * 30, // THIS one does the trickMaxConnectionAgeGrace: time.Second * 10,})在现实世界中的行为 gRPC配置更改应用前后的Pod数量 在gRPC配置更改后观察到的新Pod中的网络I/O活动 接下来是第三行 扩展问题已经解决但另一个问题变得更加明显。焦点转向了客户端在滚动更新期间出现的gRPC codeUNAVAILABLE 错误。奇怪的是这只在滚动更新期间观察到而在单个Pod扩展事件中却没有观察到。 滚动更新期间的gRPC错误数量 部署滚动的过程很简单创建一个新的副本集创建一个新的Pod当Pod准备就绪时旧的Pod将从旧的副本集中终止以此类推。每个Pod之间的启动时间间隔为15秒。关于gRPC DNS重新发现我们知道它仅在旧连接中断或以GOAWAY信号结束时才会启动。因此客户端每15秒开始一次新的重新发现但获取到了过时的DNS记录。然后它们不断进行重新发现直到成功为止。 除非不是DNS问题… 几乎每个地方都有DNS TTL缓存。基础设施DNS具有其自己的缓存。Java客户端遭受了它们默认的30秒TTL缓存而Go客户端通常没有实现DNS缓存。与此相反Java客户端报告了数百或数千次此问题的发生。当然我们可以缩短TTL缓存的时间但为什么要在滚动更新期间只影响gRPC呢 幸运的是有一个易于实现的解决方法。或者更好地说解决方案让新Pod启动时设置30秒的延迟。 .spec.minReadySeconds 30Kubernetes部署规范允许我们设置新Pod必须处于就绪状态的最短时间然后才会开始终止旧Pod。在此时间之后连接被终止gRPC客户端收到GOAWAY信号并开始重新发现。TTL已经过期因此客户端获取到了新的、最新的记录。 结论 从配置的角度来看gRPC就像一把瑞士军刀可能不会默认适合您的基础架构或应用程序。查看文档进行调整进行实验并充分利用您已经拥有的资源。我相信可靠和弹性的通信应该是您的最终目标。 我还建议查看以下内容 Keepalives。对于短暂的内部集群连接来说可能没有意义但在某些其他情况下可能会有用。重试。有时值得首先进行一些退避重试而不是通过尝试创建新连接来过载基础设施。代码映射。将您的gRPC响应代码映射到众所周知的HTTP代码以更好地了解发生了什么情况。负载均衡。平衡是关键。不要忘记设置回退并进行彻底的测试。服务器访问日志gRPC codeOK可能会因默认设置为信息级别而太冗长。考虑将它们降低到调试级别并进行筛选。
http://www.zqtcl.cn/news/554348/

相关文章:

  • 国外被动收入网站做的好的成都网站建设 川icp备
  • 网站的微信推广怎么做php在电子商务网站建设中的应用研究 戴书浩
  • 中山做网站有什么做logo网站
  • 建设网站要什么手续义乌简游网络科技有限公司
  • 深圳做企业网站的音乐网站设计
  • 互联网网站如何做菜鸟教程自学网
  • 网站模板上传工具网站报名照片怎么做
  • 做网站如何备案东城做企业网站多少钱
  • 建设手机网站的目的广告制作行业发展前景
  • 手工艺品网站建设目的长春有哪些网络设计公司
  • 重庆建设工程招标网站淮南58同城网
  • 有域名在本机上做网站psd素材
  • 做拍拍拍拍网站网站宣传的劣势
  • 建设银行官方网站诚聘英才亚马逊店铺出售网站
  • 佛山房地产网站建设万网域名查询接口
  • 新建的网站必须要备案吗优购物网
  • 陕西省住房和城乡建设厅官方网站智能网站建设制作
  • 英语故事网站建设镇江大港信息港
  • 接单做一个网站多少钱商河网站建设
  • 网站建设s南昌网站建设服务
  • 免费的素材网站有哪些重庆网页设计公司排名
  • 内网网站建设汇报即商通网站建设推广
  • 企业建站系统是什么学校的网站怎么做的
  • 哪个大学的网站做的最好看网页制作教材素材
  • 南里商濮阳网站建设福田附件网站建设公司
  • 监控性能网站模板网页设计公司找哪家
  • 校园网站建设教程安卓小程序开发入门
  • 找人做网站需要注意什么seo工作
  • 做外贸有哪些好的网站有哪些内容响应式网站wordpress摄影
  • iis 7.0 搭建网站做门户网站公司