mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 16:00:24 +08:00 
			
		
		
		
	修复多个日志数据库节点分布不平均的问题
This commit is contained in:
		@@ -9,6 +9,7 @@ import (
 | 
			
		||||
	"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
 | 
			
		||||
	"github.com/iwind/TeaGo/dbs"
 | 
			
		||||
	"github.com/iwind/TeaGo/lists"
 | 
			
		||||
	"github.com/iwind/TeaGo/rands"
 | 
			
		||||
	timeutil "github.com/iwind/TeaGo/utils/time"
 | 
			
		||||
	"hash/crc32"
 | 
			
		||||
	"regexp"
 | 
			
		||||
@@ -78,16 +79,28 @@ func AllAccessLogDBs() []*dbs.DB {
 | 
			
		||||
// 获取获取DAO
 | 
			
		||||
func randomHTTPAccessLogDAO() (dao *HTTPAccessLogDAOWrapper) {
 | 
			
		||||
	accessLogLocker.RLock()
 | 
			
		||||
	defer accessLogLocker.RUnlock()
 | 
			
		||||
	if len(httpAccessLogDAOMapping) == 0 {
 | 
			
		||||
		dao = nil
 | 
			
		||||
	} else {
 | 
			
		||||
		for _, d := range httpAccessLogDAOMapping {
 | 
			
		||||
			dao = d
 | 
			
		||||
			break
 | 
			
		||||
		}
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	accessLogLocker.RUnlock()
 | 
			
		||||
	return
 | 
			
		||||
 | 
			
		||||
	var daoList = []*HTTPAccessLogDAOWrapper{}
 | 
			
		||||
 | 
			
		||||
	for _, d := range httpAccessLogDAOMapping {
 | 
			
		||||
		daoList = append(daoList, d)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var l = len(daoList)
 | 
			
		||||
	if l == 0 {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if l == 1 {
 | 
			
		||||
		return daoList[0]
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return daoList[rands.Int(0, len(daoList)-1)]
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func randomNSAccessLogDAO() (dao *NSAccessLogDAOWrapper) {
 | 
			
		||||
 
 | 
			
		||||
@@ -40,7 +40,7 @@ var SharedHTTPAccessLogDAO *HTTPAccessLogDAO
 | 
			
		||||
var (
 | 
			
		||||
	oldAccessLogQueue       = make(chan *pb.HTTPAccessLog)
 | 
			
		||||
	accessLogQueue          = make(chan *pb.HTTPAccessLog, 10_000)
 | 
			
		||||
	accessLogQueueMaxLength = 100_000 //队列最大长度
 | 
			
		||||
	accessLogQueueMaxLength = 100_000 // 队列最大长度
 | 
			
		||||
	accessLogQueuePercent   = 100     // 0-100
 | 
			
		||||
	accessLogCountPerSecond = 10_000  // 每秒钟写入条数,0 表示不限制
 | 
			
		||||
	accessLogPerTx          = 100     // 单事务写入条数
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user