一文带你揭秘淘宝终端技术

一文带你揭秘淘宝终端技术

作者:周杰(寻弦)

在这个数字化迅速发展的时代,技术的每一次飞跃都不仅仅意味着一个产品的升级,更是对未来世界的一次大胆想象。从 PC 到 iPhone,从 Model 3 到 ChatGPT,都引领了全新的一个行业。对于正处在求学阶段的你们,选择一个充满活力、技术领先、并且可以提供巨大成长空间的团队,无疑是迈向成功职业生涯的关键第一步。现在,就让我们一同揭开淘天终端技术团队的神秘面纱,一步步为你揭晓为何我们在终端技术领域独树一帜。

一、终端技术体系和代表作

我们团队主要负责的是淘宝——这个星球上最复杂的 App(没有之一)的基础设施,数以亿计的用户在这个 App 上浏览商品/查看详情/买卖家交流/下单购物/互动娱乐/消费内容等等,任何单一功能的复杂度都可以媲美市场上的一个独立 App,把所有这些都聚合在一个巨型 App 中,我们面临的是几大核心矛盾:有限的包体和设备存储空间 vs 无限增长的业务模块、有限的终端硬件资源 vs 无限叠加的业务场景、有限的设备能耗 vs 不断沉浸的体验追求、碎片化的海量设备 vs 统一化的交付方式等等。

举几个实际的例子:

淘宝里的业务模块成百上千,而淘宝 Android 端的包大小居然回到了 18 年的水位(65M),处于行业前列。每天有大几亿用户打开淘宝 App,这些用户在淘宝上的行为非常多样化。

  • 有些用户喜欢搜,他们目的性很强,直接搜索商品关键字-进入商品详情查看和比价-下单;

  • 有些用户喜欢逛,在首页信息流和 ND 来回浏览-进入商详查看-加购或下单;

  • 有些用户喜欢玩,在我的淘宝中玩些小游戏-查看商品/店铺-可能加购或下单;

  • 有些用户喜欢看,在 Tab2 看视频(可赚钱)-查看视频中提到的感兴趣的商品-可能加购或下单等。

我们要保障用户在每条可能的路径和动线上都有着丝滑的体验,这是世界级的技术难度和挑战!

现在国人的日常衣食住行都已经离不开手机了,而其电池技术并没有根本性的突破,如何既能解决用户的续航焦虑,又能提供优雅的用户体验,以及使用过程中不出现发烫/卡顿,这是操作系统级别的技术难题和挑战!

为了应对和解决这些技术挑战和难题,我们长期探索这几大技术方向:

  • 原生技术,遵循 Platform First 理念,贴近原生系统、充分挖掘系统组件和特性,沉淀极致性能的渲染引擎/动态化引擎/原子能力集,同时与厂商深度合作,探索站内外用户触达多通道,用技术做用增;

  • 底层技术,遵循 First Principle 理念,深入虚拟机/字节码/汇编指令等,探索稳定性/性能/包体的极致边界,深入系统底层机制与原理,必要时帮系统打补丁;

  • 跨端技术,遵循 Cross Platform 理念,抹平多系统/平台差异,充分利用业界较为成熟的前端生态,沉淀自主可控的渲染引擎/图形引擎/脚本引擎,向业务提供符合 W3C 标准的前端友好的基础设施;

  • 工程技术,遵循 Productivity First 理念,支撑大规模多团队协作式研发,深挖工程组织/编译构建/虚拟机调度等技术,融合前端/客户端研发工作流,向业务提供高效稳定的工程体系;同时持续升级 Low Code 技术,赋能业务运营同学快速搭建页面上线,实现产品运营需求的想发就发;

  • 网络技术,拥抱网络协议新标准,重点优化移动弱网场景,以更小带宽,实现更快的传输,面对复杂移动场景,提供弹性可伸缩的网络服务,平衡前后台的业务体验;

  • 应用服务技术,遵循 API First 理念,解决接口大规模稳定快速投放,扩展丰富的请求模式/传输协议/压缩算法等,探索端云交互一体化新模式和端云研发新模式;

  • AI 技术,依托于大模型近来的突飞猛进,我们承担着进一步提升淘宝业务研发效率和体验的使命,包括多模态代码生成(一句话需求生成逻辑代码/一张视觉稿生成 UI 代码/基于一段真实代码生成单测代码)、问题诊断(线上 Crash 诊断/端到端问题自动定位/构建失败诊断/场景化性能诊断调优)、研发助理(领域知识答疑/最佳实践问答)等等。

每个技术方向我们都有着多年的辛勤打磨和持续沉淀,历经了多年线上大规模用户和流量的千锤百炼,以下是我们的部分代表作:

  • 原生动态化技术:基于 play core 的动态化方案,具备了 Replugin(360)和 Qigsaw(iQiyi)合并的优势,既支持插件化,又支持组件动态化;

  • 原生研发框架 DX 4.0,以 Kotlin+Compose 为标准,声明式/响应式/状态管理/一码多屏为特性,基于原生系统 UIKit 构建原生渲染管线、基于 KMP 构建面向多平台的编译体系,支持原生组件和能力的快速定制和扩展;

  • 自绘渲染引擎 Weex 2.0,自建符合 Web 标准的自绘渲染引擎,包含执行代码/节点构建/布局/绘制/合成/光栅化/上屏等完整渲染管线;建立字节码离线编译的工程体系,编译期可进行耗时更高更彻底的优化,并支持标准 ESM 模块、多文件拼接、动态执行脚本、模块搭建等能力;弹性可扩展的容器和插件能力,支持全页/浮层/卡片/小部件/Embed 等多种形态及插件;

  • 流式 SSR 技术,业界率先尝试零运维流式 SSR 托管服务,简化流式 SSR 页面研发成本,相对业内中心化 SSR 渲染方案,引入了 CDN ER 的边缘能力,降低客户端渲染压力,并实现就近的渲染快照,实现极致的 FCP 时间;

  • LSM 对象存储技术,业界腾迅开源的 MMKV、mongodb 的子项目 realm 都是针对移动端的对象/键值存储方案,分别使用了 MVCC 等存储模型用于提升高并发场景的性能,但没有针对 Flash 存储(SSD/UFS/)特性的优化。sqlite 的 btree 模型对大对象键值存储的读写放大系数较高。我们针对 Flash 存储特性(块读写机制、垃圾回收机制等)实现的 LSM Tree,支持了内存压缩、冷热分区、碎片化抑制等特性,在读写放大系数和吞吐性能上有显著优势,大量应用在移动端上图片及小文件缓存等场景;

  • 终端 APP 到全链路的观测与性能技术,立足 Android/iOS 原生特性提供 APP 维度的观测套件,以及各类 APP 高性能框架、组件,实现端性能持续优化与业务迭代;立足 OpenTelemetry 提供终端访问云上服务的全链路分布式技术规范与观测套件,实现终端 RPC、远程配置、消息、大文件上传/下载等高性能中间件,支撑业务链路优化与治理;

  • 终端工程构建技术,以流水线为主要支撑,通过灵活的配置插件形成统一的构建流水线,我们沉淀了终端丰富的工程构建工具链,支持 iOS/Android/PC/IOT 等多终端的自定义,同时结合私有化部署能够完全开放定制整个工程构建生产链路;

  • 高性能网络技术,在 IETF 国际标准组织,主导 Multipath-QUIC 协议标准化进程(作为协议第一作者);有 4 篇网络领域顶级学术会议论文和期刊收录,包括网络学术 Top1 顶会 SIGCOMM 21 发表论文<XLINK>/顶会 NSDI 收录<TECC>等;开源国内首个标准化协议库 XQUIC(git star 1.5K)/开源高性能云原生网关 Tengine(git star 12.2K);网络领域专利授权超过 20 个以上。

面向未来,在应用底座层我们会坚持系统+自研结合的方式,向下深挖系统内核,向上提供丰富稳定、抹平平台差异的系统能力;容器引擎层我们会坚持原生+跨端结合的方式,既要极致体验,又要快速交付,充分利用客户端和前端生态;工程支撑侧我们会坚持融合客户端+前端研发动线,支持业务高效研发和低成本运维,支撑淘宝成为全球最小最快最稳最爽的 App。

二、终端技术的团队和背后的人

技术代表作的持续演进和长期技术方向的持续探索,离不开背后的优秀工程师们,以及能持续培养出优秀工程师的土壤——团队。

我们团队倡导工程师文化,它不仅仅是一个口号,而是我们文化的核心。我们鼓励团队成员积极思考,敢于提出大胆的想法,打破现状,并为这些想法提供足够的支持与资源。

我们相信,工程师文化的核心,离不开一群优秀的技术牛人们,他们在各自技术领域拥有丰富的实践经验、较高的理论造诣,他们将成为你们的技术导师,带领你们一起成长,让你们可以引领潮流,创造未来。

技术牛人们的代表作品让人倍感震撼。他们参与制定了国际网络标准,比如【IETF】Multipath Extension for QUIC,这是一个先进性技术的行动和举措,改变了网络传输的方式,让网络更加高效和稳定。同时,他们也为 JavaScript 标准【TC39】做出了巨大贡献,完成 JS 语言特性提案两个,推出了 ShadowRealm、Async Context 和 Error Cause 等创新方案标准,为开发者们提供更加便捷和强大的工具,也为 CNCF OpenTelemetry JS 语言实现 Champion 和规范作出了贡献。

技术牛人们不仅在行业标准有着卓越的表现,他们的学术论文期刊发表也令人瞩目。比如【NSDI 2024】的 TECC,这是一项关于 QUIC 隧道技术的研究,致力于提高 QUIC 传输的效率和性能;还有【Computer Networks 2022】的 BBRv2+,一项关于带宽探测的研究,旨在实现对带宽的平衡和公平;以及【TNNLS 2023】的 Noah,这是一项关于强化学习的研究,为大规模电子商务服务中的微服务提供了智能的速率限制算法。

技术牛人们在开源社区也有着丰富的经验和贡献。他们开源了国内首个标准化协议库 XQUIC,这是一个备受关注的项目,已经获得 1.5K 个 star;同时,他们还为高性能云原生网关 Tengine(12.2K star)更新换代升级,成为了开源社区中的明星项目。

此外,我们的团队中有 Node.js TSC voting members(要知道一共才二十个核心成员)和 Google V8 committer,还推出了一系列基于 React 的应用研发框架,如 git star 达到 17.7K 的 ice.js,广受前端研发好评,以及 Node.js Serverless Framework 中的 midway.js,git star 达到 6.9K。还有 iOS 非侵入性能测试输出开源项目 tidevice,已经获得了 2K+个 star,广受开发者欢迎。

技术牛人们不仅有着卓越的技术实力,更重要的是他们乐于分享帮助他人

加入我们的团队,你将有机会与这些杰出的人才们面对面交流,让师兄师姐倾囊传授他们的经验和智慧。无论是在项目开发中遇到的问题还是职业规划上的困惑,团队都将为你提供指导和支持,帮助你成长为一个优秀的专业人才。

加入我们的团队,我们有定期的内部分享会、技术研讨和外部交流活动,让你能不断学习到新知识,拓宽见识,同时也鼓励参加国内外技术大会,与业界大咖面对面交流,从而激发更多灵感。

无图无真相,下面是我们最近的一些内外部分享的照片:

以及我们的团队全家福

三、未来展望

未来已来,终端技术的新纪元正在向我们招手。

未来的电商终端设备将通过高效的数据分析和智能学习,了解我们的习惯和偏好,为我们提供更精准的个性化服务。

未来的电商终端设备将通过先进的人机交互技术,如手势控制、面部识别、语音助手,我们可以以最自然的方式同设备进行交互,无需学习复杂的操作,为我们提供将更优雅的用户体验。

未来的电商终端设备将采用最新的加密方法和隐私保护措施,确保用户数据的安全不被侵犯。同时,终端设备将能够在本地处理更多的信息,减少对云端的依赖,从而在保障功能的同时,最大限度地保护用户隐私。

我们相信,未来的电商终端不再是冷冰冰的交易平台,而是一个充满人情味、智能互动、高度个性化的购物伙伴。随着科技的进步,未来的电商终端将彻底重塑我们的购物体验,将便利、乐趣和效率提升到前所未有的高度。

在我们团队的带领下,未来的终端技术正以我们的智慧和汗水孕育而生。我们不仅仅是技术的创造者和实践者,更是未来美好生活的梦想家。我们邀请每一位对技术抱有热情的伙伴,加入我们这个充满激情和创意的团队,一起憧憬并创造一个更加智能、安全、便捷的明天。

在此欢迎聪明靠谱的小伙伴加入(社招、校招、实习生、高校合作、访问学者等),简历请发至 leo.zhouj@taobao.com。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/629410.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智慧校园大数据平台功能模块

学校概况模块 智慧校园大数据平台的“学校概况”模块,主要给学校和院系领导使用,能够从宏观、全局把控学校教学、管理、科研、资产等各个方面的整体情况,可以预测学校的发展趋势并且给出决策建议。 比如在消费方面,校领导可以看到近一个月的消费金额和地点的情况,也可以…

AttributeError: module ‘openai‘ has no attribute ‘error‘解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

每日一记:一个windows的bat脚本工具集

最近在工作上遇到要校验文件的问题&#xff0c;例如&#xff0c;下载了一个文件之后&#xff0c;通过查看文件的md5来校验文件是否完整&#xff0c;这个动作在linux上很简单&#xff0c;但在windows上也不难&#xff0c;可以通过 certutil 命令实现&#xff0c;该命令通常可用于…

SpringBoot项目如何优雅的实现操作日志记录

SpringBoot项目如何优雅的实现操作日志记录 前言 在实际开发当中&#xff0c;对于某些关键业务&#xff0c;我们通常需要记录该操作的内容&#xff0c;一个操作调一次记录方法&#xff0c;每次还得去收集参数等等&#xff0c;会造成大量代码重复。 我们希望代码中只有业务相关…

【论文阅读笔记】4篇Disentangled representation learning用于图像分割的论文

4篇应用解耦表示学习的文章&#xff0c;这里只关注如何解耦&#xff0c;更多细节不关注&#xff0c;简单记录一下。 1.Robust Multimodal Brain Tumor Segmentation via Feature Disentanglement and Gated Fusion Chen C, Dou Q, Jin Y, et al. Robust multimodal brain tum…

PDF 文档解除密码

PDF 文档解除密码 1. 文件 -> 文档属性 -> 安全 -> 文档限制摘要2. PDF365References 1. 文件 -> 文档属性 -> 安全 -> 文档限制摘要 密码保护《算法设计与分析基础_第3版.pdf》 2. PDF365 https://www.pdf365.cn/ 免费功能 -> PDF 去密码 开始去除 Re…

wireshark使用教程

目录 windows平台安装Wireshark组件选择Additional TasksPacket CaptureUSB CaptureNpcap Installation Options Ubuntu上安装 Wireshark不使用 sudo 运行 Wireshark 使用GUI抓包使用命令行抓包确定抓取哪个网卡的报文抓取数据包停止抓包设置过滤条件 参考资料 Wireshark 是一款…

保姆级ESP-IDF开发环境搭建

1. 手动安装工具链&#xff0c;命令行方式&#xff08;windows&#xff09; 1.1 下载离线安装器 进入乐鑫 ESP-IDF Windows Installer Download 下载页面&#xff0c;选择离线版本工具&#xff08;网络原因&#xff0c;安装过程中使用github下载会出问题&#xff09;。 1.2 使…

QGIS全国卫星影像加载插件

我们曾分享过通过在QGIS中加载全国卫星影像的方法。 现在&#xff0c;我们再来分享一个可以加载全国卫星影像的QGIS插件。 如何加载QGIS插件 在QGIS中&#xff0c;选择插件菜单中的管理和安装插件菜单&#xff0c;如下图所示。 插件管理 在显示的界面中&#xff0c;输入“j…

两步解决宝塔面板无法访问(无法访问或拒绝链接)

宝塔面板&#xff0c;突然无法进入&#xff0c;显示“IP拒绝链接”。 使用SSH工具登录服务器 /etc/init.d/bt defaultbt default 命令 宝塔获取登录的默认地址、用户名和登录密码&#xff1b; 重启面板服务 sudo /etc/init.d/bt初始化宝塔选项 漏刻有时

Clickhouse: One table to rule them all!

前面几篇笔记我们讨论了存储海量行情数据的个人技术方案。它们之所以被称之为个人方案&#xff0c;并不是因为性能弱&#xff0c;而是指在这些方案中&#xff0c;数据都存储在本地&#xff0c;也只适合单机查询。 数据源很贵 – 在这个冬天&#xff0c;我们已经听说&#xff0…

Python进程池multiprocessing.Pool

环境&#xff1a; 鲲鹏920:192核心 内存&#xff1a;756G python&#xff1a;3.9 python单进程的耗时 在做单纯的cpu计算的场景&#xff0c;使用单进程核多进程的耗时做如下测试&#xff1a; 单进程情况下cpu的占用了如下&#xff0c;占用一半的核心数&#xff1a; 每一步…

数据结构实战:变位词侦测

文章目录 一、实战概述二、实战步骤&#xff08;一&#xff09;逐个比较法1、编写源程序2、代码解释说明&#xff08;1&#xff09;函数逻辑解释&#xff08;2&#xff09;主程序部分 3、运行程序&#xff0c;查看结果4、计算时间复杂度 &#xff08;二&#xff09;排序比较法1…

ADA-YOLO:YOLOv8+注意力+Adaptive Head,mAP提升3%

生物医学图像分析中的目标检测和定位至关重要&#xff0c;尤其是在血液学领域&#xff0c;检测和识别血细胞对于诊断和治疗决策至关重要。虽然基于注意力的方法在各个领域中目标检测方面取得了显著的进展&#xff0c;但由于医学影像数据集的独特挑战&#xff0c;其在医学目标检…

JUC的常见类

目录 Callable ReentrantLock Semaphore CountDownLatch JUC即 java.util.concurrent&#xff0c;其中存放了一些进行多线程编程时有用的类 Callable Callable是一个接口&#xff0c;在我们实现Runnable创建线程时&#xff0c;Runnable关注的是其过程&#xff0c;而不关注…

MySQL实现跨库join查询

MySQL实现跨库join查询 一.同服务器的不同库 只需要在表名前加上db_name select* fromuserdb.user u join orderdb.order o onu.id o.user_id;二.不同服务器的不同库 查看配置 FEDERATED SHOW engines;如果是NO,需要改为YES.默认是NO 在my.ini文件中增加一行&#xff0c;…

Kotlin 进阶

1.lambda 表达式 package com.jmj.myapp.lamdbaimport javax.security.auth.callback.Callbackfun main() {1.test1 {println(this1) }}fun <T> T.test1(callback:T.() -> Unit) {this.callback() }package com.jmj.myapp.lamdbaimport javax.security.auth.callback…

HCIA——11计算机网络分层结构——OSI/ISO、TCP/IP

学习目标&#xff1a; 参考模型 计算机网络 1.掌握计算机网络的基本概念、基本原理和基本方法。 2.掌握计算机网络的体系结构和典型网络协议&#xff0c;了解典型网络设备的组成和特点&#xff0c;理解典型网络设备的工作原理。 3.能够运用计算机网络的基本概念、基本原理和基本…

​​社交媒体与新闻:Facebook在信息传播中的作用

社交媒体已经成为我们获取和传播新闻的主要渠道之一&#xff0c;而Facebook作为社交媒体的巨头&#xff0c;在信息传播中扮演着举足轻重的角色。本文将深入探讨社交媒体对新闻传播的影响&#xff0c;聚焦于Facebook在这一领域的独特作用&#xff0c;以及这种作用对我们的新闻体…

2024华数杯国际赛A题16页完整思路+五小问py代码数据集+后续高质量参考论文

这回带大家体验一下2024“华数杯”国际大学生数学建模竞赛呀&#xff01; 完整内容获取在文末 此题涉及到放射性废水从日本排放到海洋中的扩散问题&#xff0c;以及对环境和人类健康的潜在影响。 ## 问题重述 1. **预测污染范围和程度&#xff1a;** - 使用数学模型描述放射性…