Browse Source

爬虫节点迁移逻辑调整

maxiaoshan 1 year ago
parent
commit
c8483563a6
1 changed files with 51 additions and 37 deletions
  1. 51 37
      src/timetask/luamove.go

+ 51 - 37
src/timetask/luamove.go

@@ -26,22 +26,29 @@ type Spider struct {
 	State      int   `json:"state"`
 	Comeintime int64 `json:"comeintime"`
 }
-
-var CodeMap map[string]*Spider
-
 type EventNum struct {
 	Event int //节点
 	Num   int //节点爬虫数量
 }
 
-//节点上的爬虫个数
-var EventMapType1 = map[int]int{} //7100、7110、7400、7410
-var EventMapType2 = map[int]int{} //7200、7210、7300、7310
-var EventMapType3 = map[int]int{} //7500、7510、7700
+var (
+	CodeMap map[string]*Spider
+	//节点上的爬虫个数
+	EventMapType1 = map[int]int{} //7100、7110、7400、7410
+	EventMapType2 = map[int]int{} //7200、7210、7300、7310
+	EventMapType3 = map[int]int{} //7500、7510、7700
+	EventMapType4 = map[int]int{} //7520
 
-var EventArrType1 []*EventNum //7100、7110、7400、7410
-var EventArrType2 []*EventNum //7200、7210、7300、7310
-var EventArrType3 []*EventNum //7500、7510、7700
+	EventArrType1 []*EventNum //7100、7110、7400、7410
+	EventArrType2 []*EventNum //7200、7210、7300、7310
+	EventArrType3 []*EventNum //7500、7510、7700
+	EventArrType4 []*EventNum //7520
+)
+
+const (
+	BIDEVENTLIMIT, MORETHANCOMEVENTLIMIT, LESSTHANCOMEVENTLIMIT, ZEROEVENTLIMIT int = 1000, 200, 10, 0
+	BIDEVENTTYPE, MORETHANCOMEVENTTYPE, LESSTHANCOMEVENTTYPE, ZEROEVENTTYPE     int = 1, 2, 3, 4
+)
 
 func LuaMoveEvent() {
 	defer qu.Catch()
@@ -90,6 +97,9 @@ func GetLuaInfo() {
 			site := qu.ObjToString(tmp["site"])
 			channel := qu.ObjToString(tmp["channel"])
 			event := qu.IntAll(tmp["event"])
+			if event == 7410 { //7410节点爬虫不参与节点迁移
+				return
+			}
 			href := ""
 			maxPage, cycletime := 0, 0
 			if param_common := tmp["param_common"].([]interface{}); len(param_common) >= 12 {
@@ -98,15 +108,17 @@ func GetLuaInfo() {
 				cycletime = qu.IntAll(param_common[6])
 			}
 			lock.Lock()
-			if event != 7410 {
-				if util.CodeEventType[event] == 1 {
-					EventMapType1[event]++
-				} else if util.CodeEventType[event] == 2 {
-					EventMapType2[event]++
-				} else if util.CodeEventType[event] == 3 {
-					EventMapType3[event]++
-				}
+			//if event != 7410 {
+			if util.CodeEventType[event] == 1 {
+				EventMapType1[event]++
+			} else if util.CodeEventType[event] == 2 {
+				EventMapType2[event]++
+			} else if util.CodeEventType[event] == 3 {
+				EventMapType3[event]++
+			} else if util.CodeEventType[event] == 4 {
+				EventMapType4[event]++
 			}
+			//}
 			CodeMap[code] = &Spider{
 				Code:       code,
 				Site:       site,
@@ -153,7 +165,16 @@ func GetLuaInfo() {
 	sort.Slice(EventArrType3, func(i, j int) bool {
 		return EventArrType3[i].Num < EventArrType3[j].Num // 升序
 	})
-	logger.Debug("爬虫基本信息准备完成...", EventArrType1[0].Event, EventArrType2[0].Event, EventArrType3[0].Event)
+	for event, num := range EventMapType4 {
+		EventArrType4 = append(EventArrType4, &EventNum{
+			Event: event,
+			Num:   num,
+		})
+	}
+	sort.Slice(EventArrType4, func(i, j int) bool {
+		return EventArrType4[i].Num < EventArrType4[j].Num // 升序
+	})
+	logger.Debug("爬虫基本信息准备完成...", EventArrType1[0].Event, EventArrType2[0].Event, EventArrType3[0].Event, EventArrType4[0].Event)
 }
 
 func GetDataNum() {
@@ -206,35 +227,28 @@ func GetDataNum() {
 func GetMoveLua() {
 	defer qu.Catch()
 	/*
+		7410节点特殊不参与节点转移
 		1、按入库时间采集的数据量统计
 		2、转移节点规则
-			转移至高频率模式(7100、7110、7400、7410):30天采集总量超过500条
-			转移至低频率队列模式(7200、7210、7300、7310):30天采集总量50-500条
-			转移至极低频率模式(7500、7510、7700):30天采集总量0-50条
-			特殊节点(7520):0条
+			转移至高频率模式(7100、7110、7400):30天采集总量超过1000条
+			转移至低频率队列模式(7200、7210、7300、7310):30天采集总量200-1000条
+			转移至极低频率模式(7500、7510、7700):30天采集总量10-200条
+			转移至几乎无数据节点(7520):0-10条
 	*/
 	save := []map[string]interface{}{}
 	for _, sp := range CodeMap {
-		if sp.DataNum >= 500 && sp.FromEvent != 7410 && util.CodeEventType[sp.FromEvent] != 1 { //本身不是高性能节点超过500条的
+		if sp.DataNum >= BIDEVENTLIMIT && util.CodeEventType[sp.FromEvent] != BIDEVENTTYPE {
 			sp.IsMove = true
 			sp.ToEvent = EventArrType1[0].Event
-		} else if sp.DataNum >= 10 && sp.DataNum < 500 && sp.FromEvent != 7410 && util.CodeEventType[sp.FromEvent] != 2 {
+		} else if sp.DataNum >= MORETHANCOMEVENTLIMIT && sp.DataNum < BIDEVENTLIMIT && util.CodeEventType[sp.FromEvent] != MORETHANCOMEVENTTYPE {
 			sp.IsMove = true
 			sp.ToEvent = EventArrType2[0].Event
-		} else if sp.DataNum > 0 && sp.DataNum < 10 && util.CodeEventType[sp.FromEvent] != 3 {
+		} else if sp.DataNum > LESSTHANCOMEVENTLIMIT && sp.DataNum < MORETHANCOMEVENTLIMIT && util.CodeEventType[sp.FromEvent] != LESSTHANCOMEVENTTYPE {
 			sp.IsMove = true
-			if sp.FromEvent == 7410 { //7410节点特殊性,此处表示7410节点的爬虫要更新采集频率
-				sp.ToEvent = 7410
-			} else {
-				sp.ToEvent = EventArrType3[0].Event
-			}
-		} else if sp.DataNum == 0 && util.CodeEventType[sp.FromEvent] != 4 {
+			sp.ToEvent = EventArrType3[0].Event
+		} else if sp.DataNum <= LESSTHANCOMEVENTLIMIT && util.CodeEventType[sp.FromEvent] != ZEROEVENTTYPE {
 			sp.IsMove = true
-			if sp.FromEvent == 7410 { //7410节点特殊性,此处表示7410节点的爬虫要更新采集频率
-				sp.ToEvent = 7410
-			} else {
-				sp.ToEvent = 7520
-			}
+			sp.ToEvent = EventArrType4[0].Event
 		}
 		//存储爬虫统计信息
 		byteText, err := json.Marshal(sp)