为什么钉钉里的图片打开得更快了? | 凌云时刻
发布日期:2021-06-30 18:31:04 浏览次数:3 分类:技术文章

本文共 2352 字,大约阅读时间需要 7 分钟。

凌云时刻 · 洞见

导读:“基于阿里云对象存储在传输加速方面的出色能力,钉钉在跨区域的图片处理、文档预览的并发处理量上有了10倍速的提升。”钉钉高级技术专家金喜如是说道。

作者 | 阿里云存储

来源 | 凌云时刻(微信号:linuxpk)

前言

可能你已经发现了,最近,在钉钉上传个文件或者加载一张图片的时间正在变得越来越快。如果根据钉钉的用户数进行预估的话,每个人在打开的图片可以节省1毫秒,那么整个钉钉将一共节省近60个小时。

随着钉钉用户数的激增,尤其是疫情期间多地办公甚至跨洋办公成为日常,如何保证图片、文档的快速分享与预览成为钉钉需要解决的关键问题。作为钉钉数据支撑体系的阿里云对象存储,凭借其传输加速能力很好的解决了这一问题。

优化网络协议及协议实现加速

对象存储全球传输加速是为加速远距离数据传输推出的新功能,此功能利用对象存储全球分布的云机房能力,将来自全球各地的用户访问由DNS 路由至就近的对象存储接入点,用户请求到达对象存储就近节点后,会经过优化过的网络及协议访问Bucket所在的数据中心。

对象存储全球数据中心分布

TCP从设计上并不适合长传,如果需要TCP在长传上提供很高的性能,就需要对TCP各项参数进行调优,要考虑诸如三次握手/慢启动/收发窗口等因素对传输速度的影响,有了传输加速后会将TCP并不擅长的长传从用户侧变成短距离传输,用户只要接入最近的对象存储节点,后续的访问速度由对象存储来负责优化。 

此外,对象存储提供多线BGP多线接入,提供极致的访问体验,但是如果需要从全球各地访问一个集中式对象存储 Bucket,比如跨大洲及跨洋传输数据的时候,由于物理距离较远,访问失败率相对较高并且传输速度低下,导致无法充分利用互联网上的长传带宽。使用对象存储全球传输加速后会在一定程度上解决这些问题,降低请求失败率同时提升访问速度。

利用图片处理回写功能实现加速

如果每次都要实时处理每张图片,则会大大降低用户体验,那么可以通过处理回写的方法进行优化。

具体方式是每次进行上传请求时带上callback参数让对象存储通知到本文中实现的nginx服务器,nginx服务器会自动从对象存储拉取经过处理的数据然后再回写带对象存储中,如果确认成功甚至可以将原图删掉只保留处理图,这些都可以依据上传逻辑进行实现。

OSS Nginx Proxy module 及对象存储的上传回调功能实现对象存储图片处理回写功能的程序运行主线如下:

  1. 发送带callback参数的PUT请求到对象存储,对象存储根据callback提供的参数会调用用户的应用服务器,也就是我们的nginx 

  2. Nginx 接收到这个请求后解析body参数获取到 源object 处理参数及回写object名,这一步走的是nginx conf 中的 location /oss_write_back 

  3. Nginx 根据解析出来的post 参数发出一个内部跳转的子请求到 location / 去对象存储取出处理参数为style 的处理图,当然取图请求会经过oss_auth.lua 走到location @oss进行签名 

  4. 取出处理图后nginx lua 发出自请求将处理图数据回写到对象存储至此回写完成。

使用方法及加速效果对比

传输加速会提供单独的Endpoint:oss-accelerate.aliyuncs.com,联系对象存储给指定的Bucket 开通传输加速后即可使用此Endpoint 发送请求,使用的时候只需要将Endpoint 替换成传输加速的Endpoint 即可。

举个例子,假设有个美东的Bucket test-us-east,公网访问这个bucket时需要使用: 

http://test-us-east.oss-us-east-1.aliyuncs.com 

使用传输加速后,只需要将访问域名替换为: 

http://test-us-east.oss-accelerate.aliyuncs.com

不需要额外进行其他特殊配置即可实现访问加速。如果在使用传输加速过程中发现无需传输加速也可以满足对对象存储访问速度的要求,只需将访问的Endpoint 切回标准Endpoint 即可。 

在加速效果上,由于对象存储本身提供高质量的BGP 多线接入能力,如果客户端本身离对象存储比较近,无需传输加速就可以达到一个比较优的传输速度;如果客户端本身离对象存储数据中心相对较远,比如进行跨国或跨洋数据传输,那么使用传输加速从成功率和访问速度上都会有较大幅度的提升,提升速度可能会达到一倍至数倍不等。

具体的加速效果可以从客户端问题打开对象存储提供的网页版传输加速效果对比工具进行测试,测试工具地址:

https://oss-accelerate-test.oss-cn-hangzhou.aliyuncs.com/acc/oss-transfer-acc-zh.html

对象存储全球传输加速效果对比工具

此网页版工具,会进行对象存储传输加速及非传输加速的对比测试,通过上传和下载各个区域的对象存储的响应时间给出相应的加速百分比。如果你发现加速效果不明显,或者有变慢情况(20% 以内),可能是因为测试点与Bucket所在数据中心相对较近的缘故, 也有可能是本地带宽或其他系统资源的限制导致。

对象存储全球传输加速测试结果截图

“现在,钉钉的图片数据处理规模仍在激增,需要不断从技术角度找到优的办法,这其中没有太多前人经验可以借鉴,因此,钉钉技术团队将与对象存储技术团队不断通力合作,寻求突破让技术实现普惠。”钉钉高级技术专家金喜如是说到。

END

往期精彩文章回顾

长按扫描二维码关注凌云时刻

每日收获前沿技术与科技洞见

转载地址:https://lingyun.blog.csdn.net/article/details/107036635 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:阿里云飞天洛神:高性能网络软硬件一体化技术实践 | 凌云时刻
下一篇:Golang 性能分析工具简要介绍

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月29日 08时24分00秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章