【译】gRPC的服务配置

原文地址:https://github.com/grpc/grpc/blob/master/doc/service_config.md

gRPC的服务配置


目标



服务配置是一种允许服务拥有者去发布参数以自动的被所有对应的客户端使用的机制。

格式



服务配置是一个如下格式的JSON字符串:

{
  // 负载均衡策略名 (不区分大小写).
  // 目前,客户端侧gRPC提供的唯一可用的是‘轮询调度‘,但是第三方可能会添加他们自己的策略。
  // 这个字段是可选的;如果没设置,默认的行为是获取第一个可用的后台服务。
  // 如果已经通过客户端的API设置了策略名,那么那个值会覆盖此值。
  //
  // 注意如果解析器返回至少一个均衡器地址(与后台地址相反),gRPC会使用grpclb(查看这里),  // 而不管这里或通过客户端API请求的负载均衡策略。
  ‘loadBalancingPolicy‘: string,

  // 单方法配置。可选。
  ‘methodConfig‘: [
    {
      // 当前方法配置应用的方法名。必须至少有一个方法名。      // 每个名称必须在整个服务配置中是独一无二的。如果方法字段为空,      // 那么这个方法配置指定指定服务的所有方法的默认值。
      //
      // 例如,加入服务配置包含如下方法配置:
      //
      // ‘methodConfig‘: [
      //   { ‘name‘: [ { ‘service‘: ‘MyService‘ } ] ... },
      //   { ‘name‘: [ { ‘service‘: ‘MyService‘, ‘method‘: ‘Foo‘ } ] ... }
      // ]
      //
      // 对于一个MyService/Foo的请求,我们将使用第二个配置,因为它最匹配服务和方法名。
      // 对于一个MyService/Bar的请求,我们将使用第一个配置,因为它提供对于MyServer的额所有方法的默认值。
      ‘name‘: [
        {
          // RPC服务名。必须。
          // 如果使用包含protobuf的gRPC作为接口描述语言(IDL),          // 那么这将是一种"pkg.service_name"的格式,其中"pkg"是包名。
          // 定义在proto文件中。
          ‘service‘: string,

          // RPC方法名。可选(查看上面)。
          ‘method‘: string,
        }
      ],

      // RPCs发送到此方法时是否等待直到连接准备好的默认值。      // 如果为false,RPC会在连接服务器失败的瞬间立即中止。      // 否则,gRPC将会尝试连接直到达到最后期限。
      //
      // 通过gRPC客户端API指定的这个值将会覆盖在此配置的值。    // 然而,注意在客户端API配置的值同样会在名称解析过程中遇到瞬间的错误。
      ‘waitForReady‘: bool,

      // PRCs发送到此方法的默认超时时间(秒)。这个可以在代码中重写。      // 如果在指定的这段时间内没有收到回复,      // 请求中止并且一个到达最后期限的错误状态码返回给调用者。
      //
      // 使用的实际的最后期限值会是在这里指定的值和通过gRPC客户端API设置给应用程序的值的最小值。      // 如果其中一个没设置,那么将会使用另外一个。      // 如果都没设置,那么请求将没有最后期限。
      //
      // 这个值的格式是定义在
      // https://developers.google.com/protocol-buffers/docs/proto3#json      // 的‘Duration‘类型
      ‘timeout‘: string,

      // 对于一个单独的请求最大允许的有效载荷或对象流的字节大小(客户端->服务端)。      // 这个大小是以序列化非压缩的有效载荷的字节数度量。这个应用于流和非流的请求。
      //
      // 使用的实际值是在此指定的值和通过gRPC客户端API设置给应用程序的值的最小值。
      // 如果其中一个没设置,那么将会使用另外一个。
      // 如果都没设置,那么请求将没有最后期限。
      //
      // 如果一个客户端尝试发送一个大于当前值的对象,      // 它将不会发送并且客户端会看到一个错误。
      // 注意0是一个有效值,意味着请求消息必须为空。
      ‘maxRequestMessageBytes‘: number,

      // 对于一个单独的响应最大允许的有效载荷或对象流的字节大小(客户端->服务端)。
      // 这个大小是以序列化费压缩的有效载荷的字节数度量,这个应用与流和非流的请求。
      //
      // 使用的实际值是在此指定的值和通过gRPC客户端API设置给应用程序的值的最小值。
      // 如果其中一个没设置,那么将会使用另外一个。      // 如果都没设置,那么内置的默认值将会被使用。
      //
      // 服务一个服务器尝试发送一个大于当前值的对象,      // 它将不会被发送并且客户端将会看到一个错误。
      // 注意0是一个有效值,意味着响应消息必须为空。
      ‘maxResponseMessageBytes‘: number
    }
  ]
}

注意新的每个方法的参数可能会在新的功能介绍时被添加。

架构



一个服务配置与服务名相关。名称解析插件,当被请求解析一个部分的服务名,将会返回解析的地址列表和服务配置。

TODO(roth): 设计服务配置将会如何在DNS里编码。

APIs



服务配置用于如下的API:

  • 在解析API,被解析器插件用于返回服务配置给gRPC客户端。
  • 在gRPC客户端API,用户可以通过查询通道来获得和这个通道关联的配置(用于调试目的)。
  • 在gRPC客户端API,用户可以显式的设置服务配置。意在使用于单元测试。

原文地址:https://www.cnblogs.com/qq332398135/p/8530644.html

时间: 2024-10-05 04:55:55

【译】gRPC的服务配置的相关文章

DNS服务配置及拓展(1)

DNS服务配置及拓展 一.DNS服务的信息说明: A##正向记录 PTR##反向,ip到域名 host -l example.com##查看域中的所有主机 dig -t soa example.com##辅助dns 软件包: bind DNS主配置目录:/var/named/chroot/ DNS主配置文件:/etc/named.conf DNS A记录存放目录:/var/named/chroot/var/named 二.如何配置dns正向解析: 1.vim /etc/named.conf#编辑

rsyslod服务配置

1.rsyslogd 服务    1.1服务功能 rsyslog是RHEL或centos系统6.x版本的日志服务,代替以前系统的syslog服务.在这个架构中rsyslog服务主要是收集日志的功能,把日志归类,写入数据库.   1.2服务配置文件 /etc/rsyslog.conf    1.2服务配置 ### vim /etc/rsyslog.conf service.loglevellogfile *.*                     /var/log/all.log##所有服务的

Ubuntu 13.04 & 开发板 ---- NFS服务配置

Ubuntu sudo apt-get install nfs-kernel-server sudo apt-get install rpcbind sudo vim /etc/exports /home/xxx *(rw, sync, no_root_squash) sudo /etc/init.d/nfs-kernel-server restart sudo /etc/init.d/rpcbind restart 开发板 mount -o nolock xxx:/home/xxx /mnt/

Linux之Web服务(2)Httpd服务配置之一

Linux之Web服务(2)Httpd服务配置之一 Apache HTTP Server Apache HTTP 服务器,简称Apache,是非常留下的Web服务器软件.通常和脚步语言比如PHP,数据库MySQL一起工作,合成为LAMP栈(Linux, Apache, MySQL, PHP). 当然流行的Web服务器还有nigix,但是nigix虽然轻量级很稳定,但是功能并不如Apache HTTP功能丰富,并且现在的Apache HTTP还支持模块化功能,及可以开发自己的功能模块并加入到此We

Linux之Web服务(2)Httpd服务配置之二

Linux之Web服务(2)Httpd服务配置之二 前言 在上一篇通过一些简单的案例或说明来介绍了部分关于Httpd2.4中httpd.conf配置文件中的配置选项及对应的功能.主要是对访问控制和在处理对指定目录或文件进行访问控制的一些安全问题性的处理.但是一直没有提到访问控制的具体讲解,本篇列出访问控制的具体使用选项和功能,以及其它高级配置. 1.Httpd2.4 文档访问授权具体参数 前提:文档访问授权选项配置只适合在以下标签中生效: <Directory >  <FIles>

Linux之Web服务(2)Httpd服务配置之三

Linux之Web服务(2)Httpd服务配置之三 前言 默认安装的Httpd服务一般只有默认的一个DocumentRoot节点配置,及一个站点文档资源存放根目录,但是在生产环境中需要有多种分类的资源,比如用于外部访问和内部访问,又或者是资源本身类型,比如分别用来存放一些文档.图片.单项加密算法文件等,为了更好分配站点管理的资源,Httpd服务提供了VirtualHost及虚拟主机的配置,可以在一个Httpd服务下模拟进行部署多个站点,这样不同的站点进行不同的配置,更方便进行分布式管理. Vir

Linux之Web服务(2)Httpd服务配置之四

Linux之Web服务(2)Httpd服务配置之四 前言 接上一篇的虚拟主机,本片主要介绍虚拟主机的一些搭建和部署,本篇通过一个具体的案例来显示虚拟主机的作用和特性. 案例功能介绍: (1) 准备DNS解析3个域名或者添加/etc/hostst/3条主机名IP档案,解决域名解析 (2) 基于主机名实现三个虚拟主机 (3) 每虚拟主机使用独立的访问日志和错误日志 (4) 在第二个虚拟主机上提供/status: (5) 在第三个虚拟主机提供路径别名/bbs,访问其它文件系统路径: (6) 第三个虚拟

samba服务配置

Samba服务的配置 配置匿名访问: [[email protected]~]# yum -y install samba samba-client       //安装samba所需的软件包 [[email protected] ~]# vim /etc/samba/smb.conf        //修改配置文件 [global] workgroup =WORKGROUP          //工作组更改为workgroup security = share               //

HTTP服务配置

httpd安装完后的基本信息 服务脚本:/etc/rc.d/init.d/httpd 运行目录:/etc/httpd/ 配置文件:/etc/httpd/conf 主配置文件:/etc/httpd/conf/httpd.conf 扩展配置:/etc/httpd/conf.d/*.conf 实验拓扑: LinuxClient -----RHEL5.9(vmnet1)----------(vmnet1) Win7 Client 实验一:查看默认HTTP配置 找到默认红帽欢迎页面 (/etc/httpd