PAI-Rec 引擎配置热加载

PAI-Rec 运行离不开灵活的配置,之前的做法都是配置文件与代码进行打包编译出镜像,然后再 EAS 上进行部署。如果只是更新配置的话,也需要重新编译进行,然后进行部署。频繁的部署会对线上服务造成一定的影响。借助于配置中心的配置功能,PAI-Rec 引擎会动态的热加载最新的配置而无需重新发布服务。

前提

  1. 熟悉 PAI-Rec 引擎的相关配置,参考这里

  2. 搭建配置中心,相关部署参考这里

  3. 熟悉配置中心的 PAI-Rec 配置管理功能,参考这里

运行引擎服务

在部署到 EAS 之前会测试服务,之前测试服务这样运行

PAIREC_ENVIRONMENT=prepub ./pairec-demo --config=conf/config.json.production -alsologtostderr

如果需要配置的热加载功能,需要这样运行

PAIREC_ENVIRONMENT=daily  CONFIG_NAME=pairec_config ABTEST_HOST=http://xxxx/api/predict/pairec_experiment ABTEST_TOKEN=xxx ./pairec-demo --alsologtostderr

从这里看到无需指定配置文件,但是有几个环境变量需要设置

  • PAIREC_ENVIRONMENT 运行环境,取值为 日常-daily, 预发-prepub, 生产-product。 这里的环境需要与配置中心的的配置的环境对应起来

  • CONFIG_NAME 配置名称, 与配置中心里的配置名称对应

  • ABTEST_HOST 配置中心部署在EAS 上的地址

  • ABTEST_TOKEN 配置中心部署在 EAS 的访问 Token

EAS 部署

详细的服务部署参考这里。这里需要修改下 service.json。 需要注意的是, ABTEST_HOST 需要配置的 vpc 地址。

{
    "containers":[
        {
            "image":"mybigpai-registry-vpc.cn-beijing.cr.aliyuncs.com/mybigpai/pairec_base:1.0.0",
 	    "env":
            [
            	{
            		"name":"PAIREC_ENVIRONMENT",
            		"value":"product"
            	},
            	{
            		"name":"CONFIG_NAME",
            		"value":"pairec_config"
            	},
            	{
            		"name":"ABTEST_HOST",
            		"value":"xxx"
            	},
            	{
            		"name":"ABTEST_TOKEN",
            		"value":"xxx"
            	}
            ],
            "command":"/usr/bin/rec_entrypoint.sh",
            "port":8000
        }
    ],
    "dockerAuth":"xxxx",
    "metadata":{
        "cpu":4,
        "instance":1,
        "memory":8000,
	"resource":"xxxx"
  },
  "name":"pairec_eas_test"
}