From 3a646deaf18d32a8152cfb93a5f45eaae9601cf0 Mon Sep 17 00:00:00 2001 From: zhouhaihai Date: Wed, 16 Dec 2020 17:25:07 +0800 Subject: [PATCH] 拆分网关 --- robot/robot.conf | 4 ++-- robot/robot_main.lua | 17 +++++++++++++++++ robot/start.lua | 22 ++++++++++++++-------- robot/unitTest/item.lua | 2 +- 4 files changed, 34 insertions(+), 11 deletions(-) create mode 100644 robot/robot_main.lua diff --git a/robot/robot.conf b/robot/robot.conf index 5f33b02..2a152fe 100644 --- a/robot/robot.conf +++ b/robot/robot.conf @@ -1,8 +1,8 @@ root = "./" -thread = 8 +thread = 4 logger = nil harbor = 0 -start = "start" -- main script +start = "robot_main" -- main script bootstrap = "snlua bootstrap" -- The service for bootstrap lua_path = root .."skynet/lualib/?.lua;"..root.."robot/?.lua;"..root.."src/?.lua" diff --git a/robot/robot_main.lua b/robot/robot_main.lua new file mode 100644 index 0000000..275909c --- /dev/null +++ b/robot/robot_main.lua @@ -0,0 +1,17 @@ +local skynet = require "skynet" +local config = require "robot_config" + +local preOnlineCount = 10 + + +skynet.start(function() + local need = math.ceil(config.online / preOnlineCount) + local inpre = math.ceil(config.inpre / need) + local idRange = math.ceil(config.max / need) + local curId = 1 + for i = 1, need do + skynet.newservice("start", preOnlineCount, curId, curId + idRange - 1, inpre) + curId = curId + idRange + end + skynet.exit() +end) \ No newline at end of file diff --git a/robot/start.lua b/robot/start.lua index 228b5d4..3579734 100644 --- a/robot/start.lua +++ b/robot/start.lua @@ -7,11 +7,17 @@ local netpack = require "skynet.netpack" local socketdriver = require "skynet.socketdriver" local string_format = string.format +local onlineCount, startId, endId, inpre = ... +onlineCount = tonumber(onlineCount) +startId = tonumber(startId) +endId = tonumber(endId) +inpre = tonumber(inpre) + local queue = {} local fd2serv = {} local id2fd = {} local MSG = {} -local id_max = 0 -- robot id +local id_max = startId - 1 -- robot id function MSG.open( ... ) @@ -76,9 +82,9 @@ local function add_robot() local fd = socketdriver.connect(config.host, config.port) socketdriver.start(fd) local id - if id_max >= config.max then + if id_max >= endId then while true do - id = math.randomInt(1, config.max) + id = math.randomInt(startId, endId) if not id2fd[id] then break end @@ -89,7 +95,7 @@ local function add_robot() end fd2serv[fd] = {agent = robot, id = id} id2fd[id] = fd - pcall(skynet.call, robot, "lua", "start", fd, id) + pcall(skynet.call, robot, "lua", "start", fd, id, prefix) log(string_format("login %s", fd2serv[fd].id)) -- 定时下线 @@ -106,8 +112,8 @@ local function online() end -- 及时补充人数 - if curCount < config.online then - for i = curCount + 1, config.online do + if curCount < onlineCount then + for i = curCount + 1, onlineCount do add_robot() end end @@ -119,8 +125,8 @@ end local function start() log("start testing ...") - for i = 1, config.online, config.inpre do - for j = 1, config.inpre do + for i = 1, onlineCount, inpre do + for j = 1, inpre do add_robot() end skynet.sleep(100) diff --git a/robot/unitTest/item.lua b/robot/unitTest/item.lua index d88d906..aaf99f1 100644 --- a/robot/unitTest/item.lua +++ b/robot/unitTest/item.lua @@ -14,7 +14,7 @@ end local taskMap = { saleItem = {100}, openItem = {100}, - openTimeBox = {100}, + -- openTimeBox = {100}, } function _M:task() -- libgit2 0.21.2