更新教程

This commit is contained in:
boyce
2019-03-01 18:39:32 +08:00
parent 4a23d144cf
commit b4d5a6636e

View File

@@ -6,14 +6,14 @@ orgin 是一个由 Go 语言golang编写的分布式开源游戏服务器
orgin 解决的问题:
* orgin总体设计如go语言设计一样总是尽可能的提供简洁和易用的模式快速开发。
* 能够根据业务需求快速并灵活的制定服务器架构,甚至做到上线后根据负载需求动态调整
* 能够根据业务需求快速并灵活的制定服务器架构。
* 利用多核优势将不同的service配置到不同的node并能高效的协同工作。
* 将整个引擎抽象三大对象node,service,module。通过统一的组合模式管理游戏中各功能模块的关系。
* 有丰富并健壮的工具库。
Hello world!
---------------
下面我们来一步步的建立orgin服务器,先下载[orgin引擎](github.com/duanhf2012/origin),或者使用如下命令:
下面我们来一步步的建立orgin服务器,先下载[orgin引擎](),或者使用如下命令:
```go
go get -v -u github.com/duanhf2012/origin
```
@@ -82,7 +82,7 @@ orgin所有的结点与服务通过配置进行关联配置文件分为两大
orgin第一个服务:
---------------
我们准备新建两个服务分别是CTestService1与CTestService2。
我们准备的NodeId为1的结点下新建两个服务分别是CTestService1与CTestService2。
* config/cluster.json内容如下
```
{
@@ -98,7 +98,94 @@ orgin第一个服务:
]
}
```
* main.go运行代码
```go
package main
import (
"fmt"
"time"
"github.com/duanhf2012/origin/originnode"
"github.com/duanhf2012/origin/service"
)
//定义一个服务必需继承自service.BaseService
type CTestService1 struct {
service.BaseService
}
//服务的初始化
func (slf *CTestService1) OnInit() error {
fmt.Println("CTestService1.OnInit")
return nil
}
//服务运行返回值如果为true将会重复的进入OnRun
//直到返回false为止此函数只会进入一次
func (slf *CTestService1) OnRun() bool {
fmt.Println("CTestService1.OnRun")
return false
}
//当OnRun退出时调用OnEndRun可以收尾OnRun的运行处理
func (slf *CTestService1) OnEndRun() {
fmt.Println("CTestService1.OnEndRun")
}
type CTestService2 struct {
service.BaseService
}
func (slf *CTestService2) OnInit() error {
fmt.Println("CTestService2.OnInit")
return nil
}
func (slf *CTestService2) OnRun() bool {
fmt.Println("CTestService2.OnRun")
time.Sleep(time.Second * 5)
//返回true将重复进入
return true
}
func (slf *CTestService2) OnEndRun() {
fmt.Println("CTestService2.OnEndRun")
}
func main() {
//新建一个orgin node对象
node := originnode.NewOrginNode()
if node == nil {
return
}
//安装CTestService1与CTestService2服务
node.SetupService(&CTestService1{}, &CTestService2{})
node.Init()
node.Start()
}
```
通过以下命令运行:
```
main.exe NodeId=1
```
输出结果:
```
CTestService2.OnInit
CTestService1.OnInit
CTestService2.OnRun
CTestService1.OnRun
CTestService1.OnEndRun
CTestService2.OnRun
CTestService2.OnRun
CTestService2.OnRun
CTestService2.OnRun
```
通过日志可以确认在Node启动时分别驱动Service的OnInit,OnRun,OnEndRun上面的日志中CTestService2.OnRun会被循环调用
因为在OnRun的返回是true否则只会进入一次。如果你不需要OnRun可以不定义OnRun函数。