背景

看到了一篇百度搜索中台的FaaS化建设的文章,对于业务研发团队想自研Serverless有一定参考作用。

同时还提到了智能化扩缩容的问题,但感觉不需要这么复杂,和公司K8S平台聊下,调用相关弹性API就可以了,所以这里就删掉了。

搜索中台的特点

搜索中台内容计算架构支持了数十个业务线上百个检索场景,每个场景多有一定的差异性,之前这些差异性都是由业务同学自定义脚本开发独立上线。

但这些脚本存在开发成本高、维护成本高的情况,于是引入了业务框架+服务平台,实现了业务独立开发、自动部署上线,同时代码库可以复用,一定程度上解决了开发成本和维护成本的问题。

问题

目前系统架构仍存在以下问题:

  1. 学习成本大:业务框架做了抽象,业务要上手开发需要学习完整的接入规范、开发规范,但有些场景学习成本远大于上线接入成本,随着简单场景越来越多,学习成本就变成了需要解决的问题;

  2. 资源成本高:很多业务都有潮汐特征,就是每天只有一小段时间有内容计算需求,其他时间的资源存在巨大的浪费;

  3. 维护成本高:搜索自身具有一定复杂性,出现问题后排查困难,需要找到有经验的同学,进一步导致了系统维护成本高;

随着业务接入的越来越多、业务迭代越来越频繁、业务数据量越来越大,如何通过技术手段,实现开发成本、资源成本、维护成本的降低是需要解决的问题。

思路

虽然业务开发的功能千差万别,但总会有很多共性的地方。对于业务上需要定制的逻辑,可以转换成一个个的函数。共性的部分可以抽象成通用组件。通过函数的编排和组件的复用,可以乐高式的搭建出适合业务搜索与计算的系统。

业务同学可以完全聚焦于业务逻辑,减少对于高可用、高并发、高扩展这些关注,极大简化了业务开发接入成本。

由于业务流量具有明显的波峰波谷特点,深入业务层的智能化调度可以提升业务流量峰值时的扩展能力,对资源调度实现充分利用,节约了资源成本。对于复杂业务系统下的排查与恢复,可以借助于智能化手段,实时发现、分析、定位问题,使得整个系统更加稳定。

总结来说:

  1. 通过FaaS化建设,让业务从聚焦于服务粒度的研发转变为聚焦于函数粒度的研发,全面提升了业务的开发效率,实现了全系统全流程整体的业务效率提升;

  2. 通过智能化建设,让系统的容量基于流量动态调整,可以在追求更低资源成本的同时,追求更高的质量。智能化建设包括从零到一极致化的智能伸缩调度,还包括系统的多维度实时状态信息的分析与自愈;

效率提升

业务研发人员聚焦内容的变化:聚焦服务 -> 聚焦函数。

传统的研发需要关注服务、组件、数据、运行时环境等信息,函数时代只需要关注Function的表示,其他的(组件、数据、运行时环境)都不需要关注。

为实现业务研发全流程的提效,FaaS化建设包含两部分:

  1. 核心框架(FaaS本身);

  2. 业务全流程系统建设;

核心框架

核心框架是FaaS化建设的基石,对业务来说包含两部分:

  1. 极致抽象的业务框架:是核心框架的基础,提供新的开发范式同时,为后续的智能调度提供基础;

  2. 高度复用的基础框架:强大丰富的后端服务能力封装,支持业务低成本复用,降低开发成本同时提升稳定性。同时系统提供强大的编排能力,低成本支持业务从简单到复杂演进;

FaaS框架

业务框架是FaaS层代码和业务代码的载体,框架本身维护数据流语义,面向DAG的数据流,调用业务函数代码。

业务侧使用开发成本低的语言进行开发(如Python),基础框架通过C++实现,架构层面的优化策略达到服务性能和开发成本的平衡。

框架能力包括:

  • 流式计算框架:支持基础流式计算数据流语义、支持拓扑函数的编排描述,为整个FaaS提供坚实的基础底座;

  • 数据预处理:协议解析、性能优化、数据观测;

  • 进程管理&服务管理:进程管理(负责启动、维护、销毁整个子进程)、服务管理(负责初始化并维护远端RPC的client,修改超时、重试、拒绝策略等);

  • 进程同学异步数据分发:数据不丢、异常健全、下游竞争消费;

  • 业务逻辑处理:包括校验、解析、函数调用、本地优化加速几部分;

  • 数据提交:执行完后会统一推送到本地输出队列,本地队列里面信息会异步提交到远端消息队列给到后面算子消费;

高度复用的基础服务

所有基础服务的目标是通过简单配置、少量代码的方式进行服务接入。

  1. 架构通用能力:业务独有的通用能力;

  2. 基础能力:公司的各种中间件;

被封装为BaaS服务特点有两个:

  1. 简单稳定;

  2. 充分集成公司内优秀能力;

用户通过SDK调用、复用现有能力。

全流程效率提升

让业务研发聚焦于业务逻辑提升全局效率,不仅仅包括代码的开发阶段,还包括从接入、开发、调试、上线等全流程阶段,因此需要做全流程的优化提升。

  • 快速接入:权限申请流程简化;

  • 急速开发:平台完善函数内容,基于函数模板快速开发,多种函数模板,多种开发方式;

  • 快速调试:研发可以在线下环境一体化调试;

  • 问题定位:监控报警、日志;

智能化调度

通过FaaS化建设,业务全流程服务效率问题得到了巨大的改善,智能化调度则是要解决资源浪费、利用率提升的问题了。

  1. 智能化资源调度方案,节约用户资源成本,做到按需使用,有效处理流量洪峰,提高系统稳定性;

  2. 通过智能化有效处理异常问题,做到问题自动感知,快速定位、处理,降低了人力成本;

百度搜索中台的FaaS化建设和智能化建设相关推荐

  1. 技术揭秘!百度搜索中台低代码的探索与实践

    导读:据Gartner调研,应用开发需求的市场增长至少超过IT交付能力的5倍,预计到2025年,70%的新应用开发将使用低代码技术.我们需要在需求迭代越来越高频.创新能力要求越来越高的背景下,探索如何 ...

  2. 百度搜索中台海量数据管理的云原生和智能化实践

    导读:百度搜索中台将搜索核心能力赋能阿拉丁(百度搜索特型结果).垂直领域搜索.应用内搜索等场景,支撑了数百个检索场景.百亿级内容数据的检索.我们通过智能化的设计理念,在容量自动调整.数据按需存储等方面 ...

  3. 百度搜索中台新一代内容架构:FaaS化和智能化实战

  4. 百度交易中台之订单系统架构浅析

    导读:百度交易中台作为集团移动生态战略的基础设施,面向收银交易与清分结算场景,为赋能业务提供高效交易生态搭建.目前支持百度体系内多个产品线,主要包含:小程序,地图打车,百家号,招财猫,好看视频等.本文 ...

  5. 百度交易中台之账房系统架构浅析

    导读:百度交易中台作为集团移动生态战略的基础设施,面向收银交易与清分结算场景,为赋能业务提供高效交易生态搭建.目前支持百度体系内多个产品线,主要包含:小程序,地图打车,百家号,招财猫,好看视频等.本文 ...

  6. JS模拟百度搜索框和选项卡

    练习1 实现搜索框内,输入相关数字,在下方显示相关内容,模拟百度搜索,详细代码如下: <!DOCTYPE html> <html lang="en">< ...

  7. 信通院发布“2023可信AI案例 知识计算应用优秀案例”, 百度知识中台三大案例入选

    近日,中国信息通信研究院依托中国人工智能产业发展联盟.AI工程化委员会知识计算工作组公布了"2023可信AI案例知识计算应用优秀案例"名单.基于百度知识中台打造的"国能绥 ...

  8. axure选中文字变颜色_Axure实现类百度搜索原型,关键字变色

    用中继器制作筛选,使用函数变量制作关键字变色 整个步骤关键有两步: 第一步,我们要通过中继器制作好我们所需的数据库,让用户可以搜索到: 我们使用中继器进行编辑,就是希望能够通过中继器所带有的筛选功能可 ...

  9. Python 可视化近 90 天的百度搜索指数 + 词云图

    作者 | 叶庭云 来源 | AI庭云君 一.简介 在实际业务中我们可能会使用爬虫根据关键词获取百度搜索指数历史数据,然后进行对应的数据分析. 百度指数,体验大数据之美.但要获取百度指数相关的数据,困难 ...

最新文章

  1. Android drawLine 画虚线
  2. 域密码自助重置系统----绑定私人邮箱信息自助重置(一)
  3. 路由器计算机无法上网,路由器安装后电脑无法上网怎么办
  4. 新建linux 服务器初始化配置
  5. SAP Spartacus public API的概念 - index.ts
  6. Python——Django框架——django-simple-captcha(验证码)
  7. console中应用MFC类的方法
  8. 浅谈嵌入式软件的未来发展
  9. STM32DMA搬运ADC只搬了一半数据的原因。
  10. Laravel 5.4 首次搭建,从 clone 到运行成功
  11. JNi调用过程(转载)
  12. 地磅15针到9针数据线连接串口数据采集方法
  13. Android对接蓝牙打印机
  14. 他两次都没能感动CCTV却感动了我们
  15. 【K8s】部署自定义项目到K8s集群上运行
  16. 1.Hadoop简介——为什么要使用Hadoop?什么是Hadoop?Hadoop有什么作用?
  17. Linux搭建Discuz论坛
  18. 2019年诺贝尔生理医学奖揭晓 |动图展示历年生理学奖
  19. 信息安全:BYOD切忌安全过头
  20. 配网自动化WEB服务器,嵌入式工业设备联网利器——超级网口K3 V2问世!

热门文章

  1. CF990G GCD Counting(树上莫比乌斯反演,分层图,并查集)
  2. 2016-2017 ACM-ICPC CHINA-Final(EC-final) 题解(10 / 12)
  3. springboot+shiro使用权限注解问题_无法使用注解_使用注解无法跳转无权限页面
  4. smack连接openfire
  5. oracle enterprise linux 5.7,Red Hat Enterprise Linux 5.7 安装Oracle数据库
  6. 显著性图matlab,cvpr14_saliency_code 2014上的关于图像显著性区域的检测matlab代码。 271万源代码下载- www.pudn.com...
  7. 【Python学习笔记】注释,代码块,多行输出,忽略转义符的输出
  8. Bootstrap表单验证插件bootstrapValidator使用方法整理
  9. Android 中View的绘制机制源代码分析 三
  10. Python学习十四:filter()