diff --git a/properties/service_flow_config.properties b/properties/service_flow_config.properties index 9d0ab67..65358a7 100644 --- a/properties/service_flow_config.properties +++ b/properties/service_flow_config.properties @@ -26,4 +26,7 @@ tools.library=D:\\K18-Phase2\\tsgSpace\\dat\\tsg\\ #account-ip对应关系表 hbase.account.table.name=tsg_galaxy:relation_account_framedip -hbase.scan.limit=100000 \ No newline at end of file +hbase.scan.limit=100000 + +cache.expire.seconds=86400 +cache.max.size=10000000 \ No newline at end of file diff --git a/src/main/java/com/zdjizhi/common/RadiusRelationshipConfig.java b/src/main/java/com/zdjizhi/common/RadiusRelationshipConfig.java index 189a4ee..20ed362 100644 --- a/src/main/java/com/zdjizhi/common/RadiusRelationshipConfig.java +++ b/src/main/java/com/zdjizhi/common/RadiusRelationshipConfig.java @@ -61,6 +61,10 @@ public class RadiusRelationshipConfig { public static final int HBASE_SCAN_LIMIT = RadiusRelationshipConfigurations.getIntProperty(0, "hbase.scan.limit"); public static final int HBASE_RPC_TIMEOUT = RadiusRelationshipConfigurations.getIntProperty(0, "hbase.rpc.timeout"); + public static final int CACHE_EXPIRE_SECONDS = RadiusRelationshipConfigurations.getIntProperty(0, "cache.expire.seconds"); + public static final int CACHE_MAX_SIZE = RadiusRelationshipConfigurations.getIntProperty(0, "cache.max.size"); + + diff --git a/src/main/java/com/zdjizhi/utils/hbasepackage/HbaseSinkAccount.java b/src/main/java/com/zdjizhi/utils/hbasepackage/HbaseSinkAccount.java index 16b4e60..52109ef 100644 --- a/src/main/java/com/zdjizhi/utils/hbasepackage/HbaseSinkAccount.java +++ b/src/main/java/com/zdjizhi/utils/hbasepackage/HbaseSinkAccount.java @@ -1,5 +1,6 @@ package com.zdjizhi.utils.hbasepackage; +import com.google.common.cache.CacheBuilder; import com.zdjizhi.common.RadiusRelationshipConfig; import com.zdjizhi.pojo.Radius; import org.apache.flink.api.java.tuple.Tuple7; @@ -15,20 +16,22 @@ import org.apache.log4j.Logger; import java.io.IOException; import java.io.Serializable; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.TimeUnit; public class HbaseSinkAccount extends RichSinkFunction> implements Serializable, SinkFunction> { private Logger log; private String hbase_zookeeper_host; - public Map AccountWithIpMap = new ConcurrentHashMap<>(80000); + // public Map AccountWithIpMap = new ConcurrentHashMap<>(80000); + public com.google.common.cache.Cache AccountWithIpMap ; private Connection connection; private Admin admin; public HbaseSinkAccount(String hbase_zookeeper_host) { this.hbase_zookeeper_host = hbase_zookeeper_host; + AccountWithIpMap = CacheBuilder.newBuilder().expireAfterWrite(RadiusRelationshipConfig.CACHE_EXPIRE_SECONDS, TimeUnit.SECONDS).initialCapacity(100000).maximumSize(RadiusRelationshipConfig.CACHE_MAX_SIZE).build(); + } @Override @@ -98,8 +101,8 @@ public class HbaseSinkAccount extends RichSinkFunction> implements Serializable, SinkFunction> { private Logger log; private String hbase_zookeeper_host; - public Map IpWithAccountMap = new ConcurrentHashMap<>(80000); + public com.google.common.cache.Cache IpWithAccountMap ; private Connection connection; private Admin admin; public HbaseSinkFramedip(String hbase_zookeeper_host) { this.hbase_zookeeper_host = hbase_zookeeper_host; + IpWithAccountMap = CacheBuilder.newBuilder().expireAfterWrite(RadiusRelationshipConfig.CACHE_EXPIRE_SECONDS, TimeUnit.SECONDS).initialCapacity(100000).maximumSize(RadiusRelationshipConfig.CACHE_MAX_SIZE).build(); + } @Override @@ -99,8 +101,9 @@ public class HbaseSinkFramedip extends RichSinkFunction