grpc 重试机制

1.通过配置retryPolicy的方式

这也是grpc官方库里的示例代码,其他讲retry重试的基本也都是参照这种方法。但是本地配置之后没生效。换用下边第二种方式之后问题解决
grpc 重试机制_第1张图片
https://github.com/grpc/grpc-go/blob/be1d1c10a930/examples/features/retry/client/main.go

2. 使用go-grpc-middleware库的retry配置

参照下边连接里的示例代码,先在opts里配置重试规则,然后grpc.Dial方法里应用这个规则就可以。

相对官方的方法这里的方法配置起来比较简单,而且配置完实验马上就生效了。

https://github.com/grpc-ecosystem/go-grpc-middleware/blob/main/interceptors/retry/examples_test.go
grpc 重试机制_第2张图片

规则示例:

retryOpts := []retry.CallOption{
		retry.WithMax(5), // 最大重试次数,大于5时会被设置成5
		retry.WithBackoff(retry.BackoffLinear(100 * time.Millisecond)), // 控制重试的时间间隔,固定的时间间隔
		retry.WithCodes(codes.Unavailable, codes.DeadlineExceeded),     // 需要重试的grpc code
	}

你可能感兴趣的:(go,golang)