package grpc import ( "fmt" "log" "net" "google.golang.org/grpc" "google.golang.org/grpc/reflection" ) type GrpcService interface { Register(srv *grpc.Server) } type Config struct { Address string Port int AppName string } var rpc *grpc.Server var conf Config func Init(config Config) *grpc.Server { if rpc == nil { rpc = grpc.NewServer(grpc.MaxRecvMsgSize(1024*1024), grpc.MaxSendMsgSize(1024*1024)) } conf = config return rpc } func Start() { //注册反射 用于grpcurl调试 reflection.Register(rpc) // grpc服务启动 go func() { log.Printf("starting grpc service on %s:%d", conf.Address, conf.Port) lis, err := net.Listen("tcp", fmt.Sprintf("%s:%d", conf.Address, conf.Port)) if err != nil { log.Fatal("fail to open port: ", err) } err = rpc.Serve(lis) if err != nil { log.Fatal("fail to open microservice: ", err) } }() }