算法业务平台目的为了快速构建算法线上服务,快速进行业务迭代,实现业务效果提升优化用户体验。平台包含线上服务、数据、算法以及数据分析几个大的部分。本文内容主要介绍偏向于在线服务工程,系统设计目标围绕提升研发效率展开,通过 API方式向应用人员提供能力,系统通过不断完善和优化 api 来实现能力不断升级。
整个业务算法需求灵活多样,需要快速迭代去满足线上业务需求,整个算法业务平台要通过架构设计实现提质提效,通过改变算法研发与工程研发之前合作模式达成两方的完全解耦,降低相互之间沟通成本,大幅度提升业务场景研发迭代效率,具体架构实现方式是通过 api 方式提供能力给算法研发同学,通过合理清晰的api,算法工程师能基于平台快速构建场景算法服务,并可基于平台对场景持续进行迭代。
系统本身要可靠、稳定,可靠、稳定是优质用户体验基石,是服务于线上多个场景基础,稳定是系统根本性要求,稳定性一是系统架构设计与实现,再有就是要有严格变更上线流程,变更前、中、后严格的流程规范,通过架构设计与严格的构建流程才能实现高质量软件平台。
系统本身高可用采取微服务集群、多机房架构,同时存储本身也采取分布式多机房架构,全链路高可用才能确保整个服务高可用,在6.18、11.11大促突发流量场景下,系统设计支持多层级降级措施,能够根据实际流量负载情况进行调控,平衡系统稳定性与算法实际效果,也支持过载保护,超出系统负载请求部分流量走简单策略逻辑。
系统主要功能模块介绍
前边介绍了系统设计原则与规范,下面分享一下平台主要包含模块:api 向外系统平台能力;召回引擎子系统设计目标,用最低延迟召回大量user-item、item-item多维度内容丰富的数据;排序引擎子系统支持常见机器学习与深度学习实时模型线上应用;元信息中间件子系统采用异步化方式传递不同模块件交互协议信息,降低IO;特征上报子系统,抽象化实现方式,支持超大规模数据准实时上报。召回引擎与排序引擎合起来构成标准引擎,元信息是提升系统间信息流转效率,特征上报是上报信息提供作为模型训练的一条数据链路,AB实验平台是线上服务持续迭代基础。
召回子系统架构设计采取两阶段进行,第一阶段召回画像,画像由用户行为与分类、素材关系构成,不同的分类和素材构成多种类型,每种类型进行一种抽象,不同类型采取独立实现方式。第二阶段召回特征,特征分用户维度、品类维度、素材维度、用户与品类交互维度等。两阶段召回采取并行异步方式拉取,减少IO阻塞等待,提升系统并行度,充分利用多核资源,降低延迟,大幅度提升召回效率。
召回这块架构迭代次数较多。尝试了很多优化方式,取得了一定效果,但是每一种也都会带来一定问题,例如:1、比如多线程能提升并发,但是过多线程会导致性能下降,过高的cpu负载但cpu使用率很低,在某些场景下甚至影响服务稳定。2、服务拆分本身可以增加很多计算量以及解耦,但如果服务之间传输数据特别多,时间都消耗在IO传输上,这点如果时间太长,拆分的优势就没了,所以要进行综合权衡设计。经过前边多版本迭代,最终采取目前基于CompletableFuture 的异步并行方式。好处可以明显提升召回并行度,通过并行方式提升召回量,异步同时可以避免系统阻塞,减少阻塞等待可以大幅系统性能。以前经常有个问题同步系统在高并发下资源利用率上不去,系统延迟就已经很高了。异步化可以明显提升系统负载,在高并发下不会因为过多同步线程导致cpu负载上不去,提升资源利用率与系统吞吐量。
排序引擎子系统设计更多考虑是支持多种算法推断服务进行线上实时应用,排序支持Spark,TensorFlow等框架的GBDT、LR、Wide&Deep、DIN等常用模型,排序服务设计需要兼顾系统低延迟以及扩展性,能够支持多种算法进行线上实验。
元信息中间子系统是为了避免系统同步传输大量数据,带来的性能下降,采取异步方式,实现多个模块间数据流转,中间件明显增加了系统的复杂性,复杂性会使系统容易出错,但是为了满足于线上业务实时性能要求,采取异步化设计。
特征上报子系统,设计上需要考虑海量数据上报,线上业务 qps(访问量) 极大,上报数据可以有一定延迟,但是实际多个业务,时间拉长到天级别数据都是海量的,这就对数据上报提出要求当前数据当前要能上报完,不然会影响数据质量影响模型训练。这块通过特征编码与数据压缩、优化上报通道容量方式,实现海量特征实时上报能力。
系统技术架构上优化
平台本身也大量应用jdk的stream、lambda等技术,与平台需要实现逻辑非常吻合,通过合理应用相关技术,大量降低系统代码量,提升系统可维护性,这一个技术比较完美贴合实际应用场景案例。
服务都是采取无状态设计,无状态好处能够非常方便实现横向快速扩展,服务本身没有状态就需要有系统来存储状态。这个系统就是存储,目前存储采取Jimdb、Elasticsearch、Vearch等多种存储实现。通过多种存储实现 kv、向量、分词等丰富多样的召回能力。系统本身面临的都是高并发、高可用、高性能场景,需要合理精巧的库表设计,合理的索引设计,深入理解各个存储平台原理,才能更好的在实际高要求场景下进行最佳实践。
ABTest实验平台子系统,系统由三个模块构成。一个模块是ABTest配置管理平台用于管理每个ab配置相关。一个模块是ABTest实时分流服务,根据用户设备信息、用户信息进行ab分流。一个模块是实时效果分析统计,将分流后程序点击、浏览、gmv转化通过离线、实时计算技术进行统计,在平台上进行展示。通过平台实验,实现算法服务效果提升。
系统本身由多个召回引擎、排序引擎、元信息中间件、特征上报、AB实验平台子系统构成,多个子系统不是独立互不关联的系统,而是通过合理的交互协议构成的有机的统一整体,通过平台整体向外提供能力。
平台未来规划与展望
平台本身已经实际应用于多个实际业务场景,很好的支持了业务高效率迭代。系统未来演进,基于公司JDOS弹性云平台、code源码、JSS 对象管理平台进行技术架构升级,实现基于算法场景的研发、测试、上线、效果分析等全流程,通过单一平台减少操作复杂性,实现算法场景化持续集成,实现系统能力升级。