第一章,我们先一起完成一个简单的登录流程。虽说简单,但也涉及到了多个服务器和数据库,所以借此功能,我们刚好了解如何通过 pitaya 建立前后端服务器、进行服务器间通信。
本节代码:xyq10612/PitayaGame at chapter1.1-前后端服务期间通信 (github.com)
先建立工程,我这里命名是 “PitayaGame”,起名困难户……
同时把我们的两个服务器文件夹、go.mod go.work啥的都创建好:
参考 pitaya 的其他 demo 写法,创建默认的 ,添加 等:
作为路由的一部分是不会修改的,在代码里可以写死,端口需要可配置,所以开放到命令行参数里。
把服务器跑起来,没有问题~(注意 etcd 和 nats-server 记得开启,开启方法参考:0.准备工作)
有些通信协议是多个服务器都需要使用的,为了方便复用,我们干脆把所有的 proto 都放在一个公共包里:
define 目录用来存放 pb 定义,proto 目录用来存放生成的 go 文件。
我们先来为 注册 功能定义相应的 pb,顺便抽取出一些可复用的部分,比如 等。
err.proto:
common.proto:
account.proto:
PS:后续如果再有 pb 相关的代码段,就不再给出前面几行 package、option 之类的设置,不然代码太长了。
顺便在 define 目录下写一个生成脚本:
generate.bat:
PS: 关于如何生成 protobuf go 代码,网上也很多参考文章,我就不写了,懒……
跑完 bat 脚本,在 proto 目录下生成 go 代码。
在 proxyServer 里建立 service 文件夹,在这个示例中, service 作为服务提供方,用来处理消息,还有一种命名是 handler,这里沿用 pitaya demo 中的用法 —— service。
开启服务器,使用 pitaya-cli 测试一下账号服务的消息处理:
客户端发送请求,服务端正常打印了日志:
OK,初步调通。
lobby 服务器作为后端服务器,是不需要对外的,不需要添加 监听。
先测试前后端服务器的通信,没有具体逻辑,打印个log:
第 4 步里,我们是直接把注册请求返回的,现在我们修改一下代码,让 proxyServer 的 远程调用 lobbyServer 的 。
远程调用可以使用 和 ,后者需要指定 ,这里使用 ,底层会调用默认的路由方法 随机选择一个该类型服务器。
记得开启 etcd 和 nats-server,框架 RPC 默认就是通过 nats 实现的,对底层实现感兴趣的可以看看这篇文章:cluster grpc demo
开启 1 个 proxyServer 和 2 个 lobbyServer,使用 2 个 pitaya-cli 测试:
在 2 个 client 端都发出以上请求,根据默认的路由策略,这些请求会随机分配到 lobby1 或者 lobby2,lobby 侧输出了日志:
你也可以多开几个 client,看看这些请求最终都分配到哪个 lobby 上。
本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕,E-mail:975644476@qq.com
本文链接:http://www.gawce.com/tnews/286.html