首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >能否通过从HTTP API切换到gRPC服务来降低亚马逊网络服务的数据传输成本?

能否通过从HTTP API切换到gRPC服务来降低亚马逊网络服务的数据传输成本?
EN

Stack Overflow用户
提问于 2020-04-24 21:25:21
回答 1查看 138关注 0票数 2

我有一个处理大量流量的web服务。此流量可能在每分钟数百万的范围内。该服务托管在ELB后面的亚马逊网络服务EC2上,并使用HTTP。这导致了AWS账单中包含大量数据传输费用。数据传出组件通常更高,因为除了SSL协商之外,来自web服务的50%响应有点大,并且编码为JSON。

现在,由于二进制序列化,与表示为gRPC的类似数据相比,JSON有效负载的大小更小。那么,通过从HTTP切换到gRPC可以节省数据传输成本吗?

我在任何地方都找不到任何将AWS数据传输成本与HTTP API/gRPC服务相关联的基准测试/文章。即使节省5-10%也是有益的。

PS:在这里,访问web服务的客户端也是我的。因此,可以同时在服务器端和客户端进行更改。

EN

回答 1

Stack Overflow用户

发布于 2020-04-25 02:29:29

也许吧,但也可能不是。这取决于您的实际数据。

如果您使用HTTP进行通信,那么总消息大小有两个组成部分: HTTP头和响应体。如果标头代表整个消息大小的重要部分,则通过使用替代的第7层协议(如WebSockets )来去除它们更有意义。

如果标头不重要,则取决于您的实际消息内容。这是因为gRPC使用的Protocol Buffers本质上执行两个优化:

  • 使用单字节值或双字节值替换字段名。只要您的JSON响应不经常使用相同的字段名(即,重复的对象),这可能是一个很大的节省。如果是这样,那么使用GZip编码将把一个字段名的平均成本降低到大约5个字节(我对大文件的观察,YMMV)。
  • 存储比正常位数更少的数值。如果您的消息内容由数字数组组成,这将是一个巨大的胜利。如果主要是文本,您将看不到太多好处,因为无论哪种情况,都必须发送相同的字节序列。

就我个人而言,我认为切换到WebSockets是最好的第一步。当然,这假设这些消息来自相对较少的客户端。如果每条消息都来自不同的客户端,则不会保存任何内容。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61409472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档