热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

谷歌用TrafficDirector实现ServiceMesh中gRPC服务无代理化

许多组织开始采用服务网格,因为它解决了繁琐而复杂的网络问题,尤其是在大量使用微服务的环境中。它还允许他们在集中的位置管理应用程序网络策略,例如负载均衡和流量管理策略。但是采用服务网






许多组织开始采用服务网格,因为它解决了繁琐而复杂的网络问题,尤其是在大量使用微服务的环境中。它还允许他们在集中的位置管理应用程序网络策略,例如负载均衡和流量管理策略。但是采用服务网格在传统上意味着(1)管理基础架构(控制平面),以及(2)运行代表你的应用程序处理网络的Sidecar代理(数据平面)。





谷歌构建了由Google Cloud管理的控制平面Traffic Director,以解决采用服务网格的第一个障碍--你无需管理另一基础架构(控制平面)。今天,很高兴分享解决第二个问题的新方法--你无需管理大量的Sidecar代理。有了Traffic Director对无代理gRPC服务的支持,你就可以将无代理gRPC应用程序带到基于代理的服务网格中,甚至可以拥有一个完全无代理的服务网格。





Traffic Director对无代理gRPC服务的支持


Traffic Director对无代理gRPC服务的支持基于一个简单的想法:如果Traffic Director可以配置Sidecar代理来代表gRPC客户端进行负载均衡,那么为什么不直接配置gRPC客户端呢?


您可能知道,gRPC是一个高性能且功能丰富的开源RPC框架,它是您每天使用的许多Google Cloud Platform(GCP)服务的基础。 GCP在Google Cloud客户端库中使用它,您可以使用该库访问Cloud Storage,Cloud Pub / Sub等服务。 gRPC处理连接管理,双向流和其他关键网络功能。简而言之,这是构建基于微服务的应用程序的绝佳框架。


但是,gRPC开箱即用,仅提供基于DNS的名称解析和简单的负载平衡。对于服务网格功能(例如,动态发现服务的后端或基于全局邻近性的负载平衡),客户传统上已经转向了sidecar代理。这些Sidecar代理提供了强大的服务网格功能……但它们也是要管理的其他基础架构。


gRPC + xDS


为了使无代理gRPC成为可能,我们在最新版本的gRPC中添加了xDS API支持。 xDS API与流行的Envoy代理使用的开源API相同。它们使xDS控制平面(例如Traffic Director)能够为gRPC客户端配置服务信息,例如端点地址,运行状况,优先级(基于接近性和容量)以及调出服务时要使用的策略。





此外,我们为您的gRPC应用程序增加了对GCP管理的本机gRPC运行状况检查的支持。 Traffic Director从这些运行状况检查中收集数据,并将其用于确定服务端点的运行状况(如上图所示)。


这些附加功能使您能够获得服务网格的好处,而不必在gRPC应用程序旁边部署sidecar代理。


无代理gRPC入门


我们希望使您尽可能容易地获得服务网格的好处。其中很大一部分是减少了对其他基础架构的需求。而且,无代理gRPC入门的过程也很容易:



  • 将您的gRPC应用程序更新到最新版本

  • 使用新的`xds` gRPC名称解析器

  • 添加一个小的引导文件

  • 在Traffic Director中配置服务和策略


更广泛地说,您可以将无代理gRPC服务视为在服务网格中部署服务的另一种方式(类似于基于Sidecar代理的服务)。 Traffic Director允许您在服务网格中部署基于代理的gRPC服务和基于代理的gRPC服务。





我们完全希望客户运行包含两个部署模型的服务网格。我们甚至使单个gRPC客户端可以通过无代理路由调用某些服务,并通过Sidecar代理调​​用其他服务。


何时使用无代理gRPC服务


我们看到无代理gRPC方法的三个主要用例:简化的gRPC的采用(归功于托管的网络体验),服务网格中的高性能服务以及将服务网格引入无法添加Sidecar代理的环境。



  • 托管网络可简化gRPC的采用 :我们一直在考虑采用gRPC作为其现代化应用程序堆栈的一部分的客户进行交流。 gRPC的好处很明显,但是就其本身而言,gRPC无法解决客户端负载平衡,服务发现和全局故障转移之类的问题。为了解决这些需求而构建了Traffic Director对无代理gRPC服务的支持,从而使采用gRPC作为现代化部署的一部分变得更加容易。

  • 资源效率和性能 :代理会消耗资源,随着您扩展到成百上千的代理,这些资源可能会开始增加。此外,高性能应用程序可能会发现通过多个Sidecar代理(客户端Sidecar代理,Server Sidecar代理以及再次返回以进行请求/响应交换)发送​​请求时,很难达到性能目标。
    在我们的测试中,我们发现,与sidecar代理相比,无代理gRPC可以节省与网络相关的CPU成本。基准测试表明,引入sidecar代理会由于额外的网络跃点而导致延迟。无代理方法有望在这两个方面节省费用。
    最后,我们认为,这种性能提升对于新兴用例至关重要,例如用于电信网络功能和5G /边缘计算的服务网格部署。

  • 适用于无法添加Sidecar代理的服务网格 : 我们已经与不一定能在部署中添加Sidecar代理的客户进行了交谈。某些托管计算环境不允许您启动多个进程(一个用于应用程序,一个用于代理程序)或更改实例的网络堆栈(例如,使用iptables)。在这种情况下,无代理gRPC应用程序提供了一种获得服务网格好处的好方法。


后续


企业网络是异构的。我们构建的Traffic Director具有灵活性,因此我们可以支持满足您需求的部署选项。支持的部署选项包括Envoy Sidecar代理,Envoy中/网关代理(包括我们的内部HTTP(S)负载均衡器,其在后台使用Traffic Director)以及现在的无代理gRPC应用程序。


此初始版本专注于服务发现和负载平衡。我们知道服务网格的承诺远不止于此(例如,基于第7层的流量管理和安全性),但是我们对第一步非常兴奋。我们今天宣布的流量管理功能,以及新的GCP管理的gRPC运行状况检查,只是使服务网格轻松添加到gRPC应用程序的第一步。


PS: 本文属于翻译,原文





推荐阅读
  • 在JavaWeb项目架构中,NFS(网络文件系统)的实现与优化是关键环节。NFS允许不同主机系统通过局域网共享文件和目录,提高资源利用率和数据访问效率。本文详细探讨了NFS在JavaWeb项目中的应用,包括配置、性能优化及常见问题的解决方案,旨在为开发者提供实用的技术参考。 ... [详细]
  • 如何利用Apache与Nginx高效实现动静态内容分离
    如何利用Apache与Nginx高效实现动静态内容分离 ... [详细]
  • Windows环境下详细教程:如何搭建Git服务
    Windows环境下详细教程:如何搭建Git服务 ... [详细]
  • 内网渗透技术详解:PTH、PTT与PTK在域控环境中的应用及猫盘内网穿透配置
    本文深入探讨了内网渗透技术,特别是PTH、PTT与PTK在域控环境中的应用,并详细介绍了猫盘内网穿透的配置方法。通过这些技术,安全研究人员可以更有效地进行内网渗透测试,解决常见的渗透测试难题。此外,文章还提供了实用的配置示例和操作步骤,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 综合实训 201521440015
    Chinesepeople’publicsecurityuniversity网络对抗技术实验报告实验五综合渗透学生姓名常泽远年级15区队4指导教师高见信息技术与网络安全学院2018 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 在Linux系统中,网络配置是至关重要的任务之一。本文详细解析了Firewalld和Netfilter机制,并探讨了iptables的应用。通过使用`ip addr show`命令来查看网卡IP地址(需要安装`iproute`包),当网卡未分配IP地址或处于关闭状态时,可以通过`ip link set`命令进行配置和激活。此外,文章还介绍了如何利用Firewalld和iptables实现网络流量控制和安全策略管理,为系统管理员提供了实用的操作指南。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 本文详细介绍了在Linux系统上编译安装MySQL 5.5源码的步骤。首先,通过Yum安装必要的依赖软件包,如GCC、GCC-C++等,确保编译环境的完备。接着,下载并解压MySQL 5.5的源码包,配置编译选项,进行编译和安装。最后,完成安装后,进行基本的配置和启动测试,确保MySQL服务正常运行。 ... [详细]
  • 本文全面解析了 gRPC 的基础知识与高级应用,从 helloworld.proto 文件入手,详细阐述了如何定义服务接口。例如,`Greeter` 服务中的 `SayHello` 方法,该方法在客户端和服务器端的消息交互中起到了关键作用。通过实例代码,读者可以深入了解 gRPC 的工作原理及其在实际项目中的应用。 ... [详细]
  • 2019年后蚂蚁集团与拼多多面试经验详述与深度剖析
    2019年后蚂蚁集团与拼多多面试经验详述与深度剖析 ... [详细]
  • 目录RPC是什么RPC的优点RPC的缺点RPC是什么RPC(RemoteProcedureCall)isaprotocolthatoneprogramcanusetorequest ... [详细]
  • Panabit应用层流量管理解决方案
    Panabit是一款国内领先的应用层流量管理解决方案,提供高度开放且免费的专业服务,尤其擅长P2P应用的精准识别与高效控制。截至2009年3月25日,该系统已实现对多种网络应用的全面支持,有效提升了网络资源的利用效率和安全性。 ... [详细]
  • CentOS系统中PHP版本升级的详细指南与注意事项 ... [详细]
  • 「驭龙」开源主机入侵检测系统了解一下
    「驭龙」开源主机入侵检测系统了解一下 ... [详细]
author-avatar
鹏大1111
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有