学习笔记: 我家别墅靠大海/pitaya-learn
尝试集成功能:我家别墅靠大海/pitaya-game
如果你正在看此笔记,请你左边放笔记,右边放chatdemo的代码!!
我是按代码的顺序记的笔记
复制demo worker过来
这里的worker 指的是
谷歌翻译
看一下源码
main.go
看起来我们还要搞个redis。
直接搞个编译完的zip就行。。
redis:https://github.com/tporadowski/redis/releases
就用他默认配置了
测一下,好像可以
worker大概有这么多配置
文档:Configuration — Pitaya documentation
pitaya.worker.redis.url | localhost:6379 | string | Redis url 火龙果工人用于注册工作 |
---|---|---|---|
pitaya.worker.redis.pool | 10 | string | 与 Redis 保持的连接数 |
pitaya.worker.redis.password | “” | string | Redis password to connect to pitaya workers redis |
pitaya.worker.concurrency | 1 | int | Number of workers to execute job |
pitaya.worker.namespace | “” | string | Worker namespace, can be used to differ stacks in a blue-green deployment |
pitaya.worker.retry.enabled | true | bool | If true, retry job if errored for max times |
pitaya.worker.retry.max | 5 | int | Max number of job retries |
pitaya.worker.retry.exponential | 2 | int | Retry job after backoff of nRetry**2 |
pitaya.worker.retry.minDelay | 0 | int | Min time to wait on backoff to retry job |
pitaya.worker.retry.maxDelay | 10 | int | Max time to wait on backoff to retry job |
pitaya.worker.retry.maxRandom | 10 | int | Random time to wait during backoff |
demo依旧是集群方式进行
room 前端服务器
metagame 后端服务器
worker 可靠的rpc
protoc请求依旧很麻烦,我们给前端服务器改成字节切片
room.go
main.go
新建个客户端文件测试
mydemo/demo3/client.go
package main
import (
"fmt"
"time"
"github.com/sirupsen/logrus"
"github.com/topfreegames/pitaya/v2/client"
pb "github.com/topfreegames/pitaya/v2/examples/demo/worker/protos"
"github.com/topfreegames/pitaya/v2/serialize/protobuf"
)
func main() {
c := client.New(logrus.InfoLevel, 100*time.Millisecond)
err := c.ConnectTo(":3250")
if err != nil {
fmt.Println(" conn server error :", err)
return
}
go func(c client.Client) {
for {
select {
case data := <-c.MsgChannel():
if data.Err {
fmt.Println("error :", string(data.Data))
break
}
fmt.Printf("data: %#v\n", data)
var res pb.Response
protobuf.NewSerializer().Unmarshal(data.Data, res)
fmt.Printf("res: %#v\n", res)
}
}
}(*c)
_, err = c.SendRequest("room.room.calllog", []byte(""))
if err != nil {
fmt.Println("send request error")
return
}
select {}
}
分别启动三个服务器
PS D:\Work\pitaya-test-game\demo\worker> go run .\main.go -type room
PS D:\Work\pitaya-test-game\demo\worker> go run .\main.go -port 3251 -type metagame -frontend=false
PS D:\Work\pitaya-test-game\demo\worker> go run .\main.go -type worker -port 3252
测试
测试是过了的
看看代码,
worker.go
就这一个是陌生的东西,可靠的rpc请求,也是我们这个worker demo主要想说的东西
进去看一下,一共有4个不同的rpc请求方法,前两种就是不可靠的。
可靠和不可靠上面记过了
请求来到了metagame这边。
单纯的打印些东西
看下worker
他这边启动了,worker并且注册了rpcjob
rpcJob要实现rpc.job的接口 ,也就是需要实现个rpc分发器
demo看的差不多了,但是感觉自己对于集群还是有点问题。
再测试一下集群