凌云时刻 · 洞见

导读:“基于阿里云对象存储在传输加速方面的出色能力,钉钉在跨区域的图片处理、文档预览的并发处理量上有了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

往期精彩文章回顾

在中国在行其道的智慧城市,为何折戟多伦多?

Golang 性能分析工具简要介绍

落后产能的实现路径

跑赢业务的同时如何实现技术成长?

Java 代码精简之道

那一年,创业 vs 阿里(下):阿里篇

桌面版IDE将迎终结,Github发布代码空间Codespaces

2020 有哪些不容错过的前端技术趋势?

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

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

为什么钉钉里的图片打开得更快了? | 凌云时刻相关推荐

  1. 让你的网站打开的更快

    不知道从什么时候开始,不管是写独立博客,还是网络应用,甚至写托管博客的人都会朝着"大"网站看齐,去追求网站的响应速度,通俗点说,就是白屏时间,因为据各种报告说,网站打开速度更快一些 ...

  2. 为什么ps图片打开是色块_图片加载 背景色块问题

    就是CSS的加载和背景图片的加载不是同步的,尤其首次加载的时候,图片是异步的,具有明显的延迟,于是,我们会看到非常丑陋的色块在一瞬间出现了: 页面渲染流程如下,1. CSS加载:2. 对应DOM渲染, ...

  3. python 钉钉机器人发送图片_利用Python自动发送钉钉数据消息

    现在大部分公司都使用钉钉作为内部的主要沟通工具,钉钉消息基本都上都能快速有效的被阅读,打开率会比邮件高上不少.所以准备使用钉钉来播报平台每日的成交额,并附上一些鼓励的话和图片.起到一个激励团队的作用 ...

  4. 钉钉如何群里定时发送文件_使用钉钉APP实现多人在线协同编辑文档

    钉钉是阿里系综合智能移动办公平台软件,利用钉钉平台,可以完成基本的线上办公功能. 使用钉钉进行对文档的多人在线协同编辑是一种非常便捷的办公应用. 钉钉支持电脑端.手机端等多平台操作. 下面以手机端钉钉 ...

  5. 最新电脑版二级计算机视频怎么打开,电脑版钉钉如何打开视频会议中录制的视频...

    电脑版钉钉如何打开视频会议中录制的视频 腾讯视频/爱奇艺/优酷/外卖 充值4折起 电脑版钉钉软件被很多人使用,用来学习或者工作,想要聚集一些人讨论问题,因此会开视频会议,那么为了能够后期看视频会议,因 ...

  6. 钉钉内置浏览器下载文件(钉钉跨域下载文件、图片等)

    刚开始在网上查询到很多资料其中最为广泛的是用<a>download下载,但是会遇到图片.txt.MP4等文件无法下载被浏览器直接打开,后来尝试用blob的方法进行字节流转换,虽然成功了,但 ...

  7. 苹果手机使用快捷指令实现钉钉自动打开

    准备工作: 1.苹果手机一部: 2.手机连上WIFI: 3.取消苹果解锁密码: 4.设置好钉钉急速打开: 快捷指令设置: 1.点击"快捷指令": 2.先点击"自动化&qu ...

  8. python 钉钉机器人发送图片,python操作钉钉机器人发送各种消息

    python操作钉钉机器人发送各种消息 python操作钉钉机器人发送各种消息 使用python,操作钉钉群聊机器人发送消息 环境:python3.x 使用模块:requests,json 钉钉机器人 ...

  9. 钉钉里的钉一下怎么用 怎么使用钉钉里的钉一下

    钉钉是很多公司比较依赖的办公工具,每天上班都要先打开钉钉.我们和同事交流工作内容的时候,主要也是通过钉钉.如果同事消息太多,或者有其他事情耽误了,就可能没有及时查看我们的消息.看着我们发送的消息久久都 ...

  10. 如何实现git分支变动,钉钉群里收到变动信息的通知?

    如果在看这边文章的你是被标题吸引进来的,那说明你可能也遇到了这样的问题,或者想要学习怎么实现这种操作.那么,接下来就和我一起来看看具体的实现流程吧. 钉钉端: 1.首先我们在钉钉群中,点击群设置 2. ...

最新文章

  1. OCP-Oracle 12c 数据库认证
  2. jmeter --- 基于InfluxDBGrafana的JMeter实时性能测试数据的监控和展示
  3. 乐惠科技php面试题,程序员中的奇葩,使用php构建魔兽世界
  4. 更改IE浏览器的收藏夹位置
  5. jsp无法提交nicEdit中的内容的解决办法
  6. JDK与API下载与使用
  7. python查找手册
  8. 【软件设计师考试】《软件设计师教程》(一)
  9. 如何学习SAP系统并从事相关职业
  10. Android改包1
  11. matlab相对误差,相对误差与相对误差限定义-精品课程-山东科技大学.PPT
  12. 计算机网络 华东理工大学 2020期末考试
  13. BlueCoat ProxySG配置FTP代理
  14. brew install速度过慢
  15. 静态网页制作(html+css)、css浮动,练习(网页布局),清除浮动
  16. HDU—校赛—1004
  17. android 全景拍照 sdk,Android全景SDK | 百度地图API SDK
  18. XGBoost参数说明
  19. windows server2012安装web服务以及运行asp
  20. 《技术顾问聘用协议书》个人分享

热门文章

  1. Obj-C的hello,world 1
  2. mssql 2005/2008/2012如何添加、查询、修改分区表中的数据 .
  3. 微服务技术图片资源汇总
  4. CF16E Fish(状压+期望dp)
  5. leetcode ----Trie/stack专题
  6. 【bzoj3573】 Hnoi2014—米特运输
  7. Android Studio 常用快捷键和使用技巧
  8. ActiveMQ实现负载均衡+高可用部署方案 -转载
  9. 禁止选择,右键菜单,拷贝,拖拽
  10. 如何提升深度学习的性能