瀏覽代碼

修改日志收集服

neo 1 年之前
父節點
當前提交
e7b514797d
共有 2 個文件被更改,包括 62 次插入2 次删除
  1. 60 0
      common/service/proxySrv.lua
  2. 2 2
      nodes/resource/main.lua

+ 60 - 0
common/service/proxySrv.lua

@@ -0,0 +1,60 @@
1
+-- 代理服务
2
+-- 用法 skynet.newservice("proxySrv", "被代理服务", ”代理数量“, "注册服务名字", "是否远程调用", ... 服务启动参数)
3
+
4
+require "skynet.manager"
5
+local skynet = require "skynet"
6
+local cluster = require "skynet.cluster"
7
+
8
+local balance = 1
9
+local addresList = {}
10
+local serParam = table.pack(...)
11
+local sername, sernum, regname, remove = serParam[1], tonumber(serParam[2]), serParam[3], serParam[4]
12
+
13
+skynet.register_protocol {
14
+	name = "system",
15
+	id = skynet.PTYPE_SYSTEM,
16
+	unpack = function (...) return ... end,
17
+}
18
+
19
+local forwardMap = {
20
+	[skynet.PTYPE_SNAX] = skynet.PTYPE_SYSTEM,
21
+	[skynet.PTYPE_LUA] = skynet.PTYPE_SYSTEM,
22
+	[skynet.PTYPE_RESPONSE] = skynet.PTYPE_RESPONSE,	-- don't free response message
23
+}
24
+
25
+skynet.init(function ()
26
+	for i = 1, sernum do
27
+		addresList[i] = skynet.newservice(sername, table.unpack(serParam, 5))
28
+	end
29
+	-- 注册名字
30
+	if regname ~= "nil" then
31
+		skynet.register(regname)
32
+	end
33
+	-- 远程服务
34
+	if remove == "true" then
35
+		cluster.register(regname, skynet.self())
36
+	end
37
+end)
38
+
39
+local function getAddress()
40
+	local address = addresList[balance]
41
+	if address then
42
+		balance = balance + 1
43
+		if balance > sernum then
44
+			balance = 1
45
+		end
46
+	end
47
+	return assert(address, "get realsvr address error!")
48
+end
49
+
50
+skynet.forward_type(forwardMap, function()
51
+	skynet.dispatch("system", function (session, source, msg, sz)
52
+		local realsvr = getAddress()
53
+		if session == 0 then
54
+			skynet.rawsend(realsvr, "lua", msg, sz)
55
+		else
56
+			skynet.ret(skynet.rawcall(realsvr, "lua", msg, sz))
57
+		end
58
+	end)
59
+end)
60
+

+ 2 - 2
nodes/resource/main.lua

@@ -19,8 +19,8 @@ skynet.start(
19 19
 		init_nodes:init_logger()
20 20
 
21 21
 		skynet.uniqueservice("logMgrSrv")
22
-		skynet.newservice("writeLogSrv", 3, ".server_log", "true")
23
-		skynet.newservice("writeLogSrv", 3, ".client_log", "true")
22
+		skynet.newservice("proxySrv", "writeLogSrv", 3, ".server_log", "true")
23
+		skynet.newservice("proxySrv", "writeLogSrv", 3, ".client_log", "true")
24 24
 
25 25
 		-- 集群
26 26
 		init_nodes:init_cluster()