Ver Fonte

增加本地缓存

gufengshou1 há 1 ano atrás
pai
commit
c59bc8c001

+ 4 - 3
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/container/AdCreativeFeatureContainer.java

@@ -4,6 +4,7 @@ import com.google.common.cache.Cache;
 import com.google.common.cache.CacheBuilder;
 import com.google.common.cache.CacheLoader;
 import com.google.common.cache.LoadingCache;
+import com.google.common.collect.ImmutableMap;
 import com.tzld.piaoquan.ad.engine.service.remote.FeatureRemoteService;
 import com.tzld.piaoquan.recommend.feature.domain.ad.base.AdRankItem;
 import org.slf4j.Logger;
@@ -75,13 +76,13 @@ public class AdCreativeFeatureContainer {
         }
         return result;
     }
-    public List<AdRankItem> getAll(List<Long> creativeIds) {
+    public Map<Long, AdRankItem>  getAll(List<Long> creativeIds) {
         try {
-            return cache.getAll(creativeIds).values().asList();
+            return cache.getAll(creativeIds);
         } catch (Exception e) {
             log.error("get all failed {}", e);
         }
-        return Collections.emptyList();
+        return Collections.emptyMap();
     }
 
     public AdRankItem get(Long creativeIds) {

+ 21 - 6
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/impl/RankServiceImpl.java

@@ -69,7 +69,13 @@ public class RankServiceImpl implements RankService {
 //                getAllAdFeatureList(
 //                        CommonCollectionUtils.toList(request.getAdIdList(),id->id.toString())
 //                );
-        List<AdRankItem> rankItems=adCreativeFeatureContainer.getAll(request.getAdIdList());
+        Map<Long, AdRankItem> cache=adCreativeFeatureContainer.getAll(request.getAdIdList());
+        List<AdRankItem> rankItems=Collections.emptyList();
+        if(!cache.isEmpty()){
+            rankItems=new LinkedList<>(cache.values());
+        }
+
+
         //避免recommend-feature出问题
         if(rankItems==null|| rankItems.size()==0){
             rankItems=new LinkedList<>();
@@ -139,7 +145,12 @@ public class RankServiceImpl implements RankService {
 //                getAllAdFeatureList(
 //                        new ArrayList<>(groupMap.keySet())
 //                );
-        List<AdRankItem> rankItems=adCreativeFeatureContainer.getAll(new ArrayList<>(groupMap.keySet()));
+//        List<AdRankItem> rankItems=adCreativeFeatureContainer.getAll(new ArrayList<>(groupMap.keySet()));
+        Map<Long, AdRankItem> cache=adCreativeFeatureContainer.getAll(new ArrayList<>(groupMap.keySet()));
+        List<AdRankItem> rankItems=Collections.emptyList();
+        if(!cache.isEmpty()){
+            rankItems=new LinkedList<>(cache.values());
+        }
         for(AdRankItem item:rankItems){
             try {
 //                AdPlatformBidCreativeDTO dto=groupMap.get(item.getAdId()+"").get(0);
@@ -240,11 +251,15 @@ public class RankServiceImpl implements RankService {
 //                getAllAdFeatureList(
 //                        new ArrayList<>(groupMap.keySet())
 //                );
-        List<AdRankItem> rankItems=adCreativeFeatureContainer.getAll(new ArrayList<>(groupMap.keySet()));
-
+//        List<AdRankItem> rankItems=adCreativeFeatureContainer.getAll(new ArrayList<>(groupMap.keySet()));
+        Map<Long, AdRankItem> cache=adCreativeFeatureContainer.getAll(new ArrayList<>(groupMap.keySet()));
+        List<AdRankItem> rankItems=Collections.emptyList();
+        if(!cache.isEmpty()){
+            rankItems=new LinkedList<>(cache.values());
+        }
         for(AdRankItem item:rankItems){
             try {
-                AdPlatformBidCreativeDTO dto=groupMap.get(item.getAdId()+"").get(0);
+                AdPlatformBidCreativeDTO dto=groupMap.get(item.getAdId()).get(0);
                 item.setBid1(dto.getBid1());
                 item.setBid2(dto.getBid2());
                 item.setCpa(dto.getCpa());
@@ -280,7 +295,7 @@ public class RankServiceImpl implements RankService {
         result.setCreativeId(topItem.getAdId());
         result.setPctr(topItem.getCtr());
         result.setPcvr(topItem.getCvr());
-        result.setCreativeCode(groupMap.get(topItem.getAdId()+"").get(0).getCreativeCode());
+        result.setCreativeCode(groupMap.get(topItem.getAdId()).get(0).getCreativeCode());
         double realECpm=0d;
         //经验值 待定
         realECpm=topItem.getEcpm1();