首页 > 其他分享 >【gRpc】

【gRpc】

时间:2022-11-10 21:35:16浏览次数:56  
标签:HTTP 1.1 gRpc However REST server gRPC

1、gRpc vs Rest: 

  参考:https://www.baeldung.com/rest-vs-grpc

  REST is handy in integrating microservices and third-party applications with the core systems.

  gRPC can find its application in various systems like IoT systems that require light-weight message transmission, mobile applications with no browser support, and applications that need multiplexed streams.

       多个方面:Rules(.proto)、Underlying HTTP Protocol(HTTP/2)、Data Exchange Format(protobuf)、Serialization、Latency、Browser Support、Code Generation Features

4.1. Guidelines vs. Rules
REST is a set of guidelines for designing web APIs without enforcing anything. On the other hand, gRPC enforces rules by defining a .proto file that must be adhered to by both client and server for data exchange.

4.2. Underlying HTTP Protocol
REST provides a request-response communication model built on the HTTP 1.1 protocol. Therefore, when multiple requests reach the server, it is bound to handle each of them, one at a time.

However, gRPC follows a client-response model of communication for designing web APIs that rely on HTTP/2. Hence, gRPC allows streaming communication and serves multiple requests simultaneously. In addition to that, gRPC also supports unary communication similar to REST.

4.3. Data Exchange Format
REST typically uses JSON and XML formats for data transfer. However, gRPC relies on Protobuf for an exchange of data over the HTTP/2 protocol.

4.4. Serialization vs. Strong Typing
REST, in most cases, uses JSON or XML that requires serialization and conversion into the target programming language for both client and server, thereby increasing response time and the possibility of errors while parsing the request/response.

However, gRPC provides strongly typed messages automatically converted using the Protobuf exchange format to the chosen programming language.

4.5. Latency
REST utilizing HTTP 1.1 requires a TCP handshake for each request. Hence, REST APIs with HTTP 1.1 can suffer from latency issues.

On the other hand, gRPC relies on HTTP/2 protocol, which uses multiplexed streams. Therefore, several clients can send multiple requests simultaneously without establishing a new TCP connection for each one. Also, the server can send push notifications to clients via the established connection.

4.6. Browser Support
REST APIs on HTTP 1.1 have universal browser support.

However, gRPC has limited browser support because numerous browsers (usually the older versions) have no mature support for HTTP/2. So, it may require gRPC-web and a proxy layer to perform conversions between HTTP 1.1 and HTTP/2. Therefore, at the moment, gRPC is primarily used for internal services.

4.7. Code Generation Features
REST provides no built-in code generation features. However, we can use third-party tools like Swagger or Postman to produce code for API requests.

On the other hand, gRPC, using its protoc compiler, comes with native code generation features, compatible with several programming languages.
View Code

 

2、demo:

  http://www.hushowly.com/articles/1759

标签:HTTP,1.1,gRpc,However,REST,server,gRPC
From: https://www.cnblogs.com/clarino/p/16878858.html

相关文章

  • Golang GRPC 添加header
    GolangGRPC添加header创建grpc连接时添加header使用自建的metadata添加的headr信息:key:my-headervalue:"test01"funcmain(){conn,err:=grpc.Dial("......
  • grpc的负载均衡
    一.grpc的负载均衡介绍1.官网地址https://github.com/grpc/grpc/blob/master/doc/load-balancing.md2.架构 3.NameResolver(grpc从consul中同步服务信息进行负载均......
  • mac下grpc: command not found: protoc
    最近在学grpc,这个开篇就遇到一个问题,花了两个小时才解决,在此记录下 1.按照官方指示下载文件  2.执行文件会下载在gopath下的bin目录下,所以需要提前在path中添加gop......
  • 五分钟给你的 gRPC服务 加上 HTTP 接口
    gRPC服务要加HTTP接口?go-zero给大家带来极简的RESTful和gRPC服务开发体验的同时,社区又给我们提出了新的期望:我想只写一次代码既要gRPC接口也要HTTP接口既要。。......
  • grpc
    grpc安装和入门使用:https://grpc.io/docs/languages/cpp/quickstart/出现错误:Failedtorecurseintosubmodulepath解决方法:进入grpc目录,执行gitsubmoduleupdate--i......
  • 编译gRPC相关示例程序,undefined reference to `deflateInit2_'等相关错误解决
    编译gRPC相关示例程序时,出现如下链接错误:/home/suph/.local/lib/libgrpc.a(message_compress.cc.o):Infunction`zlib_compress(grpc_slice_buffer*,grpc_slice_buffer*......
  • grpc demo python客户端 c++服务端
    项目需啊将网站上传的图片传入c++推理引擎,网站使用flask架构,python编写,图片推理引擎是一个单独的server,c++编写,因此用grpc来传输比较合适。理论上来说只要规定好proto文件,......
  • gRPC - Debug - Channel ManagedChannelImpl was not shut down properly
    问题描述生产代码报错:2022-10-31T09:06:46,530[portRiskService-1002-2950@168-63-70-238:8]ERRORio.grpc.internal.ManagedChannelOrphanWrapper-*~*~*~Channel......
  • gRPC-浅试
    最近接到业务需求,对接外包算法的http接口,了解了gRPC的使用,这里以一个简单的例子说明。1新建程序新建gRPCClient和gRPCServer2添加引用打开NuGet,安装Grpc、Google.Pr......
  • Dapr实现.Net Grpc服务之间的发布和订阅,并采用WebApi类似的事件订阅方式
    大家好,我是失业在家,正在找工作的博主Jerry,找工作之余,总结和整理以前的项目经验,动手写了个洋葱架构(整洁架构)示例解决方案OnionArch。其目的是为了更好的实现基于DDD(领域驱......