1--cluster.lua2skynet.init(function()3clusterd = skynet.uniqueservice("clusterd")4end) 在init中,会启动一个 clusterd的服务,用来对集群的维护,其实cluster.lua只是对集群操作的一个浅封装。 在require启动完clusterd服务后,需要进行 cluster.reload({})的操作,对集群中的机子进行初始化,并且启动当前节点对...
1 -- lualib/skynet/cluster.lua 2 function cluster.call(node, address, ...) 3 -- skynet.pack(...) will free by cluster.core.packrequest 4 return skynet.call(clusterd, "lua", "req", node, address, skynet.pack(...)) 5 end 6 7 -- service/clusterd.lua 8 local function send...
--centerMain.lualocalskynet=require("skynet")require("skynet.manager")localcluster=require("skynet.cluster")skynet.start(function()--打开结点:表示当前进程是center结点,监听center端口cluster.open("center")--启动dataService服务localaddr=skynet.newservice("dataService")--注册名字,以便其他结点访问sky...
换句话说,cluster 间的通讯协议并没有修改,无论是 cluster.call 还是 cluster.send 都是发起的一样的网络请求,都要求对方回应。一个服务在响应本地推送消息时,调用 skynet.ret 会直接忽略;而响应网络推送时,是经由 clusterd 转发过来的请求,(由于协议限制,clusterd 无法区分是一个推送还是一个请求),skynet.ret...
在cluster 集群中的每个节点都使用一个字符串来命名,由一个配置表来把名字关联到 ip 地址和端口上。理论上同一个 skynet 进程可以监听多个消息入口,只要用名字区分开,绑定在不同的端口就可以了。 为了和本地消息做区分,cluster 提供了单独的库及一组新的 API ,这个库是对 clusterd 服务通讯的浅封装。当然,也...
上周末,我对 skynet 的 cluster 模块做了一点优化。 cluster 模式是 skynet 的一种集群方案,用于将多台机器更为弹性的组成一个集群。我们将每台机器都赋予一个名字,然后就可以在集群间用这个名字向对方推送消息或发起请求。 集群的管理是一项非常复杂的工作,skynet 作为一个轻量化的框架,只实现了最基本的基础设...
nodename="cluster_gate1"--节点服务名称。 main.lua核心部分: skynet.start(function()--[[ skynet.name(".cslave", skynet.newservice("xxx")) 只能用于本节点名字命名,不能用于全局服务名 skynet.register(".cslave"、"cslave") 注册本服务的名字 ...
return cluster.send(node, srv, ...) end end 我们在etc/config.node1的末尾加多一行 node = "node1" 拷贝一份,重命名为config.node2,把末尾一行改为 node = "node2" 然后,我们改下main.lua脚本,让它在node1节点开启打工服务,在node2节点开启买猫粮节点,最终main.lua脚本如下: ...
skynet的几个基本服务 我们可以在skynet/service/bootstrap.lua里看到skynet的基本lua服务启动流程,这里不再赘述。 集群 这一部分,云风大侠已经说的很清楚了,这里就不敢班门弄斧。 如何使用查看Cluster Cluster设计请查看skynet cluster 模块的设计与编码协议 ...
接下来是 cluster.open "db" 和 "db2" ,通过node_address来获取其之前保存 db 和 db2 的addr,然后创建gate网关,调用gate 的open方法,因为在gate的消息分发函数是写在gateserver.lua文件里面的,所以 skynet.call(gate, "lua", "open", { address = addr, port = port }) 其实是跑到了 gateserver.lua 里...