Skip to content
forgivedengkai edited this page Feb 17, 2020 · 13 revisions

简介

fate-serving是FATE的在线部分,在使用FATE进行联邦建模完成之后,可以使用fate-serving进行在线联合预测。 **目前的文档只适用于1.2以上版本 **

部署架构

fate-serving 的部署架构图如下 fate-serving-infrastructure.jpg

如上图所示,整个集群需要有几个组件

  • serving-server
  • serving-proxy(1.2版本之前为serving-router)
  • zookeeper
  • redis

接下来将逐一介绍各个组件的作用

serving-server

serving-server用于处理所有的在线预测请求、以及模型加载请求。serving-server需要从fate-flow加载模型成功之后才能对外提供服务。在FATE中建好模型之后,通过fate-flow的推送模型脚本可以将模型推送至serving-server。

推送成功之后,serving-server会将该模型相关的预测接口注册进zookeeper ,外部系统可以通过服务发现获取接口地址并调用。同时本地文件持久化该模型,以便在serving-server实例在集群中某些组件不可用的情况下,仍然能够从本地文件中恢复模型。

部署serving-server时,可以根据实际业务请求量来动态扩缩容。
serving-proxy

serving-proxy 是serving-server的代理,对外提供了grpc接口以及http的接口,主要用于联邦预测请求的路由转发以及鉴权。在离线的联邦建模时,每一个参与方都会分配一个唯一的partId。serving-proxy维护了一个各参与方partId的路由表,并通过路由表中的信息来转发请求。路由表的配置参考路由表

部署serving-proxy时,可以根据实际业务请求量来动态扩缩容,可以根据业务系统的特点,来选择负载均衡的方式 ,比如在serving-proxy前面部署nginx作为http/grpc的反向代理
zookeeper

zookeeper用作注册中心,各组件启动后将自身提供的接口注册至注册中心

redis

redis 目前主要用在guest端,用于缓存预测结果。

源码打包部署

fate-serving 使用mvn作为jar包管理以及打包的工具,在打包前必须满足几个先决条件:

  • 安装jdk
  • 有良好的网络
  • 已安装maven

具体可以参考打包部署

FATE 与fate-serving的交互过程:

image

  • 第一步FATE离线建模,具体可参见FATE
  • 第二步有FATE_FLOW推送加载模型的命令至FATE-SERVING,具体可参见推送模型
  • 第三步是FATE-SERVING收到加载模型命令后,加载模型并持久化,具体可参见模型相关接口详解
  • 第四步FATE-SERVING 注册预测接口至zookeeper,正式对外提供预测接口。预测接口例子可参见在线预测接口