代码例子
使用go grpc实现grpc参考这篇文章
https://blog.csdn.net/u013862108/article/details/103808011/
需要先安装protoc和proto-go-pkg,protoc就是编译proto文件,生产序列化和反序列化文件
https://www.cnblogs.com/niuben/p/14212878.html
报错参考
https://blog.csdn.net/qq_44033530/article/details/115418377
英文原版文档:
https://grpc.io/
https://developers.google.com/protocol-buffers/docs/gotutorial
需要管制grpc支持鉴权、加密功能
https://grpc.io/docs/guides/auth/
grpc的特点
- 语言中立,支持多种语言;
- 基于 IDL 文件定义服务,通过 proto3 工具生成指定语言的数据结构、服务端接口以及客户端 Stub;
- 通信协议基于标准的 HTTP/2 设计,支持双向流、消息头压缩、单 TCP 的多路复用、服务端推送等特性,这些特性使得 gRPC 在移动端设备上更加省电和节省网络流量;
- 序列化支持 PB(Protocol Buffer)和 JSON,PB 是一种语言无关的高性能序列化框架,基于 HTTP/2 + PB, 保障了 RPC 调用的高性能。
从这个图可以看到grpc可以打通不同语言,服务端用go,客户端可以用java。性能高是因为使用了http/2的协议以及PB作为序列化协议,打通的原因是因为proto文件定义,只要服务端客户端都是用proto定义,使用各自语言的proto工具生产stub文件,就可以相互通讯。
小结
grpc新鲜又不新鲜,2000年左右比较火的corba也是一样的方式,设计思想一样,不同的是实现,corba使用IDL定义接口,底层使用iiop协议。
网友评论