前端遇上 Go: 静态资源增量更新的新实践

作者/分享人:美团技术团队
向 Ta 提问
美团技术团队官方账号

前端资源加载是前端一个经常谈论的话题。过去我们主要依赖浏览器的默认行为,但这种默认行为往往对缓存的利用率不够。对于一个经常改动发版的页面,我们希望每次上线时,尽可能利用缓存,降低资源发布时给用户带来的加载延时。因此,我们开始研究如何更好地结合现代浏览器的缓存设施,对资源进行增量更新。

增量更新说白了其实就是给老文件打上一个增量补丁,使其变成新文件。补丁本身是一个微型的 DSL(Domain Specific Language),我们的资源加载器对其进行解释,即可完成打补丁的过程。补丁文件的体积通常不会很大,理想情况下补丁的大小接近我们实际更新的字节数,因而比传统的全量更新在下载上更有优势。

尽管打补丁过程的性能开销很低,但补丁的生成却要消耗大量的服务器资源。对于目前动辄数百 KB 的静态资源,补丁的生成成为了我们要考虑的一个大问题。在高峰时段,用户对补丁的需求量大增,很容易令我们服务过载瘫痪。过去我们主要通过缓存和服务限流来解决这一问题,虽然有一定成效,但我们希望做的更好。

在调研中,我们发现 Go 语言高并发、高性能、易于开发的特性,对于我们的场景非常合适,因此便产生了使用 Go 语言研发新一代增量更新服务的想法。在实践过程中,我们既享受着 Go 语言特性带来的便利,同时也经受着它的一些缺点,逐渐发展出了自己的一套 Go 语言最佳实践。

本场 Chat 从以下一个方面进行分析讲解:

  • 为什么要做增量更新?
  • 增量更新是怎么一个过程?
  • 我们之前的增量更新实践遇到了什么问题?
  • 更高性能的可能方案。
  • 换语言,选择 Go 带来了什么?
  • 如何面对海量突发流量?
  • 如何容灾?

作者简介:洋河,2013年加入携程 UED 实习,参与研发了人生中第一个星数超过100的 GitHub 开源项目。2014年加入小米云平台,同时负责网页前端开发、客户端开发及路由器固件开发,积累了丰富的端开发经验。2017年加入美团,现负责金服平台基础组件的开发工作。

已有324人预订
预订达标
文章出炉
交流日期
     
18.07.10
18.07.24
18.08.01 20:30
查看文章评论/提问
 KARL--DujinYang 
最近你们官网经常有问题呀
小川
我以为针对golang会多讲一些,没想到是业务
你可能还喜欢
解读《阿里巴巴 Java 开发手册》背后的思考
Hollis
LeetCode 刷题指南以及常见算法题解题思路总结
kerry
初探 Kafka
阿福
大数据开发面试指南
王知无
高并发系统缓存实战入门
饿了么物流技术团队
7 天从 Java 工程师转型为 Go 工程师
DIU哥
微信扫描登录
关注提示×
扫码关注公众号,获得 Chat 最新进展通知!