本文转载自 量子位,作者 萧箫

“淘宝双十一网络稳定性,背后由哪些关键技术支撑?”

“淘系高难度压测,具体实行方案是什么?”

上面是淘系程序员,在开发这些关键项目时留下的内部技术总结。

单个技术岗?当然不。

前端、后端、客户端、音视频技术……

我们想办法,搞来了整个淘系这一年,所有程序员的技术分享。

对这些资料进行整理后,我们得以窥见淘系过去一年的核心技术进展。

一起来看看。

过去一年,淘系的技术进展

这些技术进展,既有各个技术岗单独的研究成果,又有整个大型项目的迭代升级 (如天猫双11)。

其中技术岗,又主要包括前端、后端、算法、客户端、测试、音视频与图像、端智能与MNN……

以关注度最高的2020天猫双11项目为例。

在这一大型项目中,测试、前端、后端、客户端等技术岗的研究人员,都总结了各自岗位最新的技术成果。

先来看测试岗。

2020年的双11,订单创建峰值达到58.3万笔/秒,涉及近20条业务线,100多个场景,400+链路。部分业务,甚至深度融入在导购、交易链路中。

为了让系统不瘫痪,测试岗通常需要进行全链路压测。

往年,压测只针对C端用户场景进行,因为商家端场景结构庞杂、且涉及诸多三方系统。

但如果不进行压测,一旦出现故障,对用户、商家都将造成极大的体验伤害。

这是淘系首次针对B端(商家端)场景进行压测。

从总结来看,压测场景,包括IM消息体系端到端、三方服务商、三方小程序的全链路压测三种。

在压测实施过程中,需要解决各种问题。为此,淘系基于NIO,开发了长连接瘦客户端

这个客户端能够打通全链路消息业务、进行订单推送全链路压测,并基于历史订单数据,生成压测模型、自动收集压测结果。

例如,由于IM系统与服务端会建立长连接,因此用户A发消息给B时,B会被动收到服务器的推送,而非主动拉取数据。

而瘦客户端在收到消息推送后,则会加上一个“ACK”的消息回复,表示消息已收到。

这样,就可以根据已读比例,对消息进行已读设置。

……

而对于前端来说,今年的双11,同样是一场挑战。

这次的双11流量高峰期,由一个变成了两个,期间包括预售、预热等活动,大幅增加了前端的研发工作量。

面对暴增的工作压力,前端的程序员这次将设计稿生成代码(D2C)平台Imgcook,进行了全面升级,用于智能生成代码

这其中,包括对UI多态、直播视频组件、循环智能识别增强等技术的升级。

相比于去年的78.94%,今年双11会场,D2C平台Imgcook承担了90.4%的新模块代码智能生成,大量降低了前端的工作压力。

……

对于后端来说,双11最大的挑战,来源于不确定流量的互动消息。

如何将不确定性的流量,转化为确定性流量,并将互动消息,更有序地呈现在用户面前?

这其中,分优先级保障不同的消息QoS能力,是核心技术。

在这样的基础上,通过QoS分级机制承诺消息服务SLA,才能做到隔离/优先级/差异化处理,保证整体的消息顺滑体验。

……

除了这些,还有客户端的技术人员,分析总结了今年手淘双11中,最新的技术实践——

PopLayer弹层领域研发模式升级。

PopLayer,在今年提出了名为“低研发搭投模式”的方案,具有快速搭建+可视化+多端多场景通用的特点,实施效果也非常好:

这一方案,直接让弹层业务的上线成本,从3天+,降低到2小时,且保证线上0故障

而技术的覆盖率,甚至达到双11大促期间的75%

……

除了技术进展,这一年,也有不少程序员总结了自己在岗位上的所见所想。

顶尖人才水平、评价同行项目、研究新的小众技术……

例如,阿里p6,凭什么拿到35万年薪?阿里程序员,如何看待华为云?小众直播技术WebRTC,钱途怎么样?

“阿里p6到底是什么水平?”

在总结中,一位阿里大牛,对前端p6/p6+的JD (职位描述)进行了亲自解读。

这里的每一条要求,都对应具体标准,水平分为“初、中、高”,以此判断面试者的能力。

例如,对于“熟悉react生态常用工具”最初级的要求,主要是知道react-router、redux、redux-thunk、react-redux、immutable、antd或同级别社区组件库,以及它们的版本差异、基本使用方法。

而如果分析过全家桶源码、知道核心实现原理和底层依赖,能直接说出原生js和redux怎么结合,以及从数据驱动角度说清楚redux,就算是达到了中级要求。

至于更高级的要求,就是基于全家桶构建过复杂应用了。例如,说出微前端和这些类库结合时的注意事项、掉过的坑,以及解决方案。

表面上,就是知道用法、读懂源码,再到项目实践。但其实在面试官眼中,这几个阶段的要求,都非常具体。

同样的,还有“熟练掌握JavaScript”这条岗位要求。

它背后的初级目标,仅仅是“了解”某些原理和方法。如组合寄生继承、event loop、ES6数组相关方法、基础数据结构……

中级目标,则需要在“了解”的基础上“融会贯通”。除了知道原理,还要能举例说明、类比差异,如class继承与组合寄生继承的区别。

……

其余每一条职位描述,也都有详细解读,并给出了“初-中-高”的提升路线。

对于阿里p6来说,初级要求100%达成;中级要求,至少覆盖60%;高级要求,则起码覆盖20%。当然,对于p7来说,高级要求必须覆盖80%以上

类似这样的技术岗解读,还包括算法岗(推荐算法标准)、后端(业务拆分)、测试(自动化)、图像音视频(WebRTC)……

除了这些内部资料,也有人对比了不同的热门项目。

例如,一位阿里程序员,分析了华为的技术。

这个问题是这样的:

原本大家只想吃个瓜,没想到,这位程序员真的对两个项目进行了分析总结。

华为云Cloud IDE,是基于eclipse-theia项目搭建的在线IDE服务;而gitpod,是最早基于Theia搭建的在线IDE服务。

早期Theia内核,继承了Node.js、Java等主流语言的语言服务及调试器实现。

但在Theia架构支持VS Code插件后,可以无缝继承大部分VS Code语言的相关插件了。

……

除了这些项目对比,还有人专门研究了一些“小众”技术,如WebRTC。

在低延迟直播技术中,它以复杂度高、上手困难出名,因此研究的人也很少。

这样的技术,究竟值不值得学习?会不会被其他技术所取代?

有人专门对比了Quic和WebRTC这两种方案,前者上手容易,复杂度低,看起来是比WebRTC更有潜力的技术。

然而,在对比过程中发现,虽然Quic方案复杂度低,但如果想让延迟更低,反而得引入更多的复杂度。

也就是说,短期采用Quic收益更大,但想要让直播走得更长远,这并不是一劳永逸的解决办法。

……

阿里淘系所有程序员一整年的内部技术总结,都在这里了相关推荐

  1. 90后程序员:我面试了一些80后程序员,有些人的技术深度都不够

    点击上面↑「爱开发」关注我们 每晚10点,分享软件开发资源.社交电商资源 文|洪生鹏 80后随着时间的流逝渐渐淡出了人们的视线,人们更热衷谈论90后,有人说90后是跨掉的一代,对于新一代,似乎都有人来 ...

  2. 阿里淘系程序员“开源”内部年度技术总结,还把P9大佬喊出来教你“打怪升级”...

    鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 什么?阿里淘系程序员的年度技术总结,竟然是我可以免费看的东西? 不仅有P9大佬"现身说法"专讲如何从P4到P9升级打怪. ...

  3. 畅销书《深入浅出Vue.js》作者,在阿里淘系1年的收获成长

    大家好,我是若川.今天推荐一篇95年的博文的文章.他的故事应该挺多人知道.如果不知道可以看他的博客 https://github.com/berwin/blog 点击下方卡片关注我.加个星标 时间好快 ...

  4. 阿里淘系50+工程师整理的 CV 学习资源清单(2021最新版)

    学习是⼀个不断精进的过程,没有standard destination. 我们经常听到技术⼈各种学习困扰: " CV领域发展太快了,感觉囤积的学习资源好容易过时." "网 ...

  5. 月活用户达7.55亿,阿里淘系如何在后流量时代引爆用户增长?

    2019 年 8 月,阿里巴巴集团公布截至 2019 年 6 月 30 日止季度业绩. 财报显示,本季度阿里巴巴集团收入为 1149.24 亿元人民币,同比增长 42%.其中,淘宝.天猫在内的中国零售 ...

  6. 吴思里:阿里淘系前端面试经历

    吴思里:PCG腾讯文档面试经历 吴思里:字节面试经历 吴思里:阿里淘系前端面试经历 一面 2021-3-12 你是重邮的?我也是 你是2022届的对吧,那你现在是大三?日软是吧 我现在看一下你简历哈, ...

  7. Flutter 在阿里淘系的体系化建设和业务实践

    Flutter 这两年的热度不断提升,行业内投入建设 Flutter 的公司也越来越多,有很明显的上升趋势. 作为一个技术框架,Flutter 该有的功能都有了,但要把它应用到业务中去,还得解决工程问 ...

  8. 阿里P7岗位降低了招聘标准?程序员:几个水平一般的都进去了

    前言 有人说现在的程序员级别也开始浮夸起来了,以前觉得从刚毕业开始算初级软件工程师,到中级软件工程师,高级软件工程师,要熬上三五年乃至更高的时间.而现在接到同行的名片,往往高级开发经理.算法专家.首席 ...

  9. 读君山-七年阿里老人谈新人程序员的成长

    读了君山老师<七年阿里老人谈新人程序员的成长>觉得总结得非常好.整理记录一下. 做自己 做事积极主动 学习自我驱动 总结.沉淀.分享,积累影响力 做越来越大的事 把别人的事当成自己的事,做 ...

最新文章

  1. html页面在ie上出现404怎么解决,如何解决自定义404页面在IE等浏览器中无法显示问题...
  2. AI服务器的设计与实现
  3. python requests 报错 Connection aborted ConnectionResetError RemoteDisconnected 解决方法
  4. Java设计模式(八):外观设计模式
  5. win7远程桌面连接不上,解决办法
  6. JDK的bin目录下各种工具的使用说明_对不起自己,这么久没写博,抱歉
  7. Mybatis-plus详解
  8. Magento 1.9.X 系列教程
  9. 计算机网络中的基本概念
  10. java View转换类型_java强制类型转换.
  11. 我的Android 4 学习系列之使用 Internet 资源
  12. python姿态识别_基于深度学习的人体姿态识别算法总结
  13. html 页面文字不能复制粘贴,网页无法复制文字怎么办
  14. c++ de-mangle 反编译器命名工具:c++filt
  15. Ubuntu16.04关闭笔记本触摸板
  16. 华为云发布《云原生2.0架构白皮书》,GaussDB技术再升级
  17. python帝国cms_用python 发 帝国cms 文章
  18. 代码健壮性的几点思考
  19. iMac 2019一体机开箱体验,其内存是什么牌子,怎样换iMac内存?
  20. Oracle 取余函数

热门文章

  1. centos sshpass
  2. iperf详细介绍~!《转》
  3. 印象笔记改变背景颜色
  4. 从一个ADB漏洞,窥到周鸿祎的电视野心
  5. 测试王者荣耀账号价值的软件,王者荣耀:账号价值功能上线,看看你的账号值多少...
  6. STM32CUBEMX and 战舰STM32开发平台V2 (一)
  7. epic转移游戏_游戏新闻丨Epic力挺莎木3:承担众筹退款 索尼PS5性能参数细节大曝光...
  8. Hex棋评估函数的设计
  9. 使用OpenCV制作一个动图表情包
  10. 本地计算机上的MySQL服务启动后停止。某些服务在未由其他服务或程序使用时将自动...