多agent,服务之间发送消息延迟过高
yfengworld opened this issue · comments
function CMD.request(id, addr)
socket.start(id)
local code, url, method, header, body = httpd.read_request(sockethelper.readfunc(id), 8192)
--syslog.trace("---------------------code:%s %s, %d, %d",code, method, id, skynet.self())
if code then
local origin = header['origin']
if 'OPTIONS' == method then
response(id, 200, '', origin)
socket.close(id)
return
end
if code ~= 200 then
response(id, code, '', origin)
socket.close(id)
else
local usrname = header["username"]
-- trace("----- usrname:[%s]", usrname)
local session_id = header["sessionid"]
if not usrname then
response(id, 400, "header username no set", origin)
socket.close(id)
else
usrname = tostring(usrname)
local ret = skynet.call(database, "lua", "allow_login", usrname, addr)
if not ret then
response(id, 503, "server maintain", origin)
socket.close(id)
return
end
local agent = skynet.call(agentmgr, "lua", "query", usrname)
if not agent then --极端情况
response(id, 503, "server busy", origin)
socket.close(id)
return
end
--转到agent去处理
socket.abandon(id)
skynet.send(agent, "lua", "request", id, body, session_id, usrname, origin)
end
end
else
if url == sockethelper.socket_error then
skynet.error("socket closed")
else
skynet.error(url)
end
socket.close(id)
end
end
这是webagent里的代码,send数据到agent服务,随着消息变多,agent那边收到消息的延迟很大