小言_互联网的博客

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

227人阅读  评论(0)

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

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

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

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

单个技术岗?当然不。

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

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

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

一起来看看。

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

这些技术进展,既有各个技术岗单独的研究成果,又有整个大型项目的迭代升级 (如天猫双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收益更大,但想要让直播走得更长远,这并不是一劳永逸的解决办法。

……


转载:https://blog.csdn.net/weixin_39787242/article/details/112685364
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场