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