浅淡 xDS 协议在 gRPC 中的应用
Service Config
当我们实现了一个微服务,为了让客户端更『智能』的和服务端进行交互,有些服务本身的配置是需要让客户端知道的,比如:
期望客户端对服务端的实例所采用的负载均衡策略;
当调用失败时,期望客户端采用什么样的重试策略,返回什么错误码需要重试,重试的次数,避让的策略等等;
期望客户端调用某些接口时需要遵守的超时时间。
以上提到的这些配置,在 gRPC 中有一个对应的概念叫 ServiceConfig,具体包含哪些内容,可以参考 Service Config in gRPC
Service Config 主要在两个方面影响到 gRPC Client 的行为:
在创建 Client Stream 时,应用 Service Config 中的 ...
Click to read more ...
实现自定义 gRPC Resolver 遇到的问题
在正式开始之前,先做一下铺垫,我们知道 go 里面是允许任何可比较的类型作为 map 的 key,包括布尔,数值,字符串,指针,channel,interface 以及只包含这些类型的 struct 和 array 类型,而不能被比较的类型,包括slice,map,function就不可以用来作为 map 的 key。需要注意的是这里说的可比较,就是使用操作符 ==。假如一个包含指针成员的 struct 作为 map 的 key,那么只要指针本身的地址发生了变化,即使指针所指向的内容没有发生变化,那么作为 map 的 key 时,就是两个不相同的 key。比如,
package main
import (
"fmt"
"strconv"
)
type Bar str...
Click to read more ...