🌷🍁 博主猫头虎 带您 Go to New World.✨🍁
🦄 博客首页——猫头虎的博客🎐
🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺
🌊 《IDEA开发秘籍专栏》学会IDEA常用操作,工作效率翻倍~💐
🌊 《100天精通Golang(基础入门篇)》学会Golang语言,畅玩云原生,走遍大小厂~💐
🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批评指正!🍁🐥
文章目录
- gRPC简介: Google的高性能RPC框架
- gRPC的核心设计思路
- 1. 网络通信
- 2. 传输协议
- 3. 数据序列化
- 4. 代理的创建
- gRPC与ThriftRPC的对比
- 共性
- 区别
- gRPC与传统RPC的区别
- gRPC的优势
- 总结:
- 参考资料 :
- 原创声明
gRPC简介: Google的高性能RPC框架
摘要:
gRPC是Google开源的高性能RPC框架,起源于Google内部的RPC系统——Stubby。本文详细探讨了gRPC的核心设计思路、与ThriftRPC和传统RPC的区别,以及gRPC的主要优势。
引言:
在分布式系统和微服务架构日益盛行的今天,远程过程调用(RPC)技术变得越来越重要。gRPC,作为Google推出的一个开源RPC框架,已经成为了这个领域的一个标准。本文旨在深入探讨gRPC的设计、特点和其在现代应用中的价值。
gRPC是由Google开源的一个高性能的RPC框架,起源于Google内部的RPC系统——Stubby。在2015年,它被正式开源,成为云原生时代的一个RPC标准。
gRPC的核心设计思路
1. 网络通信
gRPC自己封装了网络通信的部分,并为多种语言提供了网络通信的封装,包括C、Java(基于Netty)和Go。
2. 传输协议
gRPC使用HTTP2作为其传输协议,支持二进制数据内容的传输。它还支持双向流(双工)以及连接的多路复用。
3. 数据序列化
- 基本文本和JSON
- Java原生的序列化方式
- Thrift的二进制序列化
- 压缩二进制序列化
特别地,gRPC使用protobuf(Protocol Buffers)作为其主要的序列化方式。这是Google开源的一种序列化方式,其时间效率和空间效率是JSON的3到5倍。它使用IDL语言进行描述。
4. 代理的创建
gRPC通过创建代理(stub)使得调用者可以像调用本地方法那样去调用远端的服务方法。
gRPC与ThriftRPC的对比
共性
两者都支持异构语言的RPC。
区别
- 网络通信:Thrift使用TCP和其专属协议,而gRPC使用HTTP2。
- 性能角度:ThriftRPC的性能高于gRPC。
- 背书与应用广泛性:gRPC得到了大厂Google的背书,在云原生时代与其他组件的合作更为顺利,因此gRPC的应用更为广泛。
gRPC与传统RPC的区别
RPC (Remote Procedure Call) 是一种远程过程调用技术,它允许程序调用另一个地址空间(通常是在共享网络的另一台机器上)的过程或函数,就像调用本地的过程或函数一样。
- 传输协议:传统的RPC可能使用多种协议,包括HTTP、TCP或专有协议,而gRPC固定使用HTTP2。
- 数据序列化:传统RPC支持多种序列化方式,而gRPC主要使用protobuf。
- 性能:由于protobuf和HTTP2的使用,gRPC通常比传统的RPC具有更高的性能。
- 语言支持:gRPC支持多种语言,而某些传统的RPC实现可能只支持有限的语言。
- 流式通信:gRPC支持双向流通信,而许多传统的RPC不支持或只支持有限的流通信。
gRPC的优势
- 高效地进行进程间通信。
- 支持多种语言,原生支持C、Go和Java实现。在C语言版本上,还扩展了对C++、C#、NodeJS、Python、Ruby和PHP的支持。
- 支持多平台运行,包括Linux、Android、IOS、MacOS和Windows。
- 使用高效的protobuf序列化方式。
- 采用HTTP2协议。
- 得到了大厂的背书,如Google。
以上就是关于gRPC的简要介绍,它作为一个高性能的RPC框架,在现代的分布式系统和微服务架构中有着广泛的应用。
总结:
gRPC凭借其高效的protobuf序列化方式、HTTP2协议的使用以及广泛的语言和平台支持,为现代分布式系统提供了一个强大且高效的通信工具。与传统的RPC和其他现代RPC框架相比,gRPC具有明显的优势,特别是在性能、扩展性和云原生应用的集成方面。得益于Google的背书和开源社区的支持,gRPC的未来前景看起来非常光明。
参考资料 :
- gRPC官方文档: https://grpc.io/docs/
- Protocol Buffers官方文档: https://developers.google.com/protocol-buffers
- “gRPC: Up and Running” - Kasun Indrasiri, Danesh Kuruppu
- “Introduction to gRPC: A general RPC framework” - Richard Belleville, Wenbo Zhu
原创声明
======= ·
- 原创作者: 猫头虎
作者wx: [ libin9iOak ]
学习 | 复习 |
---|---|
✔ |
本文为原创文章,版权归作者所有。未经许可,禁止转载、复制或引用。
作者保证信息真实可靠,但不对准确性和完整性承担责任。
未经许可,禁止商业用途。
如有疑问或建议,请联系作者。
感谢您的支持与尊重。
点击
下方名片
,加入IT技术核心学习团队。一起探索科技的未来,共同成长。