diff --git a/README.md b/README.md index dc6e246..8fc492c 100644 --- a/README.md +++ b/README.md @@ -14,17 +14,7 @@ origin 解决的问题: Hello world! ------------ -下面我们来一步步的建立origin服务器,先下载[origin引擎](https://github.com/duanhf2012/origin "origin引擎"),或者使用如下命令: - -```go -go get -v -u github.com/duanhf2012/origin/v2 -``` -建议使用origin v2版本(import引用中都加入v2) - - - -[README.md](README.md) -于是下载到GOPATH环境目录中,在src中加入main.go,内容如下: +下面我们来一步步的建立origin服务器,建议使用origin v2版本,内容如下: ```go package main @@ -43,11 +33,19 @@ func main() { 一个origin进程需要创建一个node对象,Start开始运行。您也可以直接下载origin引擎示例: ``` -go get -v -u github.com/duanhf2012/originserver_v2 +git clone https://github.com/duanhf2012/originserver_v2.git ``` 本文所有的说明都是基于该示例为主。 +我们也提供了示例项目,包含网络模块(支持tcp,kcp,websocket)、角色加载登录流程,存档,配置读取等功能。请参照: + +``` +git clone https://github.com/duanhf2012/origingame.git +``` + + + origin引擎三大对象关系 ---------------------- @@ -69,16 +67,10 @@ origin的配置文件以json格式,主要包含Discovery、RpcMode、NodeList } ``` - - - - ### Discovery部分 origin目前支持etcd与origin自带的服务发现类型。 - - Etcd方式示例: ```json @@ -106,8 +98,6 @@ NetworkName:所在的网络名称,可以配置多个。node会往对应的 Endpoints:Etcd服务器地址 - - Origin方式示例: ```json @@ -130,8 +120,6 @@ TTLSecond:表示健康检查TTL失效时间10秒 MasterNodeList:指定哪些Node为服务发现Master结点,需要配置NodeId与ListenAddr,注意它们要与实际的Node配置一致。 - - ### RpcMode部分 默认模式 @@ -146,8 +134,6 @@ MasterNodeList:指定哪些Node为服务发现Master结点,需要配置NodeI 默认模式下,origin的node之前通过tcp连接组网。 - - Nats模式 ```json @@ -167,8 +153,6 @@ NatsUrl:Nats连接url串 NoRandomize:在多连接集群模式下,连接nats节点是否顺序策略。false表示随机连接,true表示顺序连接。 - - ### NodeList部分 ``` @@ -212,8 +196,6 @@ NoRandomize:在多连接集群模式下,连接nats节点是否顺序策略。f 在启动程序命令originserver -start nodeid="node_1"中nodeid就是根据该配置装载服务。 更多参数使用,请使用originserver -help查看。 - - ### Service 部分 service.json如下: @@ -232,7 +214,7 @@ service.json如下: "Certfile":"", "Keyfile":"" }] - + }, "TcpService":{ "ListenAddr":"0.0.0.0:9030", @@ -318,8 +300,6 @@ service.json如下: * PendingWriteNum:发送网络队列最大数量 * MaxMsgLen:包最大长度 - - ### Global部分 ```json @@ -342,8 +322,6 @@ if ok == false { areaId, ok := mapGlobal["AreaId"] ``` - - --- 第一章:origin基础: @@ -510,7 +488,6 @@ func (slf *TestService1) OnInit() error { } ``` - 性能监控功能: ------------- @@ -825,8 +802,8 @@ func (slf *TestService7) CallTest(){ }else{ fmt.Printf("Call output %d\n",output) } - - + + //自定义超时,默认rpc超时时间为15s,以下设置1秒钟超过 err = slf.CallWithTimeout(time.Second*1, "TestService6.RPC_Sum", &input, &output) if err != nil { @@ -865,7 +842,7 @@ func (slf *TestService7) AsyncCallTest(){ }) //rpcCancel() fmt.Println(err, rpcCancel) - + } func (slf *TestService7) GoTest(){ @@ -887,20 +864,22 @@ func (slf *TestService7) GoTest(){ 您可以把TestService6配置到其他的Node中,比如NodeId为2中。只要在一个子网,origin引擎可以无差别调用。开发者只需要关注Service关系。同样它也是您服务器架构设计的核心需要思考的部分。 - 第六章:并发函数调用 ---------------- +-------------------- + 在开发中经常会有将某些任务放到其他协程中并发执行,执行完成后,将服务的工作线程去回调。使用方式很简单,先打开该功能如下代码: + ``` //以下通过cpu数量来定开启协程并发数量,建议:(1)cpu密集型计算使用1.0 (2)i/o密集型使用2.0或者更高 slf.OpenConcurrentByNumCPU(1.0) - + //以下通过函数打开并发协程数,以下协程数最小5,最大10,任务管道的cap数量1000000 //origin会根据任务的数量在最小与最大协程数间动态伸缩 //slf.OpenConcurrent(5, 10, 1000000) ``` 使用示例如下: + ``` func (slf *TestService13) testAsyncDo() { @@ -954,9 +933,8 @@ func (slf *TestService13) testAsyncDo() { } ``` - 第七章:服务发现 --------------------- +---------------- origin引擎默认使用读取所有结点配置的进行确认结点有哪些Service。引擎也支持动态服务发现的方式,支持etcd与origin类型,具体请参照【配置说明】部分,Node结点可以配置只发现某些服务,如下示例: @@ -979,12 +957,11 @@ origin引擎默认使用读取所有结点配置的进行确认结点有哪些Se }] } ``` + DiscoveryService:在当前nodeid为nodeid_test的结点中,只发现 MasterNodeId为nodeid_1或NetworkName为networkname1网络中的TestService8服务。 **注意**:MasterNodeId与NetworkName只配置一个,分别在模式为origin或者etcd服务发现类型时。 - - 第八章:HttpService使用 -----------------------