diff --git a/pom.xml b/pom.xml
index c6f2d52..315fcf0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -261,6 +261,11 @@
flink-table-planner-blink_2.12
${flink.version}
+
+ com.arangodb
+ arangodb-java-driver
+ 6.6.3
+
diff --git a/properties/service_flow_config.properties b/properties/service_flow_config.properties
index a0b7627..2308097 100644
--- a/properties/service_flow_config.properties
+++ b/properties/service_flow_config.properties
@@ -65,32 +65,40 @@ source.kafka.topic.connection=connection_record_log
source.kafka.topic.sketch=connection_sketch_record_log
source.kafka.topic.dns=dns_record_log
-sink.ck.table.connection=connection_record_log
-sink.ck.table.sketch=connection_sketch_record_log
-sink.ck.table.dns=dns_record_log
-sink.ck.table.relation.connection=connection_relation_log
-sink.ck.table.relation.dns=dns_relation_log
+sink.ck.table.connection=connection_record_log_local
+sink.ck.table.sketch=connection_sketch_record_log_local
+sink.ck.table.dns=dns_record_log_local
+sink.ck.table.relation.connection=connection_relation_log_local
+sink.ck.table.relation.dns=dns_relation_log_local
+
+sink.arango.table.r.visit.ip2ip=R_VISIT_IP2IP
+sink.arango.table.r.cname.domain2domain=R_CNAME_DOMAIN2DOMAIN
+sink.arango.table.r.mx.domain2domain=R_MX_DOMAIN2DOMAIN
+sink.arango.table.r.resolve.domain2ip=R_RESOLVE_DOMAIN2IP
+sink.arango.table.r.nx.domain2domain=R_NX_DOMAIN2DOMAIN
#clickhouse 入库
ck.hosts=192.168.45.102:8123
-ck.database=default
+ck.database=tsg_galaxy_v3
ck.username=default
ck.pin=galaxy2019
+ck.connection.timeout=100000
+ck.socket.timeout=1000000
#connection_record_log
-flink.watermark.max.orderness=10
+flink.watermark.max.orderness=100000
#统计时间间隔 单位s
-log.aggregate.duration=30
-log.aggregate.duration.graph=30
+log.aggregate.duration=5
+log.aggregate.duration.graph=5
#arangoDB参数配置
-arangoDB.host=192.168.40.182
+arangoDB.host=192.168.45.102
#arangoDB.host=192.168.40.224
arangoDB.port=8529
arangoDB.user=upsert
-arangoDB.password=ceiec2018
-arangoDB.DB.name=ip-learning-test
+arangoDB.password=galaxy2018
+arangoDB.DB.name=knowledge
#arangoDB.DB.name=tsg_galaxy_v3
arangoDB.batch=100000
arangoDB.ttl=3600
@@ -101,5 +109,5 @@ update.arango.batch=10000
thread.pool.number=10
thread.await.termination.time=10
-sink.batch.time.out=5
+sink.batch.time.out=1
sink.batch=10000
\ No newline at end of file
diff --git a/src/main/java/com/zdjizhi/common/ArangoDelayProcess.java b/src/main/java/com/zdjizhi/common/ArangoDelayProcess.java
new file mode 100644
index 0000000..d39e6c5
--- /dev/null
+++ b/src/main/java/com/zdjizhi/common/ArangoDelayProcess.java
@@ -0,0 +1,65 @@
+package com.zdjizhi.common;
+
+import com.arangodb.entity.BaseDocument;
+import org.apache.flink.api.common.state.ListState;
+import org.apache.flink.api.common.state.ListStateDescriptor;
+import org.apache.flink.api.common.state.ValueState;
+import org.apache.flink.api.common.state.ValueStateDescriptor;
+import org.apache.flink.api.common.typeinfo.Types;
+import org.apache.flink.configuration.Configuration;
+import org.apache.flink.streaming.api.functions.ProcessFunction;
+import org.apache.flink.util.Collector;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Spliterator;
+import java.util.stream.Collectors;
+import java.util.stream.StreamSupport;
+
+public class ArangoDelayProcess extends ProcessFunction> {
+
+ private ValueState currentTimer;
+ private ListState itemState;
+ private String stateName;
+
+ @Override
+ public void open(Configuration parameters) throws Exception {
+ currentTimer = getRuntimeContext().getState(new ValueStateDescriptor<>(getStateName() + "_timer", Types.LONG));
+ ListStateDescriptor itemViewStateDesc = new ListStateDescriptor(getStateName() + "_state", Map.class);
+ itemState = getRuntimeContext().getListState(itemViewStateDesc);
+ }
+
+ @Override
+ public void processElement(BaseDocument value, Context context, Collector> collector) throws Exception {
+ //判断定时器是否为空,为空则创建新的定时器
+ Long curTimeStamp = currentTimer.value();
+ if (curTimeStamp == null || curTimeStamp == 0) {
+ long onTimer = context.timestamp() + FlowWriteConfig.SINK_BATCH_TIME_OUT * 1000;
+ context.timerService().registerEventTimeTimer(onTimer);
+ currentTimer.update(onTimer);
+ }
+ itemState.add(value);
+ }
+
+ @Override
+ public void onTimer(long timestamp, OnTimerContext ctx, Collector> out) throws Exception {
+ Spliterator spliterator = itemState.get().spliterator();
+ List collect = StreamSupport.stream(spliterator, false)
+ .collect(Collectors.toList());
+ out.collect(collect);
+ currentTimer.clear();
+ itemState.clear();
+ }
+
+ public ArangoDelayProcess(String stateName) {
+ this.stateName = stateName;
+ }
+
+ public String getStateName() {
+ return stateName;
+ }
+
+ public void setStateName(String stateName) {
+ this.stateName = stateName;
+ }
+}
diff --git a/src/main/java/com/zdjizhi/common/CKDelayProcess.java b/src/main/java/com/zdjizhi/common/CKDelayProcess.java
new file mode 100644
index 0000000..35ec90e
--- /dev/null
+++ b/src/main/java/com/zdjizhi/common/CKDelayProcess.java
@@ -0,0 +1,65 @@
+package com.zdjizhi.common;
+
+import org.apache.flink.api.common.state.ListState;
+import org.apache.flink.api.common.state.ListStateDescriptor;
+import org.apache.flink.api.common.state.ValueState;
+import org.apache.flink.api.common.state.ValueStateDescriptor;
+import org.apache.flink.api.common.typeinfo.Types;
+import org.apache.flink.configuration.Configuration;
+import org.apache.flink.streaming.api.functions.ProcessFunction;
+import org.apache.flink.util.Collector;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Spliterator;
+import java.util.stream.Collectors;
+import java.util.stream.StreamSupport;
+
+public class CKDelayProcess extends ProcessFunction