Files
origin/README.md
2019-03-01 17:12:49 +08:00

3.0 KiB
Raw Blame History

orgin 游戏服务器引擎简介

orgin 是一个由 Go 语言golang编写的分布式开源游戏服务器引擎。Leaf 适用于各类游戏服务器的开发,包括 H5HTML5游戏服务器。

orgin 解决的问题:

  • orgin总体设计如go语言设计一样总是尽可能的提供简洁和易用的模式快速开发。
  • 能够根据业务需求快速并灵活的制定服务器架构,甚至做到上线后根据负载需求动态调整。
  • 利用多核优势将不同的service配置到不同的node并能高效的协同工作。
  • 将整个引擎抽象三大对象node,service,module。通过统一的组合模式管理游戏中各功能模块的关系。
  • 有丰富并健壮的工具库。

Hello world!

下面我们来一步步的建立orgin服务器,先下载orgin引擎,或者使用如下命令:

go get -v -u  github.com/duanhf2012/origin

于是下载到GOPATH环境目录中,在src中加入main.go,内容如下:

package main

import (
	"github.com/duanhf2012/origin/originnode"
)

func main() {
	node := originnode.NewOrginNode()
	if node == nil {
		return
	}

	node.Init()
	node.Start()
}

一个orgin服务器需要创建一个node对象然后必需有Init和Start的流程。

orgin引擎三大对象关系

  • Node: 可以认为每一个Node代表着一个orgin进程
  • Service:一个独立的服务可以认为是一个大的功能模块他是Node的子集创建完成并安装Node对象中。服务可以支持外部RPC和HTTP接口对外功能。
  • Module: 这是orgin最小对象单元非常建议所有的业务模块都划分成各个小的Module组合。Module可以建立树状关系。Service也是Module的类型。

orgin集群核心配置文件config/cluser.json如下:

{
"PublicServiceList":["logiclog"],

"NodeList":[

{
	"NodeID":1,
	"NodeName":"N_Node1",
	"ServerAddr":"127.0.0.1:8080",
	
	"ServiceList":["CTestService1"],
	"ClusterNode":["N_Node2"]
},

{
	"NodeID":2,
	"NodeName":"N_Node2",
	"ServerAddr":"127.0.0.1:8081",
	"ServiceList":["CTestService2","CTestService3"],
	"ClusterNode":[]
}

]
}

orgin所有的结点与服务通过配置进行关联配置文件分为两大配置结点

  • PublicServiceList用于公共服务配置所有的结点默认会加载该服务列表。
  • NodeListNode所有的列表
    • NodeId: Node编号用于标识唯一的进程id
    • NodeName: Node名称用于区分Node结点功能。例如可以是GameServer
    • ServerAddr: 结点监听的地址与端口
    • ServiceList:结点中允许开启的服务列表
    • ClusterNode:将与列表中的Node产生集群关系。允许访问这些结点中所有的服务。

orgin第一个服务:

我们准备新建两个服务分别是CTestService1与CTestService2。

  • config/cluster.json内容如下
{
"NodeList":[
{
	"NodeID":1,
	"NodeName":"N_Node1",
	"ServerAddr":"127.0.0.1:8080",
	
	"ServiceList":["CTestService1","CTestService2"],
	"ClusterNode":[]
}
]
}