我目前正在学习grpc,一切都感觉像是一堆时髦词,我正在努力把它们放在一起。我知道gRPC使用proto缓冲区,但是它们和普通的JSON配置有什么不同?
ckx4rj1h1#
gRPC是一个高性能、开放源代码的通用RPC框架。它使用HTTP/2进行传输,使用协议缓冲区作为默认的序列化机制,并提供诸如身份验证、双向流和流控制、阻塞或非阻塞绑定以及取消和超时等功能。gRPC的主要优势之一是它对请求和响应消息都使用二进制数据,而REST API使用人类可读的JSON文本。这使得gRPC更加高效和紧凑,从而加快了传输速度,降低了网络开销。此外,gRPC使用静态类型的接口定义语言(IDL)协议缓冲区来定义服务和交换的数据结构。这允许gRPC框架自动生成多种语言的客户端和服务器代码,使开发和维护分布式系统更加容易。就"惯用"而言,gRPC被设计为与现代编程语言一起使用,并支持广泛的编程范例。这意味着它提供了一种在特定编程语言的上下文中定义和使用RPC服务的自然和直观的方式。例如,在Go语言中,gRPC服务可以使用本机语言构造来定义,使其感觉像是语言中自然和惯用的部分。
1条答案
按热度按时间ckx4rj1h1#
gRPC是一个高性能、开放源代码的通用RPC框架。它使用HTTP/2进行传输,使用协议缓冲区作为默认的序列化机制,并提供诸如身份验证、双向流和流控制、阻塞或非阻塞绑定以及取消和超时等功能。
gRPC的主要优势之一是它对请求和响应消息都使用二进制数据,而REST API使用人类可读的JSON文本。这使得gRPC更加高效和紧凑,从而加快了传输速度,降低了网络开销。
此外,gRPC使用静态类型的接口定义语言(IDL)协议缓冲区来定义服务和交换的数据结构。这允许gRPC框架自动生成多种语言的客户端和服务器代码,使开发和维护分布式系统更加容易。
就"惯用"而言,gRPC被设计为与现代编程语言一起使用,并支持广泛的编程范例。这意味着它提供了一种在特定编程语言的上下文中定义和使用RPC服务的自然和直观的方式。例如,在Go语言中,gRPC服务可以使用本机语言构造来定义,使其感觉像是语言中自然和惯用的部分。