揭秘百度七次蜕变:中国搜索巨头的进化之旅!

IT阅读排行榜 2024-12-26 15:00

本文将介绍我在百度参与或负责的7次与搜索客户端架构优化有关的工作、所解决的问题以及过程中的思考,并从搜索客户端的架构变化来看搜索客户端的价值。

时间回到2011年,我们团队启动了一款新产品的研发——在iOS平台上实现一个搜索App,名为“百度搜索”。很荣幸,我作为研发负责人参与了这个App从无到有的构建过程。


这是我第一次站在实现者的角度来了解搜索业务。产品经理给“百度搜索”的定位为“有乐趣的、轻量级的搜索客户端”


听到产品经理给出的搜索客户端的定位时,还在想搜索服务用浏览器就可以满足,为什么还要再做一个搜索客户端?


十几年过去了,这个问题的答案换过好多次,每隔一段时间我都有新的理解。在这个项目中,我学到的基本知识到现在都很受用,一些知识点还在影响着我的工作方法及标准。


01 从零构建搜索客户端App


百度搜索初版为用户提供了文本和语音两种输入方式。用户输入完成后向搜索服务器请求搜索结果,当时的搜索服务器以网页格式返回搜索结果(结果页),点击结果页中的结果所进入的页面(落地页)也是网页格式。


在技术实现上,我们使用的是iOS系统提供的浏览内核,支持网页的展现及交互。


尽管通过浏览内核就可以满足用户的搜索浏览需求,但是我们在百度搜索视图的底部增加了工具条,以实现最基础的页面加载切换控制功能,如前进、后退、刷新等。


整个App使用原生方式实现了主体框架(注:NativeApp,简写为NA,即原生应用程序),并通过内置的浏览内核加载网页,实现了搜索客户端的基本功能


初版的搜索客户端在表面上看和浏览器有些相似,如图1所示。


图1初版的搜索客户端与浏览器样式对比


此时的百度搜索主要使用系统原生应用程序接口(API)开发,可定制性不强。在这个阶段,研发团队和产品本身都处于成长期,架构设计的重点是构建产品的基础功能。

02 Ding:优化移动端搜索的高频搜索需求


在2011年,移动设备中各种垂类App还没有像现在这么普及,搜索天气、股票等信息于部分用户而言属于高频需求


为了满足这些高频需求并将对应信息更好地呈现给用户,产品侧提出的方案为:在用户发起搜索时,为用户展现两类结果,一类为原搜索结果页的数据,使用浏览内核加载;一类为自定义的数据,在App内自行解析渲染。


我们把实现这种自定义数据的“卡片”称为Ding。Ding可定制数据内容和搜索关键字,支持自动刷新及手动刷新,点击它还可以看到对应的详情页面。对于时效性较高且高频的搜索需求,通过Ding来获取,可明显降低成本。


用户可以把Ding添加到首页,以便打开App时在首页就可以直接看到Ding的卡片。Ding在结果页中的展现如图2所示。


图2 Ding在结果页中的展现


这个阶段不再局限于满足用户的搜索需求,端与云的协同实现了以搜索或Ding的方式获取、展现信息以及与用户进行交互。这个阶段架构设计的重点在于搜索闭环能力的建设,而Ding仅是其中一种实现方式。


03 搜索+浏览双框架:优化移动端搜索过程的体验


搜索业务有一个典型的特征,就是用户搜索一个信息后,会频繁地在结果页落地页之间切换,直到找到想要的答案。


这就意味着结果页需要多次加载,因为浏览内核的缓存能力有限,所以存在重新加载结果页的情况。而页面重新加载时用户需要等待,特别是在移动网络环境下,页面加载慢且出错的概率偏高


为了解决这个问题,我们将结果页和落地页拆分开,结果页使用原框架一一搜索框架进行加载,落地页使用新框架进行加载,这个新框架称为浏览框架。浏览框架没有搜索能力,但是可以快速关闭并回到搜索框架中,以使用户继续浏览结果页。


这个过程上只需要进行两个框架的切换,因此实现了近零等待,提升了满足搜索需求的效率。搜索和浏览双框架共存的产品形态如图3所示。


图3 搜索+浏览双框架共存


因为搜索和浏览两个框架是相互独立的,所以技术上可以实现对落地页的预渲染,如果预渲染的准确率比较高,就可以实现点击后立即展现落地页。


04 搜索结果NA化:优化移动端搜索结果浏览体验


因为Web生态的开放性,所以在用户搜索和浏览过程中,会有很多站点参与其中,这就要求结果页的内容具有较高的适用性和扩展性


但结果页的内容格式是基于网页的,页面的浏览及交互受限于浏览内核,导致自有搜索客户端的优势不明显


基于实现成本、可控性及影响面的考虑,对于股票外卖这类有明确需求方向的场景(对应特色搜索关键字),我们在百度搜索中进行创新尝试,使用NA自定义内容的扩展方式来增强部分搜索结果的展现,我们称这种扩展方式为搜索结果NA化


股票NA化案例:

使用双层视图的方式扩展,底层是通过搜索框架加载的结果页,上层是通过股票NA的容器加载的股票内容页,两个视图之间可以切换。首次对结果页进行加载时,可以自动调用端能力(客户端扩展的能力,在网页中可调用)展现股票NA的视图,如图4所示。


图4 股票NA化


外卖NA化案例:

使用同层视图的方式定制。视图的上半部分为外卖NA视图,下半部分为浏览内核。NA视图内部可上下滑动,当滑动到底部后,框架根据用户的操作把当前活动的视图切换为浏览内核;反之,当前视图为结果页并向上滑动时,可以再切回外卖NA视图,如图5所示。


图5外卖NA化


相较于传统的网页格式结果页,NA化在性能和用户体验等方面均有明显优势。例如,更好的视觉效果和流畅度提升了用户整体的浏览体验,使得用户的使用时长提升。


这一阶段的整体的技术方案是在原有结果页框架的基础上进行扩展,在客户端实现网页内容+自定义内容的混合渲染,并通过端与云的协同实现结果页的差异化定制


05 搜索异步化:优化搜索核心指标


NA化的搜索结果页在通用性及扩展性方面存在不足。


搜索业务的历史积累较多,从面向浏览器服务进化为面向NA化服务,不是做几个NA化的场景这么简单,还需要考虑浏览器的生态


NA化的工作告一段落后,要做的是优化用户在结果页上的体验,目标是优化页面的加载时长


仔细研究搜索结果页会发现,用户在搜索不同的关键字时,页面中总会有一些资源是相同的,不受具体的关键字影响。如果提前加载这些基础资源,那么在用户发起搜索时,仅需加载与关键字相关的资源,这样就可以减少页面加载时间。


考虑到这一点,团队的前端人员开发了一套异步搜索框架。应用这套框架的前提是客户端需要提前创建一个浏览内核(单浏览内核),预先加载这个异步搜索框架。异步搜索流程如图6所示。


图6 异步搜索流程


但单浏览内核架构有一个局限,如图1-7所示,异步搜索框架或其他页面只能加载一个。如果用户再次发起搜索就只能采用同步的方式,即异步搜索的覆盖率没有达到预期。


图7 异步搜索框架被落地页覆盖


这个阶段的端与云的协同优化,不仅关注功能的构建,还开始兼顾核心指标的优化


06 多容器管理:突破单浏览内核的限制


解决异步搜索覆盖率问题的理想方案是在页面加载落地页时,创建一个新的浏览内核来加载异步框架。


但是这种方案实现成本较高且不能保证搜索和浏览体验的统一,需要新的技术架构来支持,即多容器管理框架


多容器管理框架由框架层确定容器化的标准,统一管理容器的生命周期和事件,并根据业务、性能等目标进行合理调度,支持不同容器接入。


我们还构建了容器内存/磁盘缓存管理机制,以及预创建、预加载、预渲染等优化策略,在效果体验及资源消耗方面实现了较好的平衡。


多容器管理框架核心能力如图8所示。


图8 多容器管理框架核心能力


将原网页浏览相关功能升级为网页容器,在多容器管理框架中,可创建多个网页容器。当一个网页容器被使用后,可再创建一个新网页容器来加载异步搜索框架以支持搜索。


对比原单浏览内核管理框架,多容器管理框架在异步搜索方面的转换率有明显的提升。


在这个阶段,多容器管理框架像一个简版的操作系统,支持搜索业务的全流程优化。


07 变体发布:多App复用搜索能力


多容器管理框架上线之后,不同类型的内容可通过较低成本接入,团队的并行研发效率得到了改善。每个容器在各自的模块内独立达代,相互影响较小。


时间到了2020年,各大厂均在构建自家的App矩阵,以超级App为中心孵化出一批矩阵App,如京东极速版、头条极速版、快手极速版等。这些矩阵App不仅具备主线App的核心能力,甚至还会有一些定制化功能


百度App也需要孵化矩阵App,但矩阵App复用百度App功能模块的成本较高。和传统的模块复用方式不同,App级的复用需要技术架构层提供支持。


我们当时提出了变体发布的思路,即一个App可以通过工程化的配置实现功能快速裁剪和低影响面的差异化定制,主要实现方式包括技术分层容器化插件化动态化接口与实现分离等


通过这个思路,矩阵App单次同步主线App功能的耗时下降了70%以上。支持变体发布的App架构如图9所示。


图9 可变体发布的App架构


总结:搜索客户端的价值


在20多年前的个人计算机时代,搜索引擎通常基于Web生态构建,用户不需要专门的搜索类客户端产品,使用浏览器即可免费享受搜索服务。


而当搜索引擎的服务有了自建客户端的支持,搜索及浏览的体验就成了可控的,此时第三方的内容质量问题也可以被识别并干预,这时相当于搜索全流程是可控的,如图10中的灰色区域所示。

图10 浏览器(左)和搜索客户端(右)中搜索体验的可控性示例


同时,因为有搜索客户端产品的文持,从输入关键字到展现结果页,再到打开落地页,每一步都可以定向优化,这拉开了与其他搜索产品的差距。


图11列出了搜索客户端对搜索业务研发的正向影响。不断地创新及优化端与云的协同,可以为用户提供更好的搜索体验。


图11 搜索客户端对搜索业务研发的影响


本文摘编自《搜索架构之道:App中的搜索系统设计与优化实践》,经出版方授权发布,转载请保留文章来源。


《搜索架构之道:App中的搜索系统设计与优化实践》是一本以搜索业务为主线,深度解读超级App构建与优化的策略、流程、方法、技巧和作者近20年心得精华的著作。本书覆盖了App从诞生到成为超级App的过程中技术架构层面所面临的所有核心挑战及其解决思路。


作者简介

刘俊启,百度前资深研发工程师、百度前App架构师、百度前OC&Swift编码委员会主席、腾讯研发工程师,国内App研发先行者。2005年入职盛大·数位红,参与了Game-V(中国第一个无线游戏娱乐运营平台)的研发工作(NOKIAS60平台)。之后作为初创团队成员,负责多款S60平台的App研发。2009年开始转战iOS平台,负责推进公司产品技术栈向iOS平台迁移。


  • 本文来源:原创,图片来源:原创、AI配图

  • 责任编辑:王莹,部门领导:宁姗

  • 发布人:白钰

IT阅读排行榜 技术圈的风向标,有趣,有料,有货,有品又有用
评论
  • 在谐振器(无源晶振)S&A250B测试软件中,DLD1到DLD7主要用于分析晶体在不同驱动功率下的阻抗变化。此外,还有其他DLD参数用于反映晶振的磁滞现象,以及其频率和功率特性。这些参数可以帮助工程师全面了解KOAN晶振在不同功率条件下的动态特性,从而优化其应用和性能。磁滞现象晶振的磁滞现象(Hysteresis)是指在驱动功率变化时,晶体的阻抗或频率无法立即恢复至初始状态,而表现出滞后效应。1. DLDH: Hysteresis Ratio (MaxR/MinR)在不同驱动
    koan-xtal 2024-12-26 12:41 85浏览
  • 概述 Intel 要求用户为其10代FPGA器件使用特定的上电和掉电顺序,这就要求用户在进行FPGA硬件设计的时候必须选择恰当的FPGA供电方案,并合理控制完整的供电上电顺序。经过在Cyclone 10 GX测试板上实际验证,统一上电确实会导致FPGA无法正常工作,具体表现为JTAG接口无法探测或识别到目标器件。上电顺序要求 Cyclone 10 GX,Arria 10以及Stratix 10系列器件所有的电源轨被划分成了三个组合,三组电源轨要求依次上电,如图1所示,为三组电源轨上电顺序示意图。
    coyoo 2024-12-25 14:13 59浏览
  • 全球照明技术创新领航者艾迈斯欧司朗,于2024年广州国际照明展览会同期,举办【智慧之光】· 艾迈斯欧司朗-照明应用研讨会,以持续的技术创新,推动光+概念的全面落地。现场还演示了多款领先照明技术,且由资深工程师倾情解读,另有行业大咖深度洞察分享,助你开启“光的无限可能”探索之旅!精彩大咖分享引领未来照明无限遐想艾迈斯欧司朗精心准备了照明领域专业大咖的深度分享,无论是照明领域的资深从业者,还是对照明科技充满好奇的探索者,在这里,您都将大有所获。在艾迈斯欧司朗照明全球产品市场VP Geral
    艾迈斯欧司朗 2024-12-25 20:05 59浏览
  • 据IDTechEx最新预计,到2034年,全球汽车舱内传感(In-Cabin Sensing,ICS)市场将超过85亿美元。若按照增长幅度来看,包含驾驶员监控系统(DMS)、乘员监控系统(OMS)、手势控制和生命体征监测等高级功能在内的舱内传感市场预计2020年到2034年将增长11倍。感光百科:ICS中的光源选择01、政策推动带来的“硬”增长作为其中的增长主力,舱内监控系统应用(包含DMS和OMS等)被推动增长的首要因素正是法规。据统计,中国、欧盟、美国、韩国、印度等主要汽车国家或地区已推出相
    艾迈斯欧司朗 2024-12-25 19:56 73浏览
  • RK3506是瑞芯微Rockchip在2024年第四季度全新推出的Arm嵌入式芯片平台,三核Cortex-A7+单核Cortex-M0多核异构设计,CPU频率达1.5Ghz, M0 MCU为200Mhz。RK3506平台各型号芯片该怎么选,看这篇文章就够了。RK3506各型号RK3506有3个型号,分别是RK3506G2、RK3506B、RK3506J,配置参数如图: 配置差异解析总的来说,RK3506各型号间的差异主要体现在内存、工作温度和封装上‌:内存差异‌:RK3506G2‌集成
    Industio_触觉智能 2024-12-25 10:27 41浏览
  • “金字招牌”的户外叙事。2024年的夏天似乎异常炙热,体育迷们的心跳也随之澎湃,全球瞩目的体育盛宴——巴黎奥运会在此刻上映。在这个充满荣耀与梦想的夏天,我们见证了无数激动人心的瞬间:男子4X100米混合泳接力决赛中,潘展乐的最后一棒,气壮山河,中国队的历史性夺冠,让整个泳池沸腾;射击10米气步枪混合团体决赛,黄雨婷和盛李豪的精准射击,为中国队射落首金,展现了年轻一代的力量;乒乓球男单四分之一比赛中,樊振东的惊天逆转令人难以忘怀,凭借坚韧不拔的意志和卓越的技术,成功挺进半决赛,并最终夺冠……在这一
    艾迈斯欧司朗 2024-12-25 19:30 73浏览
  • 引言  LIN(Local Interconnect Network)是一种针对汽车电子系统应用的串行通信协议,主要用于汽车电子控制单元(ECU)之间的通信。LIN总线的特点是成本低、速率低、通信距离短、连接节点少,主要用于对带块要求低、实时性要求不高的控制任务,例如车门控制、天窗控制、座椅控制、车内照明等功能。LIN总线采用的是主从式架构,由主节点基于调度表调度网络中的通信。  LIN总线的错误类型  尽管LIN协议设计简单,具有低带
    北汇信息 2024-12-25 14:18 69浏览
  • 今年AI技术的话题不断,随着相关应用服务的陆续推出,AI的趋势已经是一个明确的趋势及方向,这也连带使得AI服务器的出货量开始加速成长。AI服务器因为有着极高的运算效能,伴随而来的即是大量的热能产生,因此散热效能便成为一个格外重要的议题。其实不只AI服务器有着散热的问题,随着Intel及AMD 的CPU规格也不断地在提升,非AI应用的服务器的散热问题也是不容小觑的潜在问题。即便如此,由于目前的液冷技术仍有许多待克服的地方,例如像是建置成本昂贵,机壳、轨道、水路、数据中心等项目都得重新设计来过,维修
    百佳泰测试实验室 2024-12-26 16:33 73浏览
  • 本文介绍瑞芯微RK3588主板/开发板Android12系统下,APK签名文件生成方法。触觉智能EVB3588开发板演示,搭载了瑞芯微RK3588芯片,该开发板是核心板加底板设计,音视频接口、通信接口等各类接口一应俱全,可帮助企业提高产品开发效率,缩短上市时间,降低成本和设计风险。工具准备下载Keytool-ImportKeyPair工具在源码:build/target/product/security/系统初始签名文件目录中,将以下三个文件拷贝出来:platform.pem;platform.
    Industio_触觉智能 2024-12-26 09:19 108浏览
  • 本文介绍瑞芯微开发板/主板Android系统APK签名文件使用方法,触觉智能EVB3588开发板演示,搭载了瑞芯微RK3588芯片,各类接口一应俱全,帮助企业提高产品开发效率,缩短上市时间,降低成本和设计风险。系统签名文件生成APK系统签名文件,具体可参考此文章方法RK3588主板/开发板Android12系统APK签名文件生成方法,干货满满使用方法第一步,修改APK工程文件app/src/build.gradle,并添加以下内容: android {     na
    Industio_触觉智能 2024-12-26 09:20 76浏览
  • 新能源汽车市场潮起潮落,只有潮水退去,才能看清谁在裸泳。十年前,一批新能源汽车新势力带着创新的理念和先进的技术,如雨后春笋般涌入中国汽车市场,掀起一场新旧势力的角逐。经历市场的激烈洗礼与投资泡沫的挤压,蔚来、理想、小鹏等新势力车企脱颖而出,刷爆网络。不曾想,今年新势力车企杀出一匹“超级黑马”,爬上新势力车企销量榜前三,将蔚来、小鹏等昔日强者甩在了身后,它就是零跑汽车。公开数据显示,11月份,零跑汽车实现新车交付量约4.02万辆,同比增长117%,单月销量首次突破4万辆;小鹏汽车当月共交付新车约3
    刘旷 2024-12-26 10:53 116浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦