mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-22 02:53:09 +00:00
snax service support cluster
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 = {}
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -43,6 +43,7 @@ end
|
||||
|
||||
function init( ... )
|
||||
print ("ping server start:", ...)
|
||||
snax.enablecluster() -- enable cluster call
|
||||
-- init queue
|
||||
lock = queue()
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user