今天在看毛老师的课程,看到了grpc,脑子里突然问了自己一个问题。

Q:你对grpc有多了解?

A:我想了一下,我并没有深度使用过gRPC,在公司参与的项目中,我只简单使用过一次gRPC。大概能说一点它是个啥:谷歌开源的RPC框架,支持多语言,数据传输使用HTTP 2.0和protobuf协议。

Q:这样的理解程度,你认为你在哪一层?

A:emmmm,最低的一层

认知分层

要回答在第几层,先说清楚有几层。经常听到的一句话是:要知其然知其所以然。那引用到这里就是两层,对于一个开源项目,第一层是你要知道grpc是干啥的,解决了什么问题以及如何使用。第二层你要了解grpc的关键技术点背后的原理,比如为什么用Http 2.0 和 protobuf,服务端&客户端代码怎么生成的等等。

那么能不能再把认知往上提一个层次呢?肯定是可以的。我认为第三层可以是懂得运用。因为gRPC本质上就是一工具。工具的价值体现在使用上,这个层次的运用不能单纯的理解成第一层的使用,举个例子,我们内部的一些微服务之间调用使用的Http restful,出现了性能或者其他的一些问题。站在第三层思考,应该是这样的:使用grpc能不能解决这个问题?会不会引入新的问题?推行的成本有多高?公司内部的基础设施比如说网关能不能支持grpc等等。这个层次思考的是如何把grpc落地,真正的使用起来。

那么简单的认知三层出来了:

开源系统认知分层.png

总结

这里虽然是以gRPC举例子,对我来说,这个三层可以应用于其他各种不同的开源项目。比如:Gin、GORM、K8s、Docker等等。那么有了这个认知分层了,要怎么做才能对XX开源系统的了解到达L2、L3呢?这里给自己记下一个TODO,后续希望能整理一篇文章分享出来。