Browse Source

备份-抽取-控制台

zhengkun 3 years ago
parent
commit
0d53980767
3 changed files with 44 additions and 15 deletions
  1. 0 10
      udpextract/src/config.json
  2. 43 4
      udpextract/src/main.go
  3. 1 1
      udps/main.go

+ 0 - 10
udpextract/src/config.json

@@ -5,16 +5,6 @@
             "addr": "127.0.0.1",
             "port": 6601,
             "stype": "extract_1"
-        },
-        {
-            "addr": "127.0.0.1",
-            "port": 6601,
-            "stype": "extract_2"
-        },
-        {
-            "addr": "127.0.0.1",
-            "port": 6603,
-            "stype": "extract_3"
         }
     ],
     "nextNode": [

+ 43 - 4
udpextract/src/main.go

@@ -7,7 +7,9 @@ import (
 	mu "mfw/util"
 	"net"
 	qu "qfw/util"
+	"strconv"
 	"sync"
+	"time"
 )
 var (
 	Config    		map[string]interface{} 		//配置文件
@@ -36,6 +38,7 @@ func main()  {
 	udpclient = mu.UdpClient{Local: updport, BufSize: 1024}
 	udpclient.Listen(processUdpMsg)
 	log.Println("Udp服务监听", updport)
+	time.Sleep(99999 * time.Hour)
 }
 
 //udp接收
@@ -66,6 +69,7 @@ func processUdpMsg(act byte, data []byte, ra *net.UDPAddr) {
 
 				//拆分段落方法
 				splitArr:=splitIdMethod(sid,eid)
+				log.Println(splitArr)
 				if len(splitArr)!=len(extractNode){//直接发送整段
 					log.Println("段落划分异常...请检查程序...")
 				}
@@ -110,11 +114,46 @@ func validExtractFinish() bool  {
 }
 //拆分ID段方法
 func splitIdMethod(sid string,eid string)([]map[string]interface{}) {
-
-
-	return []map[string]interface{}{}
+	dataArr := make([]map[string]interface{},0)
+	if len(extractNode)==1 {
+		dataArr = append(dataArr, map[string]interface{}{
+			"sid":sid,
+			"eid":eid,
+		})
+	}else {
+		interval := hex2Dec(string(eid[:8]))-hex2Dec(string(sid[:8]))
+		num := interval/int64(len(extractNode))
+		tmp_time :=  hex2Dec(string(sid[:8]))+num
+		for  i:=0;i<len(extractNode);i++ {
+			if i==0 {
+				tmp_eid := fmt.Sprintf("%x",tmp_time)
+				dataArr = append(dataArr, map[string]interface{}{
+					"sid":sid,
+					"eid":tmp_eid+"0000000000000000",
+				})
+			}else if i==len(extractNode)-1 {
+				tmp_sid := fmt.Sprintf("%x",tmp_time)
+				dataArr = append(dataArr, map[string]interface{}{
+					"sid":tmp_sid+"0000000000000000",
+					"eid":eid,
+				})
+			}else {
+				tmp_sid := fmt.Sprintf("%x",tmp_time)
+				tmp_time = tmp_time+num
+				tmp_eid := fmt.Sprintf("%x",tmp_time)
+				dataArr = append(dataArr, map[string]interface{}{
+					"sid":tmp_sid+"0000000000000000",
+					"eid":tmp_eid+"0000000000000000",
+				})
+			}
+		}
+	}
+	return dataArr
+}
+func hex2Dec(val string)int64{
+	n,_ := strconv.ParseInt(val,16,32)
+	return n
 }
-
 //发送抽取
 func sendExtractNode(splitArr []map[string]interface{})  {
 	for index, node := range extractNode {

+ 1 - 1
udps/main.go

@@ -19,7 +19,7 @@ func main() {
 	flag.StringVar(&startDate, "start", "", "开始日期2006-01-02")
 	flag.StringVar(&endDate, "end", "", "结束日期2006-01-02")
 	flag.StringVar(&ip, "ip", "127.0.0.1", "ip")
-	flag.IntVar(&p, "p", 17859, "端口")
+	flag.IntVar(&p, "p", 1784, "端口")
 	flag.IntVar(&tmptime, "tmptime", 0, "时间查询")
 	flag.StringVar(&tmpkey, "tmpkey", "", "时间字段")
 	flag.StringVar(&id1, "gtid", "1fffffffffffffffffffffff", "gtid")