服务部署流程中,如何节省流量费用?

212 天前
 yuandj

当下情况

有个项目,部署在某家上市云商中,接口大概每天 20 亿左右的请求响应,流量费用在服务器架构中占比较高,目前已经实施了 2 种优化方案,请问有没有更好的优化方案推荐?

目前已经做过的优化方案

  1. 找云商谈优惠
  2. 要求调用接口的合作商加上 gzip 压缩

暂不考虑的方案

  1. 按带宽计费(目前业务量级,按量计费/按带宽计费消耗差不多)

有想法还未实现的方案

  1. 使用 Protocol Buffers 替代 json ,和 gzip 同时使用。

请教

  1. 有没有推荐的优化方案? PS: 可以是服务部署方面 或者 流量优化方面
3240 次点击
所在节点    程序员
43 条回复
Ipsum
212 天前
日 20 亿,恕我直言,已经打败了 99.99999%的群友了。
dragonfsky1
212 天前
日 20 亿 还需要考虑流量费用吗,这种直接升级按口子计费的
javalaw2010
212 天前
如果场景允许的话,先上个限流,避免下游无节制调用接口。
如果是收费接口,提高费用,下游会自己想办法做缓存。
如果场景允许静态化,那改成生成 json 文件分发到 CDN ,CDN 一般价格好谈一点。
yuandj
212 天前
@dragonfsky1
盈利不是靠请求次数多少决定的,技术侧只能尽力减少服务成本了。
运营侧在做业务时,也得算着请求量级的营收比。
如果技术侧把服务成本做得更低,运营就有更多的施展空间。
yuandj
212 天前
@javalaw2010
1. 业务层的限流已经做了,目前接口调用频次都在可控范围内。
2. 必须实时调用接口,在业务逻辑中,调用侧和接收侧都不允许缓存。
northbrunv
212 天前
使用按带宽计费(不限流量)的服务器。如果你使用按流量计费的,成本很高
supersadmin
212 天前
蹲一个解决方案。
supersadmin
212 天前
日均 2 亿请求,之前测试使用按量计费比包月贵,现在直接包月了。
mightybruce
212 天前
如果你们技术过硬, 可以考虑修改服务使用 HTTPP3/QUIC 协议, 要考虑云商的各个组件是否支持(尤其是负载均衡)。
HTTP3 复用 比 HTTP2 更好,也更加节省流量。

其他很多方面,托管云是做不了太多的, 看是否能够对 linux 内核参数做一些调整
vivisidea
212 天前
是 In 流量 还是 Out 流量?我记得阿里云 ECS 绑定 外网 IP 的话,200Mbps 的 In 带宽是不收费的

Out 流量没啥办法,gzip 可以看下数据都是怎样的,测算下压缩比,有多少收益

威胁不给优惠就迁移去友商,谈优惠
xueling
212 天前
1 、使用 snappy/gzip 实时压缩;
2 、使用枚举 ID 代替不必要的文本传输,减少类似描述信息等文本内容的传输,数值类型参数不要使用字符串,键值也可以使用 id 替代;
3 、使用字节流类型接收和返回数据,根据二进制位自定义传入和返回数据协议(最好统一封装 http 请求和解析工具类给交互方);

了解一下我的开源项目: https://github.com/xl-xueling/xl-lighthouse 实时监控接口数据传输量,便于衡量优化效果。
mightybruce
212 天前
腾讯的张彦飞的《深入理解 Linux 网络》可以看看, 他写的文章很有深度, 这里给一个链接

https://mp.weixin.qq.com/s/-xiWjPRiRsPcxODnJ3921Q
Kinnice
212 天前
1. 首先看看你们流量峰值和流量模型
2. 可以开低带宽计费机器来和流量计费负载均衡一下,流量计费基本是 95 ,这样负载一下可能要便宜不少
3. 接口可以改 json => grpc
4. gzip => br
matrix1010
212 天前
要不你先说说业务是什么类型? No Silver Bullet 和 XY problem 大家都懂。具体问题具体分析,说不定直接 client side cache 一下都不用发请求
gam2046
212 天前
这种量级,考虑一下,HTTPS 能否降级成 HTTP ,光证书流量就节约非常多。

如果计划响应结构变为 protobuf ,那么 gzip 的效果就很一般了。
duan602728596
212 天前
什么,居然没开 gzip 吗? https 也可以尝试 br 压缩,效果更好
GeekGao
212 天前
思路:
使用 Protocol Buffers 代替 JSON ,以减少数据传输量。
使用 CDN ,将静态资源和 API 响应缓存并且靠近用户交付,以降低延迟和提高响应时间。
在 API 层集成缓存机制,快速提供缓存数据,减轻后端系统负担,改善响应时间。
采用现代网络协议,如 HTTP/2 ,减少建立新连接的开销,提高网络效率。
优化数据库查询,避免检索不必要的数据,减少网络流量,提高性能。
优化日志收集,仅收集和保留必要的日志数据,优化日志分析成本。
考虑其他压缩算法,如 lz4 、snappy 或 zstd ,以提高压缩性能。
zeusho871
212 天前
买那种大宽带机房 我这每天 20e 可能没有 几千万还是有
就那种大宽带服务器 500m 上下行拉满的 比阿里云便宜 然后作为缓存层通你你现在阿里云的服务 这样流量基本不计
如果还想便宜就移动大带宽的比电信便宜更多
zeusho871
212 天前
@zeusho871 没看到楼下的补充。。。如果不能缓存最简单的便宜的是买 5m 的阿里云 几十台堆起来 20 台 5m 的阿里云比一台 100m 的便宜很多
tool2dx
212 天前
@duan602728596 楼主说请求都是实时的,估计用 br 很难,这算法太慢了。

zstd 可以,gzip 也可以。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1044752

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX