go-pitaya学习笔记(10)-worker demo分析

14 篇文章 11 订阅

 学习笔记: 我家别墅靠大海/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.urllocalhost:6379stringRedis url 火龙果工人用于注册工作
pitaya.worker.redis.pool10string与 Redis 保持的连接数
pitaya.worker.redis.password“”stringRedis password to connect to pitaya workers redis
pitaya.worker.concurrency1intNumber of workers to execute job
pitaya.worker.namespace“”stringWorker namespace, can be used to differ stacks in a blue-green deployment
pitaya.worker.retry.enabledtrueboolIf true, retry job if errored for max times
pitaya.worker.retry.max5intMax number of job retries
pitaya.worker.retry.exponential2intRetry job after backoff of nRetry**2
pitaya.worker.retry.minDelay0intMin time to wait on backoff to retry job
pitaya.worker.retry.maxDelay10intMax time to wait on backoff to retry job
pitaya.worker.retry.maxRandom10intRandom 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看的差不多了,但是感觉自己对于集群还是有点问题。

再测试一下集群

go-pitaya学习笔记(11) - 测试集群_冰纳-CSDN博客

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值