反射
解释了如何使用反射来提高 RPC 的透明性和可解释性。
透明度和可解释性
gRPC 出色的性能很大程度上归功于使用 Protobuf 进行序列化 —— 这是一种二进制且不可读的协议。虽然这大大加快了 RPC 的速度,但它也可能使得与服务器的手动交互变得更加困难。假设,为了手动通过 curl
向服务器发送 gRPC 请求,你需要:
-
知道服务器暴露了哪些 RPC 服务。
-
知道请求消息及其引用的所有类型的 protobuf 定义。
-
知道响应消息及其引用的所有类型的 protobuf 定义。
然后,你必须使用这些知识将请求消息手工构建成二进制格式,并且艰难地解码响应消息。这将是一个费时、令人沮丧且容易出错的过程。相反,反射协议使得工具能够自动化这个过程,从而让这个过程对用户来说是透明的。