Review
这篇书评可能有关键情节透露
在复工的高铁上开始看这本书,因为已经在项目中用过gRPC,内容多多少少都有了解,所以快速地过了它。我给这本书评了4星,这是从一顿比较新鲜可口的快餐意义上来说的:它可以很快地让你上手gRPC,但是多年后的某个下午,当你在写RPC代码时多半是想不起这样一本书的。
书一开始介绍了gRPC的概念,IDL描述文件简单的样子以及CS模型的简单代码示例,给读者一个大概的面貌;然后比较了其他RPC框架,尤其是REST和GraphQL的对比,这里可以停下来好好想一下,gRPC是否满足你的需要。总结了作者的想法,gRPC的好处大概有以下:
- 高性能,因为二进制序列化和底层的HTTP2通信协议
- 简单,强类型,可复用,能自动生成模版代码的protobuf IDL描述文件
- 不限制语言,你可以使用各种语言进行交互
- 支持CS双向流通信,这个是REST很难做到的,丰富了应用的类型
- 在云原生微服务环境下有很好的支持
- 快速发展的生态
- 大公司背书
除去这些,在读者的使用体验中,gRPC可以指导你设计良好的API,面向资源的标准设计,规范的错误处理,约定常用字段和设计模式以及版本兼容等最佳实践。当然,还有和REST/JSON的转码等,这可以说是杀手级特性。
接下来就是gRPC安装,编码,运行的一个完整代码示例,没有接触过的同学跟着做还是不错的。
第三章总结了4种通信模式的流程和代码示例,大多数情况下我们用的都是一元,一个请求对应一个返回,另外三种基于流的也可以看看。
第四章读者觉得是写得最好的了,讲的是偏底层的东西,一定要多看看。包括分层设计,请求/响应是如何编解码的,protobuf的wire格式,在哪里编解码,又是如何利用HTTP2将gRPC结合起来,gRPC的状态码,还有和HTTP2的stream的关系。理解了这部分对调试问题,性能优化方面都会有一个清晰的认识。
第五章说的是一些高级一点的东西,包括拦截器,超时,取消请求,请求头和负载均衡等。等一下,加上上一章的内容,这些东西是不是似曾相识?没错,这些东西以前我们在做HTTP REST的时候都用过的,gRPC把他们单独提取了出来作为标准化,方便大家使用。所以从这两章可以看到,gRPC并不是要取代原有的技术,而是在站在原有的技术上进行优化和集成。这很重要。
第六章说的是安全相关的东西,TLS,Basic Auth,OAuth2和JWT这些东西,是不是很熟?
第七章主要说了部署,集成,观察等生产环境的东西,这里我们就不提啦。
最后一章扩展阅读,介绍了一些好东西,如健康检查,JSON转码,网关等,这些东西到生产环境都是需要的,千万不用错过。
总的来说,还是比较推荐这本书作为一个gRPC入门的,很多东西方方面面都介绍了,比起官方文档和网上的各种零散的资源,给个4星还是很OK的。