From 4c7ebce97afac49da13fc7169eeaabcd0363ff52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=A5=A5=E8=B6=85?= Date: Fri, 9 Sep 2022 20:37:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=A4=9A=E4=B8=AA=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E6=95=B0=E6=8D=AE=E5=BA=93=E8=8A=82=E7=82=B9=E5=88=86?= =?UTF-8?q?=E5=B8=83=E4=B8=8D=E5=B9=B3=E5=9D=87=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/db/models/db_node_initializer.go | 27 +++++++++++++++++------ internal/db/models/http_access_log_dao.go | 2 +- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/internal/db/models/db_node_initializer.go b/internal/db/models/db_node_initializer.go index ec75df4e..f96f1bdd 100644 --- a/internal/db/models/db_node_initializer.go +++ b/internal/db/models/db_node_initializer.go @@ -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) { diff --git a/internal/db/models/http_access_log_dao.go b/internal/db/models/http_access_log_dao.go index 79d948a3..6e16e16f 100644 --- a/internal/db/models/http_access_log_dao.go +++ b/internal/db/models/http_access_log_dao.go @@ -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 // 单事务写入条数