Shu xian
Shu xian
micro api --help里有相关用法,可以参考使用
目前没有原生的go rpc 的Transport,替代不了。需要自行实现
http转grpc micro api是支持的。 默认的go-micro启动就是grpc风格的服务,micro api可以代理http转向go-micro。实现也很简单,将路由映射解析成服务+方法,router->service+method。然后调用具体的服务就行了
grpc更多示例: https://github.com/micro-in-cn/tutorials/tree/master/examples/grpc
可以使用grpc.Codec方法将默认的编码器覆盖掉Server中的对应格式的Codec,比如: ``` srv.Server().Init(serverGRPC.Codec("application/json", &jsonCodec{})) ``` 见:https://github.com/micro-in-cn/tutorials/tree/master/examples/grpc/codec
可以,比如: ``` ctx := metadata.NewContext(context.Background(), map[string]string{ "X-User-Id": "john", "X-From-Id": "script", }) rsp, err := cl.Hello(ctx, &pb.Request{ Name: "John", }) ```
先排查是不是网络不支持MDNS 可自行使用注册中心,比如etcd,consul等
咦,你是不是启动的是grpc.Service啊!!!! ``` 2019-11-11 09:30:00.912112 I | Server [grpc] Listening on [::]:53358 ``` 如果要用grpc风格服务,客户端也要同步改下
可以,一个方法是覆盖掉默认的选择器Selector,另一是创建服务是声明选择器 - [DefaultSelector](https://github.com/micro/go-micro/blob/master/client/selector/selector.go#L39) - micro.Selector参数: ``` service := micro.NewService( micro.Name("greeter.service"), micro.Version("latest"), micro.Selector(yourSelector) ) ``` 二者其实原理是一样的,Selector在Micro中也是插件化的一部分,所以只要自己实现Selecto并传入即可。