mycommon/mygrpc/grpc.go

46 lines
849 B
Go

package mygrpc
import (
"context"
"google.golang.org/grpc/metadata"
"google.golang.org/grpc/peer"
"net"
)
const (
DefaultReadBufferSize = 256 * 1024 // 256kb
DefaultWriteBufferSize = 256 * 1024
// DefaultWindowSize 滑动窗口 16mb 手动设置滑动窗口大小, 尝试提升吞吐量, 减少动态计算可能导致的cpu波动
DefaultWindowSize = 16 * 1024 * 1024
)
const (
ServicePrefix = "grpc@"
)
const (
HeaderClientIP = "grpc-client-ip"
HeaderServiceName = "grpc-service-name"
)
func ClientIP(ctx context.Context) string {
// 先从自定义的header获取
md, ok := metadata.FromIncomingContext(ctx)
if ok {
if v := md.Get(HeaderClientIP); len(v) > 0 {
return v[0]
}
}
p, ok := peer.FromContext(ctx)
if ok {
switch v := p.Addr.(type) {
case *net.TCPAddr:
return v.IP.String()
}
}
return ""
}