snax service support cluster

This commit is contained in:
Cloud Wu
2015-05-20 16:13:11 +08:00
parent 4f93054f3a
commit 7b471ae27d
9 changed files with 31 additions and 5 deletions

View File

@@ -1,6 +1,7 @@
local skynet = require "skynet"
local cluster = require "cluster"
require "skynet.manager" -- import skynet.name
local snax = require "snax"
skynet.start(function()
local sdb = skynet.newservice("simpledb")
@@ -11,4 +12,6 @@ skynet.start(function()
print(skynet.call(".simpledb", "lua", "GET", "b"))
cluster.open "db"
cluster.open "db2"
-- unique snax service
snax.uniqueservice "pingserver"
end)

View File

@@ -6,4 +6,8 @@ skynet.start(function()
print(skynet.call(proxy, "lua", "GET", "a"))
print(cluster.call("db", ".simpledb", "GET", "a"))
print(cluster.call("db2", ".simpledb", "GET", "b"))
-- test snax service
local pingserver = cluster.snax("db", "pingserver")
print(pingserver.req.ping "hello")
end)

View File

@@ -6,4 +6,5 @@ bootstrap = "snlua bootstrap" -- The service for bootstrap
luaservice = "./service/?.lua;./test/?.lua;./examples/?.lua"
lualoader = "lualib/loader.lua"
cpath = "./cservice/?.so"
cluster = "./examples/clustername.lua"
cluster = "./examples/clustername.lua"
snax = "./test/?.lua"

View File

@@ -6,4 +6,5 @@ bootstrap = "snlua bootstrap" -- The service for bootstrap
luaservice = "./service/?.lua;./test/?.lua;./examples/?.lua"
lualoader = "lualib/loader.lua"
cpath = "./cservice/?.so"
cluster = "./examples/clustername.lua"
cluster = "./examples/clustername.lua"
snax = "./test/?.lua"

View File

@@ -24,6 +24,15 @@ function cluster.proxy(node, name)
return skynet.call(clusterd, "lua", "proxy", node, name)
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()
clusterd = skynet.uniqueservice("clusterd")
end)

View File

@@ -64,7 +64,7 @@ return function (name , G, loader)
local pattern
do
local path = skynet.getenv "snax"
local path = assert(skynet.getenv "snax" , "please set snax in config file")
local errlist = {}

View File

@@ -11,6 +11,7 @@ skynet.register_protocol {
}
local forward_map = {
[skynet.PTYPE_SNAX] = skynet.PTYPE_SYSTEM,
[skynet.PTYPE_LUA] = skynet.PTYPE_SYSTEM,
[skynet.PTYPE_RESPONSE] = skynet.PTYPE_RESPONSE, -- don't free response message
}

View File

@@ -54,7 +54,7 @@ end
skynet.start(function()
local init = false
skynet.dispatch("snax", function ( session , source , id, ...)
local function dispatcher( session , source , id, ...)
local method = func[id]
if method[2] == "system" then
@@ -84,5 +84,11 @@ skynet.start(function()
assert(init, "Init first")
timing(method, ...)
end
end)
end
skynet.dispatch("snax", dispatcher)
-- set lua dispatcher
function snax.enablecluster()
skynet.dispatch("lua", dispatcher)
end
end)

View File

@@ -43,6 +43,7 @@ end
function init( ... )
print ("ping server start:", ...)
snax.enablecluster() -- enable cluster call
-- init queue
lock = queue()
end