本文转载自 量子位,作者 萧箫
“淘宝双十一网络稳定性,背后由哪些关键技术支撑?”
“淘系高难度压测,具体实行方案是什么?”
上面是淘系程序员,在开发这些关键项目时留下的内部技术总结。
单个技术岗?当然不。
前端、后端、客户端、音视频技术……
我们想办法,搞来了整个淘系这一年,所有程序员的技术分享。
对这些资料进行整理后,我们得以窥见淘系过去一年的核心技术进展。
一起来看看。
过去一年,淘系的技术进展
这些技术进展,既有各个技术岗单独的研究成果,又有整个大型项目的迭代升级 (如天猫双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