这两天了解了一下grpc,grpc其实是为了实现不同语言、不同设备之间的通信,使得跨语言、跨设备的服务调用更加方便。
上面便是grpc框架中服务端和客户端通信的流程。
其中,最关键的应该是protobuffer 这个中间件,通过protobuf语法,定义服务接口的参数以及规范,通过不同语言对应的protobuf插件,
能够很快的生成对应语言的关于该服务的客户端和服务端的抽象类接口代码,后续实现自己业务时,只需要去继承和重写这些接口即可。
1)、C++, 每一个.proto 文件可以生成一个 .h 文件和一个 .cc 文件
2)、Java, 每一个.proto文件可以生成一个 .java 文件
3)、Python, 每一个.proto文件生成一个模块,其中为每一个消息类型生成一个静态的描述器,在运行时,和一个metaclass一起使用来创建必要的Python数据访问类
4)、Go, 每一个.proto生成一个 .pb.go 文件
5)、Ruby, 每一个.proto生成一个 .rb 文件
6)、Objective-C, 每一个.proto 文件可以生成一个 pbobjc.h 和一个pbobjc.m 文件
7)、C#, 每一个.proto文件可以生成一个.cs文件.
8)、php, 每一个message消息体生成一个.php类文件,并在GPBMetadata目录生成一个对应包名的.php类文件,用于保存.proto的二进制元数据。
关于grpc还有很多要素,比如通信认证、流传输等,后续再深入了解。