提交新的说明文档

This commit is contained in:
boyce
2019-09-23 14:35:25 +08:00
parent ca63245a93
commit d5ef4132b2
4 changed files with 131 additions and 52 deletions

154
README.md
View File

@@ -41,44 +41,138 @@ origin引擎三大对象关系
--------------- ---------------
* Node: 可以认为每一个Node代表着一个origin进程 * Node: 可以认为每一个Node代表着一个origin进程
* Service:一个独立的服务可以认为是一个大的功能模块他是Node的子集创建完成并安装Node对象中。服务可以支持外部RPC和HTTP接口对外功能。 * Service:一个独立的服务可以认为是一个大的功能模块他是Node的子集创建完成并安装Node对象中。服务可以支持外部RPC和HTTP接口对外功能。
* Module: 这是origin最小对象单元非常建议所有的业务模块都划分成各个小的Module组合。Module可以建立树状关系。Service也是Module的类型。 * Module: 这是origin最小对象单元强烈建议所有的业务模块都划分成各个小的Module组合。Module可以建立树状关系。Service本身也是Module的类型。
origin集群核心配置文件config/cluser.json如下: origin集群核心配置文件config/cluser.json如下:
--------------- ---------------
``` ```
{ {
"PublicServiceList":["logiclog"], "SubNet": [{
"Remark": "Manual,Full,Auto",
"NodeList":[ "SubNetMode": "Full",
"SubNetName": "SubNet1",
{ "PublicServiceList": ["logiclog"],
"NodeID":1, "NodeList": [{
"NodeName":"N_Node1", "NodeID": 1,
"ServerAddr":"127.0.0.1:8080", "NodeName": "N_Node1",
"ServiceList": [
"ServiceList":["CTestService1"], "HttpServerService",
"ClusterNode":["N_Node2"] "SubNet1_Service",
}, "SubNet1_Service1"
],
{ "ClusterNode":["SubNet2.N_Node1","N_Node2"]
"NodeID":2, },
"NodeName":"N_Node2", {
"ServerAddr":"127.0.0.1:8081", "NodeID": 2,
"ServiceList":["CTestService2","CTestService3"], "NodeName": "N_Node2",
"ClusterNode":[] "ServiceList": [
} "SubNet1_Service2"
],
] "ClusterNode":[]
}
]
},
{
"Remark": "Manual,Full,Auto",
"SubNetMode": "Full",
"SubNetName": "SubNet2",
"PublicServiceList": ["logiclog"],
"NodeList": [{
"NodeID": 3,
"NodeName": "N_Node1",
"ServiceList": [
"SubNet2_Service1"
],
"ClusterNode":["URQ.N_Node1"]
},
{
"NodeID": 4,
"NodeName": "N_Node4",
"ServiceList": [
"SubNet2_Service2"
],
"ClusterNode":[]
}
]
}
]
} }
``` ```
origin集群配置以子网的模式配置在每个子网下配置多个Node服务器,子网在应对复杂的系统时可以应用到各个子系统,方便每个子系统的隔离。
origin所有的结点与服务通过配置进行关联配置文件分为两大配置结点 origin所有的结点与服务通过配置进行关联配置文件分为两大配置结点
* PublicServiceList用于公共服务配置所有的结点默认会加载该服务列表 * SubNet配置子网以上配置中包括子网名为SubNet1与SubNet2,每个子网包含多个Node结点
* NodeListNode所有的列表 * SubNetMode子网模式Manual手动模式,Full通过配置全自动连接集群模式推荐模式,Auto自动模式
* NodeId: Node编号用于标识唯一的进程id * SubNetName子网名称
* NodeName: Node名称用于区分Node结点功能。例如可以是GameServer * PublicServiceList用于公共服务配置所有的结点默认会加载该服务列表
* ServerAddr: 结点监听的地址与端口 * SubNetMode子网集群模式
* ServiceList:结点中允许开启的服务列表 * NodeListNode所有的列表
* ClusterNode:将与列表中的Node产生集群关系。允许访问这些结点中所有的服务。 * NodeId: Node编号用于标识唯一的进程id
* NodeName: Node名称用于区分Node结点功能。例如可以是GameServer
* ServiceList:结点中允许开启的服务列表
* ClusterNode:将与列表中的Node产生集群关系。允许访问这些结点中所有的服务。允许集群其他子网结点例如URQ.N_Node1
origin集群核心配置文件config/nodeconfig.json如下:
---------------
```
{
"Public": {
"LogLevel": 1,
"HttpPort": 9400,
"WSPort": 9500,
"CAFile": [{
"CertFile": "",
"KeyFile": ""
},
{
"CertFile": "",
"KeyFile": ""
}
],
"Environment": "FS_Dev_LFY",
"IsListenLog": 1,
"IsSendErrorMail": 0
},
"NodeList": [{
"NodeID": 1,
"NodeAddr": "127.0.0.1:8081",
"LogLevel": 1,
"HttpPort": 7001,
"WSPort": 7000,
"CertFile": "",
"KeyFile": ""
},
{
"NodeID": 2,
"NodeAddr": "127.0.0.1:8082"
},
{
"NodeID": 3,
"NodeAddr": "127.0.0.1:8083"
},
{
"NodeID": 4,
"NodeAddr": "127.0.0.1:8084"
}
]
}
```
针对cluster.json中NodeId在该文件中配置具体环境的信息
* Public公共服务配置
* LogLevel日志等级 1:DEBUG 2:INFO 3:WARN 4:ERROR 5:FATAL。
* HttpPort当Node需要提供http服务时安装HttpServerService后将使用该监听端口。
* WSPort当Node需要提供Websocket服务时安装HttpServerService后将使用该监听端口。
* CAFile证书配置文件支持多个。
* NodeList
* NodeID结点ID在cluster.json中所有的Node都需要在该文件中配置。
* NodeAddr监听RPC地址与端口。
* 其他该配置可以继承Public中所有的配置可以在其中自定义LogLevel,HttpPort等。
origin第一个服务: origin第一个服务:
--------------- ---------------

View File

@@ -26,16 +26,13 @@
}, },
{ {
"Remark": "Manual,Full,Auto", "Remark": "Manual,Full,Auto",
"SubNetMode": "Full", "SubNetMode": "Full",
"SubNetName": "SubNet2", "SubNetName": "SubNet2",
"PublicServiceList": ["logiclog"], "PublicServiceList": ["logiclog"],
"NodeList": [{ "NodeList": [{
"NodeID": 30, "NodeID": 3,
"NodeName": "N_Node1", "NodeName": "N_Node1",
"ServiceList": [ "ServiceList": [
"SubNet2_Service1" "SubNet2_Service1"
@@ -43,7 +40,7 @@
"ClusterNode":["URQ.N_Node1"] "ClusterNode":["URQ.N_Node1"]
}, },
{ {
"NodeID": 40, "NodeID": 4,
"NodeName": "N_Node4", "NodeName": "N_Node4",
"ServiceList": [ "ServiceList": [
"SubNet2_Service2" "SubNet2_Service2"

View File

@@ -33,33 +33,18 @@
{ {
"NodeID":2, "NodeID":2,
"NodeAddr": "127.0.0.1:8082", "NodeAddr": "127.0.0.1:8082",
"LogLevel":1,
"HttpPort":7002,
"WSPort":7012,
"CertFile":"",
"KeyFile":""
} }
, ,
{ {
"NodeID":30, "NodeID":3,
"NodeAddr": "127.0.0.1:8083", "NodeAddr": "127.0.0.1:8083",
"LogLevel":1,
"HttpPort":7003,
"WSPort":7013,
"CertFile":"",
"KeyFile":""
} }
, ,
{ {
"NodeID":40, "NodeID":40,
"NodeAddr": "127.0.0.1:8084", "NodeAddr": "127.0.0.1:8084",
"LogLevel":1, "LogLevel":1
"HttpPort":7004,
"WSPort":7014,
"CertFile":"",
"KeyFile":""
} }
] ]
} }

View File

@@ -1,12 +1,15 @@
package main package main
import ( import (
"strings"
"github.com/duanhf2012/origin/cluster" "github.com/duanhf2012/origin/cluster"
"github.com/duanhf2012/origin/originnode" "github.com/duanhf2012/origin/originnode"
"github.com/duanhf2012/origin/sysservice" "github.com/duanhf2012/origin/sysservice"
) )
func main() { func main() {
strings.ReplaceAll
node := originnode.NewOriginNode() node := originnode.NewOriginNode()
if node == nil { if node == nil {
return return