修复多个日志数据库节点分布不平均的问题

This commit is contained in:
刘祥超
2022-09-09 20:37:45 +08:00
parent 44e7ce9f79
commit 4c7ebce97a
2 changed files with 21 additions and 8 deletions

View File

@@ -9,6 +9,7 @@ import (
"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs" "github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
"github.com/iwind/TeaGo/dbs" "github.com/iwind/TeaGo/dbs"
"github.com/iwind/TeaGo/lists" "github.com/iwind/TeaGo/lists"
"github.com/iwind/TeaGo/rands"
timeutil "github.com/iwind/TeaGo/utils/time" timeutil "github.com/iwind/TeaGo/utils/time"
"hash/crc32" "hash/crc32"
"regexp" "regexp"
@@ -78,16 +79,28 @@ func AllAccessLogDBs() []*dbs.DB {
// 获取获取DAO // 获取获取DAO
func randomHTTPAccessLogDAO() (dao *HTTPAccessLogDAOWrapper) { func randomHTTPAccessLogDAO() (dao *HTTPAccessLogDAOWrapper) {
accessLogLocker.RLock() accessLogLocker.RLock()
defer accessLogLocker.RUnlock()
if len(httpAccessLogDAOMapping) == 0 { if len(httpAccessLogDAOMapping) == 0 {
dao = nil dao = nil
} else {
for _, d := range httpAccessLogDAOMapping {
dao = d
break
}
}
accessLogLocker.RUnlock()
return 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) { func randomNSAccessLogDAO() (dao *NSAccessLogDAOWrapper) {

View File

@@ -40,7 +40,7 @@ var SharedHTTPAccessLogDAO *HTTPAccessLogDAO
var ( var (
oldAccessLogQueue = make(chan *pb.HTTPAccessLog) oldAccessLogQueue = make(chan *pb.HTTPAccessLog)
accessLogQueue = make(chan *pb.HTTPAccessLog, 10_000) accessLogQueue = make(chan *pb.HTTPAccessLog, 10_000)
accessLogQueueMaxLength = 100_000 //队列最大长度 accessLogQueueMaxLength = 100_000 // 队列最大长度
accessLogQueuePercent = 100 // 0-100 accessLogQueuePercent = 100 // 0-100
accessLogCountPerSecond = 10_000 // 每秒钟写入条数0 表示不限制 accessLogCountPerSecond = 10_000 // 每秒钟写入条数0 表示不限制
accessLogPerTx = 100 // 单事务写入条数 accessLogPerTx = 100 // 单事务写入条数