Browse Source

set flowPoolAbtestGroup

supeng 11 months ago
parent
commit
91ee1a7739

+ 4 - 0
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/common/base/Constant.java

@@ -15,4 +15,8 @@ public class Constant {
      * 流量池头部视频redis key
      */
     public static final String VIDEO_PERFORMANCE_DATA_REDIS_KEY = "video_performance_data_redis_key:";
+    /**
+     * 供给流量池实验 648 random
+     */
+    public static final String SUPPLY_AB_CODE = "60600";
 }

+ 15 - 5
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/RecommendService.java

@@ -4,6 +4,7 @@ import com.ctrip.framework.apollo.spring.annotation.ApolloJsonValue;
 import com.google.common.base.Stopwatch;
 import com.google.common.base.Strings;
 import com.google.common.reflect.TypeToken;
+import com.tzld.piaoquan.recommend.server.common.base.Constant;
 import com.tzld.piaoquan.recommend.server.common.enums.AppTypeEnum;
 import com.tzld.piaoquan.recommend.server.gen.common.Result;
 import com.tzld.piaoquan.recommend.server.gen.recommend.MachineInfoProto;
@@ -340,12 +341,21 @@ public class RecommendService {
 
         // 流量池分发实验组划分
         int flowPoolIdChoice = flowPoolIds.get(RandomUtils.nextInt(0, flowPoolIds.size()));
-        param.setFlowPoolId(flowPoolIdChoice);
-        param.setFlowPoolAbtestGroup("control_group");
         Map<String, List<Integer>> flowPoolConfig = flowPoolConfigService.getFlowPoolConfig();
-        for (Map.Entry<String, List<Integer>> entry : flowPoolConfig.entrySet()) {
-            if (entry.getValue().contains(flowPoolIdChoice)) {
-                param.setFlowPoolAbtestGroup(entry.getKey());
+        if (Objects.equals(Constant.SUPPLY_AB_CODE, param.getAbCode())) {
+            List<Integer> supplyFlowPoolIdList = flowPoolConfig.get(FlowPoolConstants.SUPPLY_FLOW_SET_LEVEL);
+            if (Objects.nonNull(supplyFlowPoolIdList) && !supplyFlowPoolIdList.isEmpty()) {
+                flowPoolIdChoice = supplyFlowPoolIdList.get(0);
+                param.setFlowPoolId(flowPoolIdChoice);
+                param.setFlowPoolAbtestGroup(FlowPoolConstants.SUPPLY_FLOW_SET_LEVEL);
+            }
+        } else {
+            param.setFlowPoolId(flowPoolIdChoice);
+            param.setFlowPoolAbtestGroup("control_group");
+            for (Map.Entry<String, List<Integer>> entry : flowPoolConfig.entrySet()) {
+                if (entry.getValue().contains(flowPoolIdChoice)) {
+                    param.setFlowPoolAbtestGroup(entry.getKey());
+                }
             }
         }
 

+ 2 - 6
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/filter/FlowPoolWithLevelFilterService.java

@@ -1,5 +1,6 @@
 package com.tzld.piaoquan.recommend.server.service.filter;
 
+import com.tzld.piaoquan.recommend.server.common.base.Constant;
 import com.tzld.piaoquan.recommend.server.service.flowpool.FlowPoolService;
 import com.tzld.piaoquan.recommend.server.util.JSONUtils;
 import lombok.extern.slf4j.Slf4j;
@@ -21,11 +22,6 @@ public class FlowPoolWithLevelFilterService extends AbstractFilterService {
     @Autowired
     private FlowPoolService flowPoolService;
 
-    /**
-     * 供给流量池实验 648 random
-     */
-    private static final String SUPPLY_AB_CODE = "60600";
-
     public FilterResult filter(FilterParam param) {
         List<Long> videoIds = viewFilter(param);
 
@@ -48,7 +44,7 @@ public class FlowPoolWithLevelFilterService extends AbstractFilterService {
 
         Map<Long, Integer> distributeCountMap;
         //供给流量池实验
-        if (Objects.equals(SUPPLY_AB_CODE, param.getAbCode())) {
+        if (Objects.equals(Constant.SUPPLY_AB_CODE, param.getAbCode())) {
             distributeCountMap = flowPoolService.getSupplyDistributeCountWithLevel(flowPoolMap);
         } else {
             distributeCountMap = flowPoolService.getDistributeCountWithLevel(flowPoolMap);

+ 2 - 5
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/RecallService.java

@@ -1,6 +1,7 @@
 package com.tzld.piaoquan.recommend.server.service.recall;
 import com.ctrip.framework.apollo.spring.annotation.ApolloJsonValue;
 import com.tzld.piaoquan.recommend.server.common.ThreadPoolFactory;
+import com.tzld.piaoquan.recommend.server.common.base.Constant;
 import com.tzld.piaoquan.recommend.server.common.enums.AppTypeEnum;
 import com.tzld.piaoquan.recommend.server.model.Video;
 import com.tzld.piaoquan.recommend.server.service.filter.strategy.BlacklistContainer;
@@ -36,10 +37,6 @@ public class RecallService implements ApplicationContextAware {
     protected Map<Integer, String> lastDigitAbcode;
     @Resource
     private BlacklistContainer blacklistContainer;
-    /**
-     * 供给流量池实验 648 random
-     */
-    private static final String SUPPLY_AB_CODE = "60600";
 
     /**
      * 在流量池场景下,哪些appType用判断黑名单
@@ -185,7 +182,7 @@ public class RecallService implements ApplicationContextAware {
             }
             // 命中用户黑名单不走流量池
             if (!hitUserBlacklist || !isInBlacklist) {
-                if (Objects.equals(SUPPLY_AB_CODE, abCode)) {
+                if (Objects.equals(Constant.SUPPLY_AB_CODE, abCode)) {
                     // 供给流量池策略 648 实验 random
                     strategies.add(strategyMap.get(FlowPoolWithLevelSupplyRecallStrategy.class.getSimpleName()));
                     log.info("supply flowpool {}", abCode);