mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-24 20:23:06 +00:00
snax service support cluster
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
local skynet = require "skynet"
|
local skynet = require "skynet"
|
||||||
local cluster = require "cluster"
|
local cluster = require "cluster"
|
||||||
require "skynet.manager" -- import skynet.name
|
require "skynet.manager" -- import skynet.name
|
||||||
|
local snax = require "snax"
|
||||||
|
|
||||||
skynet.start(function()
|
skynet.start(function()
|
||||||
local sdb = skynet.newservice("simpledb")
|
local sdb = skynet.newservice("simpledb")
|
||||||
@@ -11,4 +12,6 @@ skynet.start(function()
|
|||||||
print(skynet.call(".simpledb", "lua", "GET", "b"))
|
print(skynet.call(".simpledb", "lua", "GET", "b"))
|
||||||
cluster.open "db"
|
cluster.open "db"
|
||||||
cluster.open "db2"
|
cluster.open "db2"
|
||||||
|
-- unique snax service
|
||||||
|
snax.uniqueservice "pingserver"
|
||||||
end)
|
end)
|
||||||
|
|||||||
@@ -6,4 +6,8 @@ skynet.start(function()
|
|||||||
print(skynet.call(proxy, "lua", "GET", "a"))
|
print(skynet.call(proxy, "lua", "GET", "a"))
|
||||||
print(cluster.call("db", ".simpledb", "GET", "a"))
|
print(cluster.call("db", ".simpledb", "GET", "a"))
|
||||||
print(cluster.call("db2", ".simpledb", "GET", "b"))
|
print(cluster.call("db2", ".simpledb", "GET", "b"))
|
||||||
|
|
||||||
|
-- test snax service
|
||||||
|
local pingserver = cluster.snax("db", "pingserver")
|
||||||
|
print(pingserver.req.ping "hello")
|
||||||
end)
|
end)
|
||||||
|
|||||||
@@ -6,4 +6,5 @@ bootstrap = "snlua bootstrap" -- The service for bootstrap
|
|||||||
luaservice = "./service/?.lua;./test/?.lua;./examples/?.lua"
|
luaservice = "./service/?.lua;./test/?.lua;./examples/?.lua"
|
||||||
lualoader = "lualib/loader.lua"
|
lualoader = "lualib/loader.lua"
|
||||||
cpath = "./cservice/?.so"
|
cpath = "./cservice/?.so"
|
||||||
cluster = "./examples/clustername.lua"
|
cluster = "./examples/clustername.lua"
|
||||||
|
snax = "./test/?.lua"
|
||||||
|
|||||||
@@ -6,4 +6,5 @@ bootstrap = "snlua bootstrap" -- The service for bootstrap
|
|||||||
luaservice = "./service/?.lua;./test/?.lua;./examples/?.lua"
|
luaservice = "./service/?.lua;./test/?.lua;./examples/?.lua"
|
||||||
lualoader = "lualib/loader.lua"
|
lualoader = "lualib/loader.lua"
|
||||||
cpath = "./cservice/?.so"
|
cpath = "./cservice/?.so"
|
||||||
cluster = "./examples/clustername.lua"
|
cluster = "./examples/clustername.lua"
|
||||||
|
snax = "./test/?.lua"
|
||||||
|
|||||||
@@ -24,6 +24,15 @@ function cluster.proxy(node, name)
|
|||||||
return skynet.call(clusterd, "lua", "proxy", node, name)
|
return skynet.call(clusterd, "lua", "proxy", node, name)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function cluster.snax(node, name, address)
|
||||||
|
local snax = require "snax"
|
||||||
|
if not address then
|
||||||
|
address = cluster.call(node, ".service", "QUERY", "snaxd" , name)
|
||||||
|
end
|
||||||
|
local handle = skynet.call(clusterd, "lua", "proxy", node, address)
|
||||||
|
return snax.bind(handle, name)
|
||||||
|
end
|
||||||
|
|
||||||
skynet.init(function()
|
skynet.init(function()
|
||||||
clusterd = skynet.uniqueservice("clusterd")
|
clusterd = skynet.uniqueservice("clusterd")
|
||||||
end)
|
end)
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ return function (name , G, loader)
|
|||||||
local pattern
|
local pattern
|
||||||
|
|
||||||
do
|
do
|
||||||
local path = skynet.getenv "snax"
|
local path = assert(skynet.getenv "snax" , "please set snax in config file")
|
||||||
|
|
||||||
local errlist = {}
|
local errlist = {}
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ skynet.register_protocol {
|
|||||||
}
|
}
|
||||||
|
|
||||||
local forward_map = {
|
local forward_map = {
|
||||||
|
[skynet.PTYPE_SNAX] = skynet.PTYPE_SYSTEM,
|
||||||
[skynet.PTYPE_LUA] = skynet.PTYPE_SYSTEM,
|
[skynet.PTYPE_LUA] = skynet.PTYPE_SYSTEM,
|
||||||
[skynet.PTYPE_RESPONSE] = skynet.PTYPE_RESPONSE, -- don't free response message
|
[skynet.PTYPE_RESPONSE] = skynet.PTYPE_RESPONSE, -- don't free response message
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ end
|
|||||||
|
|
||||||
skynet.start(function()
|
skynet.start(function()
|
||||||
local init = false
|
local init = false
|
||||||
skynet.dispatch("snax", function ( session , source , id, ...)
|
local function dispatcher( session , source , id, ...)
|
||||||
local method = func[id]
|
local method = func[id]
|
||||||
|
|
||||||
if method[2] == "system" then
|
if method[2] == "system" then
|
||||||
@@ -84,5 +84,11 @@ skynet.start(function()
|
|||||||
assert(init, "Init first")
|
assert(init, "Init first")
|
||||||
timing(method, ...)
|
timing(method, ...)
|
||||||
end
|
end
|
||||||
end)
|
end
|
||||||
|
skynet.dispatch("snax", dispatcher)
|
||||||
|
|
||||||
|
-- set lua dispatcher
|
||||||
|
function snax.enablecluster()
|
||||||
|
skynet.dispatch("lua", dispatcher)
|
||||||
|
end
|
||||||
end)
|
end)
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ end
|
|||||||
|
|
||||||
function init( ... )
|
function init( ... )
|
||||||
print ("ping server start:", ...)
|
print ("ping server start:", ...)
|
||||||
|
snax.enablecluster() -- enable cluster call
|
||||||
-- init queue
|
-- init queue
|
||||||
lock = queue()
|
lock = queue()
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user