百度搜索引擎优化( 百度搜索中台支撑多元业务场景,预计阅读时间15分钟)
优采云 发布时间: 2022-01-02 07:13百度搜索引擎优化(
百度搜索中台支撑多元业务场景,预计阅读时间15分钟)
指南:
根据 Gartner 的研究,应用程序开发需求市场的增长至少是 IT 交付能力的五倍。预计到 2025 年,70% 的新应用开发将使用低代码技术。我们需要探索在需求迭代越来越频繁、对创新能力要求越来越高的背景下,如何利用技术手段降低成本、提高效率、提升业务发展质量,从而更高效地实现产品创新。百度搜索平台支持多种业务场景,业务形态丰富,对卓越性能有极致追求。本文从寻找中台业务开发者面临的困难和挑战入手,分析原因,探索低代码的一些解决方案。
全文5988字,预计阅读时间15分钟。
一、关于低代码
低代码是软件系统的快速开发工具。开发者无需编码即可实现常用功能,只需少量代码即可完成功能扩展,方便应用的构建。随着企业数字化需求的快速增长,传统软件开发方式生产效率低成为制约企业数字化转型的主要矛盾,低代码开发迅猛发展。与传统的软件开发模式和工具相比,低代码开发的开发门槛更低,研发效率更高;与其他快速开发工具相比,低代码具有更高的可扩展性,能够满足复杂场景的核心开发需求。研发效率一直是各大互联网公司关注的焦点。随着近几年的探索和发展,市场上出现了很多低代码平台,低代码也越来越受到关注。
目前业界的低代码框架主要解决通用领域的通用需求。您可以拖放组件来创建集成的前端和后端应用程序。主要用于BRM(业务规则管理)、ERP、CRM等系统的快速开发。研究与开发。但是这种方法不适合专业领域的中后端开发者。他们面临着复杂多样的场景。他们的重点是如何维护已经达到十万甚至百万的代码,如何快速迭代和优化策略。实现业务的可持续增长,如何管理和保证服务的稳定性等。如果低代码工具只能创建有接口的数据库应用,支持简单的工作流场景,对后者不会带来实际帮助。
搜索众泰从业务场景和业务痛点出发,基于行业低代码理念,对复杂的后端系统进行了低代码探索和实践。员工要想做好本职工作,首先要磨砺工具,希望通过创造新的生产力工具更高效地实现产品创新。
二、我们面对的场景
搜索平台为业务提供了两种访问方式。一是用户能够以可配置的形式进行定制,然后使用提供的API接口接入平台,二是允许用户用代码进行开发,部署服务的形式在众泰内部系统中定制为实现高度灵活的产品逻辑。前者更接近于“无代码”,但扩展性和灵活性不足以应对一般需求。对于后者,我们在众泰系统中提供了一个应用引擎(以下简称Search-AE),可以直接进入业务进行开发。通过代码自定义检索需求,满足更灵活的业务场景。
随着深度业务场景的爆发式增长,大量应用开始涌入Search-AE,目前收录200+独立业务系统。在高速迭代、需求快速增长的情况下,效率面临的问题越来越突出:
总的来说,我们要解决的问题是:如何开发更快——写更少的代码,更快的上手——系统容易理解,交付更快——整个过程操作简单。
三、思考与目标
业内一些低代码平台主要针对前端场景需求,将页面元素封装成通用组件,用户通过拖放这些组件实现页面形状定制。搜中泰面临的中后台场景,但要解决的问题和思路非常相似。从各个业务的实际情况来看,虽然最终的检索场景不同,但执行的功能流程有一定的相似性。如果我们提取通用功能,业务可以通过组合这些通用功能来满足需求。可以显着提高效率。同时,这些通用能力是标准化的,业务可以按照标准规范进行开发,开发生态易于共享和使用。对于一般运营商无法满足的业务场景,大家会增加更多的通用组件,类似的需求下次还会来。是时候见面了。
统一业务框架:图引擎和图排列
我们的解决方案是使用图形引擎来驱动业务逻辑的执行。通用能力和定制能力都以算子的形式提供,业务就是将这些算子以DAG图的形式连接起来。图本身没有一套固定的流程,运营商之间的连接和使用完全由业务场景决定,所以即使是完全差异化的业务也可以使用图引擎来构建系统。此外,图形和运算符定义了一组标准规范。所开发产品的功能以运算符的形式对外暴露,运算符是可插拔的,可以方便地在服务间复用。
然而,只有图形引擎是不够的。我们需要让运营商在业务的使用下快速沉淀:企业愿意共同构建通用运营商,并且这些运营商可以与业务充分共享,即每个人都可以方便地查看和使用这些通用运营商。使用图形布局工具,可以将这些算子以平台化的形式呈现出来,研发学生可以快速查看所需的功能算子,还可以使用可视化的拖放式低成本配置。
构建图形布局工具的另一个非常重要的出发点是:我们希望帮助培养学生通过可视化图形快速理解业务系统。这张图不仅是系统实际运行的*敏*感*词*,也是一个流程图,可以帮助快速了解系统的执行情况。在我们使用图表布局进行可视化之后,图表本身是不言自明的。 R&D 学生可以在图表中添加备注。该图相当于一个与代码同步的自然文档。对于一定规模的业务,通过“图形文档”来理解系统比阅读源代码更快、更自然、更容易理解。
全流程一站式研发
除了代码开发的改进,我们希望有一套统一的工具来提高整个研发过程的效率:在地图布局的基础上构建一个一体化的开发平台,并集成研发过程的单点能力 横向整合和拉通。业务开发人员在研发过程中无需学习连接各种开发工具或平台,所有的研发工作都集中在一套工具中。同时,这套流程是标准化的。以往研发过程中的所有飞线技术栈都可以统一,可以使用更加高效便捷的标准化解决方案。有一些方法和工具可以提高业务效率,也可以存放在这套工具中,一起构建。
四、Nimbus 低代码平台设计与实践
我们在iCoding(公司代码开发IDE)的基础上搭建了Nimbus低代码平台,所以Nimbus自然具备IDE收录的代码开发、编译和调试的基本能力。对于用户来说,整个研发过程可以在IDE内部完成,无需与外部工具系统接口,提供了极大的便利。我们将整个研发过程分为环境准备、开发、预览调试、测试、发布运维五个阶段。在每个阶段,Nimbus 都组装了合适的工具来降低开发者的研发成本。
一键生成在线同步开发环境,开箱即用
在工程业绩部同事的支持下,我们搭建了一个开箱即用的云开发环境。业务开发者可以在代码仓库中一键申请开发镜像,后台会在云端拉起一个Docker容器。 iCoding 服务器正在容器中运行。可以使用浏览器连接开发镜像,也可以使用iCoding客户端连接。
镜像收录代码库、开发过程中的所有工具、服务编译运行所需的所有依赖包、在线同步服务配置字典。业务开发者无需额外配置即可直接开始开发。同时,所有用户的开发环境完全相同,不会受到系统、SDK、配置不同导致的问题的影响。当用户长时间未连接开发镜像时,镜像会自动挂起空闲,节省机器成本。镜像也可以分享给其他用户,方便排查问题。
在打包镜像的过程中,我们发现有很多应用依赖。如果把这些依赖放到镜像中,就会导致镜像过大,不仅会影响镜像的启动时间,还会造成机器的大量磁盘空间。压力。初期我们把这些依赖全部放到NFS中,通过镜像中的fuse挂载,但是业务无法修改这些依赖,在一些场景下用户体验不好。我们基于Overlayfs虚拟了一层联合文件系统。用户看到的只是一个普通的文件系统目录,可以随意修改和替换。实际的文件系统收录两层合并的内容。下层指向公共NFS集群,收录所有依赖文件,实时在线更新。 Upper层指向镜像的工作目录。用户可以修改Lower 层的文件。之后会自动移动到上层,下层原创数据不受影响。使用Overlayfs后,我们的镜像拉起来非常快,大部分依赖都是远程放置的,开发镜像只需要5秒。
可视化拖放操作,快速构建复杂场景
在开发过程中,用户可以在Nimbus中打开图形布局工具进行拖放操作。每个算子都会有详细的描述信息,如名称、类别、用途、属性等,这些信息在代码中以注解的方式声明,图布局工具会扫描这些算子代码,读取对应的注解信息,将其添加到操作员仓库中。业务拓展同学可以在图表布局中浏览或检索操作员仓库中的操作员,拖拽构建合适的业务场景执行图。拖拽后,图的连接配置会直接保存到业务代码库中,下次打开可以重新加载。
在图形布局工具中,我们还增加了一些交互,提醒研发学生在图形中添加关于算子和边的详细注释,以帮助其他学生基于图形快速了解系统。某些领域的问题可能具有相当的复杂性,用图片表示并不直观。我们提供了子图片的功能,可以将图片与图片关联起来。开发者可以双击在地图布局中跳转,也可以通过Peek功能快速查看子地图的结构。对于复杂的业务场景,研发学生可以使用子图来逐步理解系统。
Nimbus 是在IDE 的基础上设计的,所以图表布局可以和代码开发紧密相连。双击图中的操作单元可以直接跳转到具体的代码实现,方便用户实际开发。调试和分析功能也集成在图形布局中。用户可以在图中任意一个算子上添加断点,查看输入输出,也可以观察整个图的执行状态。各阶段耗时,通过图的执行过程快速掌握业务逻辑。
在实际使用过程中,我们和业务同学将一些最佳实践和经常出现的业务场景抽象为通用图模板。这些通用的图形模板可以直接在Nimbus中打开,业务可以在这些模板的基础上进行自定义,为构建新场景时提供有用的参考。
免配置端到端效果调试,更人性化
预览和调试过去一直是个麻烦的问题。系统的链接和模块过于复杂,尤其是对于新手来说。这是一个很大的挑战。 Nimbus 提供了强大的预览工具,支持直连请求和端到端的效果调试。我们和QA同学搭建了沙盒环境,完整复现了线上线上模块,并保持与线上模块同步更新。在端到端调试过程中,Nimbus 会将请求转发到沙箱环境。当请求一个正在开发的业务模块时,沙箱环境会拦截该请求并将其转发给实际的开发调试服务。新效果预览模式下预览环境的大部分模块使用公共服务,显着节省机器成本,同时节省环境部署和同步更新的人工成本。
在调试过程中,我们也可以通过Nimbus进行可观察性分析,比如日志记录、追踪等。 Nimbus还开放了IDE的实时调试功能,支持用户快速调试代码断点。
现代测试工具集,专注于测试本身
过去,测试过程主要是由人来驱动的。研发学生完成自测后,QA学生需要在测试环境中部署服务。由于依赖较多,部署过程需要RD和QA反复沟通对接,建立完整的测试环境。 Nimbus 连接到一组公共测试集群。开发完成后,学生可以一键部署仿真实例。仿真实例通过离线Paas平台进行部署。环境与线上基本一致,可用于性能压力测试、效果验证等,同时Nimbus支持自动化回归测试。我们会定期记录在线流量。当自动回归启动时,Nimbus 会自动部署基线实例和测试实例,并发送记录的流量以生成差异和性能报告以评估在线风险。
智能容量管理,快速适应业务变化
Search-AE混入了大量业务模块,高峰期QPS达百万级,业务的容量规划已经难以处理。搜索流量本身变化快,加上业务迭代频繁,需要反复进行线下压测来评估合适的部署方案。同时,线上也在不断变化,之前合适的部署方案可能会因为上下游的变化而造成资源不足或浪费。过去,在线容量问题一直需要研发和运维关注。我们希望在 Nimbus 中,我们可以从全局角度管理在线容量,让商科学生只需要专注于实际的代码开发。
智能容量管理要解决的问题是在满足稳定性要求的前提下,确定每个服务的部署方案,让search-AE整个集群消耗最少的资源。智能容量管理的处理包括三个阶段:触发、分析和决策。触发阶段包括三种情况:一是业务迭代变化时触发容量分析,二是触发持续在线轮换服务分析,三是实际在线资源使用量达到一定水平时触发快速分析。分析阶段的主要数据输入包括:
仿真实例与在线一致,分步QPS压力测试下的资源占用和速度SLA曲线。
当前和历史 QPS 以及耗时数据。
当前和历史资源使用负载指示器。
通过这些数据分析系统,综合判断服务是否需要改变部署安排,最终通过底层调度引擎触发服务调整。过去,大多数容量变化都依赖于人来进行评估和调整。有了这套工具,在线服务的部署和调整就可以自动化了。
五、总结与展望
业务创新正在加速。在需求越来越多、迭代越来越多、对创新能力要求越来越高的背景下,如何通过技术手段为业务发展取得突破,降低成本、提高效率、提高质量,也是搜索中台的难题。是很多产品开发平台需要思考和解决的。从业务场景和业务痛点出发,借鉴行业低代码理念,搜众泰对低代码复杂后端系统进行了深入探索和实践,形成了一套技术思路、系统能力, 和业务运营。我们可以借鉴可复用复杂的后端系统低代码方案。整个解决方案包括 3 个关键组件:
基于图引擎&通用模板通用算子和业务微定制算子,构建低代码能力引擎,帮助企业少写代码
打造低代码集成平台,通过能力集成和可视化开发实现研发过程的全生命周期管理,助力业务高效交付
重视用户培养,营造共创氛围,推动创新生产力工具的应用、推广和共建,助力低代码现代生产力工具在实战中快速成长
低代码集成平台Nimbus自正式发布以来,在多个业务中取得了显着的效益,获得了早期用户的较高满意度和良好口碑,验证了复杂业务场景的低代码实现降低成本,提高效率,提高质量 切实可行。它是一套工具和一套标准。我们希望创建一个开放的共创生态系统。基于这套标准,无论是前台还是中台同学,都可以积累更多的通用运维、研发能力、应用案例和实践经验等,而这些都可以支持我们进一步向低代码、高代码迈进。效率。在低码征程上,我们已经扬帆起航,将继续乘风破浪,勇往直前。希望中台低码搜索一体化平台能够广泛应用,深入人心,推动多元化业务高效、优质、低成本的敏捷迭代,让更多为加速业务创新和发展做出贡献。
技术原创与架构实践文章,欢迎通过公众号菜单“联系我们”投稿。
高可用性架构
改变互联网的构建方式