# 通用的类型

## 通用类型

* [Locality](#locality)
* [Node](#node)
* [Endpoint](#endpoint)
* [Metadata](#metadata)
* [RuntimeUInt32](#runtimeuint32)
* [HeaderValue](#headervalue)
* [HeaderValueOption](#headervalueoption)
* [ApiConfigSource](#apiconfigsource)
* [ApiConfigSource.ApiType (Enum)](#apiconfigsourceapitype-enum)
* [AggregatedConfigSource](#aggregatedconfigsource)
* [ConfigSource](#configsource)
* [TransportSocket](#transportsocket)
* [RoutingPriority (Enum)](#routingpriority-enum)
* [RequestMethod (Enum)](#requestmethod-enum)

### Locality

[Locality proto](https://github.com/envoyproxy/data-plane-api/blob/master/api/base.proto#L16)

标识Envoy运行所在的位置或上游主机运行所在的位置。

```
{
  "region": "...",
  "zone": "...",
  "sub_zone": "..."
}
```

* **region**\
  &#x20;([string](https://developers.google.com/protocol-buffers/docs/proto#scalar)) 当前属于哪个区域
* **zone**\
  &#x20;([string](https://developers.google.com/protocol-buffers/docs/proto#scalar)) AWS上的可用区域（AZ），GCP区域等
* **sub\_zone**\
  &#x20;([string](https://developers.google.com/protocol-buffers/docs/proto#scalar)) 当用于上游主机的位置时，该字段进一步将区域分成更小的子区域，从而可以独立地进行负载平衡。

### Node

[Node proto](https://github.com/envoyproxy/data-plane-api/blob/master/api/base.proto#L35)

标识特定的Envoy实例。节点标识符将呈现给管理服务器，管理服务器可以使用该标识符来区分每个Envoy服务的配置。

```
{
  "id": "...",
  "cluster": "...",
  "metadata": "{...}",
  "locality": "{...}",
  "build_version": "..."
}
```

* **id**\
  &#x20;([string](https://developers.google.com/protocol-buffers/docs/proto#scalar)) Envoy节点的标识符。
* **cluster**\
  &#x20;([string](https://developers.google.com/protocol-buffers/docs/proto#scalar)) Envoy节点所属的群集。
* **metadata**\
  &#x20;([Struct](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#struct)) 所在节点的扩展元数据，Envoy将直接传递给管理服务器。
* **locality**\
  &#x20;([Locality](#locality)) 指定Envoy实例的运行位置。
* **build\_version**\
  &#x20;([string](https://developers.google.com/protocol-buffers/docs/proto#scalar)) 在金丝雀（灰度发布）期间管理服务器，知道哪个版本的Envoy正在进行测试。这将由Envoy在管理服务器RPC中设置。

### Endpoint

[Endpoint proto](https://github.com/envoyproxy/data-plane-api/blob/master/api/base.proto#L35)

上游主机标识符

```
{
  "address": "{...}"
}
```

*   **address**\


    &#x20; ([Address](networkaddresses))

### Metadata

[Metadata proto](https://github.com/envoyproxy/data-plane-api/blob/master/api/base.proto#L74)

元数据用于监听器的匹配场景，为路由、端口、过滤器链等提供了额外的输入。它的结构是从过滤器名称（反向DNS格式）到特定的过滤器元数据的映射。过滤器的元数据key/value将合并在连接并发生请求时处理，同一个key的更新值将覆盖旧值。

元数据的使用示例，在HTTP连接管理追加附加信息，将体现在`envoy.http_connection_manager.access_log`命名空间。

为了实现负载平衡，元数据提供了一种集群端口子集的方法。端口匹配关联的元数据对象，路由匹配关联的元数据对象。当前有一些定义的元数据用于此目的：

* `{"envoy.lb": {"canary": <bool> }}` 这表明了一个端口的`canary`状态，并且用于头部（x-envoy-upstream-canary）和统计处理。

```
{
  "filter_metadata": "{...}"
}
```

*   **filter\_metadata**\


    &#x20; (map) key是反向DNS过滤器名称，例如`com.acme.widget`。命名空间`envoy.*`保留给Envoy内置过滤器使用。

### RuntimeUInt32

[RuntimeUInt32 proto](https://github.com/envoyproxy/data-plane-api/blob/master/api/base.proto#L81)

若没有指定时，则在运行时生成的uint32默认值。

```
{
  "default_value": "...",
  "runtime_key": "..."
}
```

* **default\_value**\
  &#x20;([uint32](https://developers.google.com/protocol-buffers/docs/proto#scalar)) 默认值，运行时没有可用的值时。
* **runtime\_key**\
  &#x20;([string](https://developers.google.com/protocol-buffers/docs/proto#scalar), REQUIRED) 运行时，通过key以获取相应的value。如果定义，则使用此值。

### HeaderValue

[HeaderValue proto](https://github.com/envoyproxy/data-plane-api/blob/master/api/base.proto#L115)

Header键值对。

```
{
  "key": "...",
  "value": "..."
}
```

* **key**\
  &#x20;([string](https://developers.google.com/protocol-buffers/docs/proto#scalar)) Header Key.
*   **value**\
    &#x20;([string](https://developers.google.com/protocol-buffers/docs/proto#scalar)) Header Value.

    HTTP访问日志记录的[格式说明符](../configurationreference/accesslogging)可以在此处应用，但未知的Header值将替换为空字符串而不是`-`。

### HeaderValueOption

[HeaderValueOption proto](https://github.com/envoyproxy/data-plane-api/blob/master/api/base.proto#L128)

Header键值对追加控制选项。

```
{
  "header": "{...}",
  "append": "{...}"
}
```

* **header**\
  &#x20;([HeaderValue](#headervalue)) 控制选项所应用的Header键值对。
* **append**\
  &#x20;([BoolValue](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#boolvalue)) 是否添加的开关，如果为true（默认值），则该值将附加到现有值。

### ApiConfigSource

[ApiConfigSource proto](https://github.com/envoyproxy/data-plane-api/blob/master/api/base.proto#L139)

API配置源。这标识了Envoy将用来获取xDS的API类型和群集。

```
{
  "api_type": "...",
  "cluster_name": [],
  "refresh_delay": "{...}"
}
```

* **api\_type**\
  &#x20;([ApiConfigSource.ApiType](#apiconfigsourceapitype)) API类型。
* **cluster\_name**\
  &#x20;([string](https://developers.google.com/protocol-buffers/docs/proto#scalar), REQUIRED) 可以提供多个群集名称。如果定义了大于1个集群，如果发生任何类型的故障，则将循环切换。
* **refresh\_delay**\
  &#x20;([Duration](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration)) 对于REST API，连续轮询之间的间隔。

### ApiConfigSource.ApiType (Enum)

[ApiConfigSource.ApiType proto](https://github.com/envoyproxy/data-plane-api/blob/master/api/base.proto#L141)

可以通过REST API或gRPC获取。

* **REST\_LEGACY**\
  &#x20;(DEFAULT) REST-JSON对应于传统v1 API。
* **REST**\
  &#x20;REST-JSON v2 API，将使用v2 protos规范的JSON编码。
* **GRPC**\
  &#x20;gRPC v2 API。

### AggregatedConfigSource

[AggregatedConfigSource proto](https://github.com/envoyproxy/data-plane-api/blob/master/api/base.proto#L162)

聚合发现服务（ADS）选项。这目前是空的，但在ConfigSource中设置时可以用来指定要使用ADS。

```
{}
```

### ConfigSource

[ConfigSource proto](https://github.com/envoyproxy/data-plane-api/blob/master/api/base.proto#L171)

监听器，集群，路由，端口等配置可以从文件系统或xDS API源获取。使用`inotify`监视文件系统配置以进行更新。

```
{
  "path": "...",
  "api_config_source": "{...}",
  "ads": "{...}"
}
```

* **path**\
  &#x20;([string](#https://developersgooglecom/protocol-buffers/docs/proto#scalar)) 配置从文件系统路径来源来更新配置。
* **api\_config\_source**\
  &#x20;([ApiConfigSource](#apiconfigsource)) API配置源。
*   **ads**\
    &#x20;([AggregatedConfigSource](#aggregatedconfigsource)) 配置使用ADS将做为配置源。将使用[引导程序](bootstrap)配置中的ADS API配置源。

    注意：必须选择`path`,`api_config_source`,`ads`其中一个选项配置。

### TransportSocket

[TransportSocket proto](https://github.com/envoyproxy/data-plane-api/blob/master/api/base.proto#L188)

监听器和集群中传输套接字的配置。如果配置为空，则将根据`tls_context`的平台和现有的来选择默认的传输套接字实现和配置。

```
{
  "name": "...",
  "config": "{...}"
}
```

* **name**\
  &#x20;([string](https://developers.google.com/protocol-buffers/docs/proto#scalar), REQUIRED) 要实例化的传输套接字的名称。该名称必须匹配支持的传输套接字实现。
* **config**\
  &#x20;([Struct](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#struct)) 具体将要被实例化的传输套接字配置。请参阅[支持的传输套接字](commontypes)实现以获取更多信息。

### RoutingPriority (Enum)

[RoutingPriority proto](https://github.com/envoyproxy/data-plane-api/blob/master/api/base.proto#L96)

Envoy在路由和虚拟集群级别，都支持上游优先级路由。当前的实现是针对每个优先级别，使用不同的连接池和断路设置。这意味着即使对于HTTP/2请求，两个物理连接也将被用于上游主机。将来，Envoy可能会支持真正的HTTP/2优先级，而不是单个上行连接。

* **DEFAULT**\
  &#x20;(DEFAULT)
* **HIGH**

### RequestMethod (Enum)

[RequestMethod proto](https://github.com/envoyproxy/data-plane-api/blob/master/api/base.proto#L102)

HTTP请求方法

*   **METHOD\_UNSPECIFIED**\


    &#x20; (DEFAULT)
* **GET**
* **HEAD**
* **POST**
* **PUT**
* **DELETE**
* **CONNECT**
* **OPTIONS**
* **TRACE**

## 返回

* [上一级]()
* [首页目录](../master)
