`
m635674608
  • 浏览: 5042352 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

谷歌发布的首款基于HTTP/2和protobuf的RPC框架:GRPC

 
阅读更多

Google 刚刚开源了grpc,  一个基于HTTP2 Protobuf 高性能、开源、通用的RPC框架Protobuf 本身虽然提供了RPC  的定义语法,但是一直以来,Google 只开源了Protobuf 序列化反序列化的代码,而没有开源RPC 的实现,于是存在着众多良莠不齐的第三方RPC 实现,不过我在项目中采用WCF搭配Protobuf是一个很不错的RPC实现,Google这个框架是是基于HTTP2的,这是他有特色的地方,带来诸如双向流、流控、头部压缩、单TCP连接上的多复用请求等特性。这些特性使得其在移动设备上表现更好,更省电和节省空间占用。

从实现和特性看来,grpc 更多的是考虑移动场景情况下客户端和服务端的通信,正如其自称的「general RPC framework that puts mobile and HTTP/2 first」。HTTP2 本身提供了连接多路复用、Body Header 压缩等机制,grpc 基于此可以提供比较高效的实现。目前FirefoxChromeSafariOperaiOSSafariAndroidChromeWindows 8上的IE 11都已经支持HTTP/2Windows 10预览版自带的浏览器也支持它。ApacheWindows 10上的IISNginx都已经实现了SPDY 3.14(这就是HTTP/2),剩下的工作就是网站管理员们去升级服务器软件了。

grpc 所使用的依赖都比较新,如protbuf 需要3.0 版本, c++ 使用了c++11, Java 实现中的netty 需要5.0  版本, HTTP2 也是刚刚定稿。现阶段官方支持C++JAVAPython等三种编程语言并以c 共享库的方式来支持Node.js, Python, Ruby, Objective-C, PHP C# 语言 (由此看来,c++, Java golang Google 有着一等公民的地位)。其中Java 语言的实现亦可以用于Android 客户端,Objective-C 的实现主要针对IOS 客户端。

重点看了一下C# 的实现(https://github.com/grpc/grpc/tree/master/src/csharp ),目前代码只能在Mono下运行,主要是windows下的GRPC C core库的P/Invoke包装还没有完成,这里也可以看出Google的主要开发环境是Linux,对Mono的支持还不错,这点对同样是互联网公司国内同行很有借鉴意义。

 

http://www.cnblogs.com/shanyou/p/grpc.html

分享到:
评论

相关推荐

    android studio Kotlin中使用 GRPC和protobuf

    gRPC是一个高性能、开源的RPC框架,它基于HTTP/2协议,支持多种编程语言,包括Java和Kotlin。gRPC允许服务端和客户端之间通过定义清晰的接口进行高效的数据交换。而protobuf是Google推出的一种数据序列化协议,它...

    grpc-java,Java GRPC实现。基于http/2的rpc.zip

    GRPC 是一个高性能、开源和通用的RPC框架,它基于HTTP/2协议并采用ProtoBuf(Protocol Buffers)作为接口定义语言。这个压缩包“grpc-java,Java GRPC实现。基于http/2的rpc.zip”包含的是GRPC的Java实现,名为“grpc...

    tensorboard无法通过终端打开

    [libprotobuf ERROR external/com_google_protobuf/src/google/protobuf/descriptor_database.cc:393] Invalid file descriptor data passed to EncodedDescriptorDatabase::Add(). [libprotobuf FATAL external/...

    干净、现代、适用于 Protobuf 3 和异步 gRPC 的 Python 3.6+ 代码生成器和库.zip

    支持以下内容Protobuf 3 和 gRPC 代码生成二进制和 JSON 序列化都是内置的Python 3.7+ 使用枚举数据类async/await时区感知datetime和timedelta对象相对进口Mypy 类型检查Pydantic 模型生成(参见 #generating-...

    spring-mvc-tutorial-protobuf

    获取protobuf $ curl -v http://localhost:8080/person > GET /person HTTP/1.1 > User-Agent: curl/7.30.0 > Host: localhost:8080 > Accept: * / * > < HTTP/1.1 200 OK < Server: Apache-Coyote/1.1 < ...

    使用protobuf和gRPC实现消息订阅系统

    Protobuf是一套类似Json或者XML的数据传输格式和规范,用于不同应用或进程之间进行通信时使用。通信时所传递的信息是通过Protobuf定义的message数据结构进行打包,然后编译成二进制的码流再进行传输或者存储。本次...

    undefined: grpc.SupportPackageIsVersion6 和 undefined: grpc.ClientConnInterface 解决办法

    编译protobuf的 .pb.go文件时报错,如 undefined: grpc.SupportPackageIsVersion6 或 undefined: grpc.ClientConnInterface 和这个贴子的表现一样,https://github.com/grpc/grpc-go/issues/3347 解决办法 方法1:...

    grpc-protobuf-1.24.0-API文档-中文版.zip

    赠送jar包:grpc-protobuf-1.24.0.jar; 赠送原API文档:grpc-protobuf-1.24.0-javadoc.jar; 赠送源代码:grpc-protobuf-1.24.0-sources.jar; 赠送Maven依赖信息文件:grpc-protobuf-1.24.0.pom; 包含翻译后的API...

    protobuf-net.Grpc:用于protobuf-net和grpc-dotnet的GRPC绑定

    protobuf-net.Grpc使用本机Grpc.Core API或完全托管的Grpc.Net.Client / Grpc.AspNetCore.Server API通过protobuf-net.Grpc添加了代码优先的服务支持。 它应该适用于所有可以远程生成某些内容的.NET语言,例如常规...

    grpc-protobuf-1.24.0-API文档-中英对照版.zip

    赠送jar包:grpc-protobuf-1.24.0.jar; 赠送原API文档:grpc-protobuf-1.24.0-javadoc.jar; 赠送源代码:grpc-protobuf-1.24.0-sources.jar; 赠送Maven依赖信息文件:grpc-protobuf-1.24.0.pom; 包含翻译后的API...

    abseil-cpp grpc编译基础库

    而gRPC则是一个高性能、开源和通用的RPC(远程过程调用)框架,它基于HTTP/2协议,利用Protocol Buffers(protobuf)作为接口定义语言。 首先,让我们详细了解一下Abseil-CPP库: 1. **Abseil简介**:Abseil是...

    c#:grpc初体验,实例代码

    gRPC是一个高性能、开源和通用的RPC(远程过程调用)框架,它基于HTTP/2协议设计,支持多种编程语言,包括C#。 【描述】:“《C#:gRPC初体验》实例代码:...

    基于C++ module库 Protobuf Zookeeper 实现的Rpc框架.zip

    基于C++ module库 Protobuf Zookeeper 实现的Rpc框架.zip基于C++ module库 Protobuf Zookeeper 实现的Rpc框架.zip基于C++ module库 Protobuf Zookeeper 实现的Rpc框架.zip基于C++ module库 Protobuf Zookeeper 实现...

    protobuf-java-3.11.4-API文档-中文版.zip

    赠送jar包:protobuf-java-3.11.4.jar; 赠送原API文档:protobuf-java-3.11.4-javadoc.jar; 赠送源代码:protobuf-java-3.11.4-sources.jar; 赠送Maven依赖信息文件:protobuf-java-3.11.4.pom; 包含翻译后的API...

    protobuf rpc

    protobuf RPC是一种基于Google开源的Protocol Buffers(protobuf)序列化协议实现的远程过程调用(RPC)框架。protobuf是Google开发的一种数据序列化协议,它允许开发者定义数据结构,然后生成能够读写这些数据的...

    gRPC基于HTTP2的Go语言实现RPC.zip

    gRPC是一种高性能、开源、通用的RPC框架,它基于HTTP/2协议,旨在连接微服务并简化分布式系统之间的通信。在Go语言环境下实现gRPC,可以充分利用Go的并发特性和性能优势,为开发者提供简洁、高效的接口。在这个...

    C#语言使用gRPC、protobuf(Google Protocol Buffers)实现文件传输功能

    初识gRPC还是一位做JAVA的同事在项目中用到了它,为了C#的客户端程序和java的服务器程序进行通信和数据交换,当时还是对方编译成C#,我直接调用。  后来,自己下来做了C#版本gRPC编写,搜了很多资料,但许多都是从...

    Go-使用grpcgo和python的双向流式RPC的快速演示

    gRPC是Google推出的一个高性能、开源和通用的RPC框架,它基于HTTP/2协议,支持多种语言,包括Go和Python。双向流式RPC是gRPC的一种高级特性,它允许服务端和客户端同时进行数据传输,形成双向的数据流。 本项目"Go-...

    kroto-plus,用于将kotlin、protobuf、coroutines和grpc组合在一起的protoc插件.zip

    **gRPC** 是一个高性能、开源和通用的RPC框架,基于HTTP/2协议设计,支持多种语言,包括Kotlin。gRPC利用Protobuf作为其消息格式,允许服务间进行安全、可扩展的远程调用。 **Coroutines** 是Kotlin中的轻量级线程...

Global site tag (gtag.js) - Google Analytics