百度垂类离线计算系统发展历程( 三 )


调度层:通过根据流量形式的扩缩容,保证后续服务可以自动化的进行服务操作 。
下面重点介绍一下 服务层的主要内容,对业务来说主要包含两部分:
极致抽象的业务框架:是核心框架基础中的基础,提供新的开发范式同时,为后续智能调度奠定良好基础 。
高度复用的基础服务:强大丰富的后端服务能力封装,支持业务低成本复用,降低开发成本同时提升稳定性 。同时系统还提供强大的编排能力,低成本支持业务从简单到复杂的发展 。
极致抽象的业务框架
业务框架作为FaaS层和业务代码的载体,是整个业务逻辑的代码框架 。框架本身维护数据流语义,面向有向无环图(DAG)的数据流,调用业务函数代码 。业务框架是面向有向无环图的数据流实时计算,基于公司基础的数据流框架支持完备的流式计算语义,结合业务场景需要功能构建出业务框架:

百度垂类离线计算系统发展历程

文章插图
如上图左边就是用户实际的执行代码,对于函数的接口定义:入参和返回值都是Dict类型 。业务的代码逻辑直接在函数中实现,需要变更的数据,如上图所示业务在根目录下增加了一个时间戳字段,然后把更新后的结果传递给下游 。
业务端使用开发成本低的脚本语言进行开发(例如Python/ target=_blank class=infotextkey>Python),基础服务框架使用C++实现,结合数据压缩、批处理、数据预分发等机制,使得业务可以在简化服务框架开发同时优化服务运行性能 。通过架构层面的优化策略来达到服务性能和开发成本的平衡 。
高度复用的基础服务
业务依赖的后端服务,包括多媒体长留服务,数据存储服务,策略计算等十项服务能力,所有的服务架构的支持目标都是通过简单配置、少量代码的方式进行服务接入 。
架构通用能力:包括索引处理(倒排、正排、向量索引),数据审核(政治敏感数据/色情数据识别&过滤),多路分发、数据建库等能力 。
与业务联合研发的能力:数据的低质过滤能力(实现数据清洗/归一化/数据去重/类目拼接),数据多元融合,数据质量打分计算(质量打分/作弊识别/物料打分) 。
基于公司强大基础能力: 多媒体处理服务(外链转内链/OCR/水印计算/重复图计算/主体识别/视频转储等),自然语言处理服务,数据沉淀服务 。
支持的基础服务(BaaS服务)主要是两个特点: 简单稳定 & 充分集成公司内其他优质能力 。用户通过SDK调用、算子复用和数据流复用等方式直接进行能力复用,完全不需要进行服务的部署和管理,服务易用性、稳定性由搜索中台来处理 。使用任何服务后端都可以收口在一个地方,避免业务频繁跟多个服务团队进行交流处理,极大降低业务使用成本 。业务最开始接入通常只需要简单的少数功能(例如,修改部分字段的信息),多数业务直接用我们提供的平台化的开发模板即可完成开发 。但是随着业务的逐步深耕,业务逐步使用,业务会向复杂逐步过渡,例如搜索中台某业务通过复用数十种能力的组合使用,建设出具有深度定制的数据系统 。
百度垂类离线计算系统发展历程

文章插图
3.4 数据智能架构
如上文中3.3 表述已经很大程度上解决业务接入效率的问题并且在资源的使用效率上实现根据流量的扩缩容实现的资源极大程度的节省,业务的app的数量已经发展到上千个,业务对于效率、成本、服务质量提出来更高的要求 。至此已经构建出,从业务层、逻辑层、服务层、控制层的四层架构,实现离线计算系统从指令式计算系统到声明式计算系统的彻底转变 。
百度垂类离线计算系统发展历程

文章插图
3.4.1 业务特点
  • 效率业务的迭代开发很多都是针对少数几个字段,但是当前业务同学仍然需要了解服务全拓扑才能开发 。
  • 随着业务复杂深耕业务的开发迭代业务开发者出现多语言开发情况来提高服务的开发和执行效率 。
  • 业务如何实现新类目的快速接入、在不了解全面的情况下快速迭代 。
  • 计算引擎执行效率更高,用更少的资源计算跑更多的服务资源 。
  • 业务问题能不能快速定位&发现以及问题的自动处理 。
3.4.2 核心思路
从设计思路来看当前系统架构是上一代架构的拓展: