1.背景 http://www.customs.gov.cn/customs/302249/302266/302267/2155884/index.html 跨境电子商务平台企业支付相关原始数据必须对接179,否则会清关失败。 例:清单[电商企业编码:xxxx,订单编号:xxxxx...
gRPC(Go)入门教程(十三)—Kubernetes 环境下的 gRPC 负载均衡
1. 概述 系统中多个服务间的调用用的是 gRPC 进行通信,最初没考虑到负载均衡的问题,因为用的是 Kubernetes,想的是直接用 K8s 的 Service 不就可以实现负载均衡吗。 但是真正测试的时候才发现,所有流量都...
gRPC(Go)入门教程(十二)—客户端负载均衡
1. 概述 gRPC 负载均衡包括客户端负载均衡和服务端负载均衡两种方向。本文主要介绍的是客户端负载均衡。 gRPC 的客户端负载均衡主要分为两个部分: 1)Name Resolver 2)Load Balancing Policy 1. Nam...
gRPC(Go)入门教程(十一)—NameResolver 实战及原理分析
1. 概述 具体可以参考官方文档-Name Resolver gRPC 中的默认 name-system 是 DNS,同时在客户端以插件形式提供了自定义 name-system 的机制。 gRPC NameResolver 会根据 name-system 选择对应的解析器,用...
gRPC(Go)入门教程(十)——gRPC压测工具ghz
1. 安装 可以直接在Release页面下载二进制文件,也可以 clone 仓库手动编译。 下载解压后即可使用 # 下载 $ wget https://github.91chifun.workers.dev/https://github.com//bojand/ghz/releases/downloa...
gRPC(Go)入门教程(九)—配置retry自动重试
1. 概述 gRPC 系列相关代码见 Github gRPC 中已经内置了 retry 功能,可以直接使用,不需要我们手动来实现,非常方便。 2. Demo Server 为了测试 retry 功能,服务端做了一点调整。 记录客户端的请求...
gRPC(Go)入门教程(八)—使用context进行超时控制
1. 概述 gRPC 系列相关代码见 Github 通过 ctx 完成 cancel 和 deadline 功能。 Go 语言中可以通过 ctx 来控制各个 Goroutine,调用 cancel 函数,则该 ctx 上的各个子 Goroutine 都会被一并取消。 gRP...
gRPC(Go)入门教程(七)—利用Gateway同时提供HTTP和RPC服务
1. 概述 gRPC 系列相关代码见 Github gRPC-Gateway 是Google protocol buffers compiler(protoc)的一个插件。读取 protobuf 定义然后生成反向代理服务器,将 RESTful HTTP API 转换为 gRPC。 换句话说就是...
gRPC(Go)入门教程(六)—提升服务安全性之自定义身份校验
1. 概述 gRPC 系列相关代码见 Github 在 gRPC 中,身份验证被抽象为了credentials.PerRPCCredentials接口: type PerRPCCredentials interface { GetRequestMetadata(ctx context.Context, uri ...strin...
gRPC(Go)入门教程(五)—gPRC拦截器Interceptor
1. 概述 gRPC 系列相关代码见 Github gRPC 提供了 Interceptor 功能,包括客户端拦截器和服务端拦截器。可以在接收到请求或者发起请求之前优先对请求中的数据做一些处理后再转交给指定的服务处理并响应,很适...