V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  hellodudu86  ›  全部回复第 1 页 / 共 5 页
回复总数  81
1  2  3  4  5  
20 天前
回复了 goforwardv2 创建的主题 程序员 游戏服务器和中间件
@goforwardv2 我用的 gRPC ,想自定义负载均衡算法的话可以参考下官方的文档 https://github.com/grpc/grpc-go/tree/master/examples/features/load_balancing
21 天前
回复了 goforwardv2 创建的主题 程序员 游戏服务器和中间件
个人觉得没必要存在这个 proxy 服务,尤其是是单点的情况,十分危险。

rpc 的 load balance 有很多种算法,一般调用的时候选择作为参数就行,或者有需求可以自定义一个负载均衡算法。

GameSvr 无状态的话可以 roundrobin 。有状态的话应该是要保证同一个用户 id 数据转发到同一个 GameSvr 节点上,用一致性哈希或者自己定义一套用户 id 映射 GameSvr 节点 id 的算法。
21 天前
回复了 goforwardv2 创建的主题 程序员 游戏服务器和中间件
如果我没理解错的话,楼主说的 AccessSvr 和 proxy 是一个类似具有负载均衡的网关服务,主要功能是转发客户端请求到对应的 GameSvr 、并且返回 GameSvr 的结果给客户端?

这种情况下用 MQ 确实是不合适的,因为你的用户所在 AccessSvr 和 GameSvr 是一一对应的,MQ 并不能保证消费者是哪一个节点。如果没有延迟返回结果或者持久化用户请求的需求的话可以考虑用 rpc 替代 proxy 服务。

至于你所说的网关存在单点故障的问题,我不觉得这个和分布式部署有何矛盾之处,AccessSvr+proxy 的本质就是建立一条客户端和 GameSvr 的连接并且转发双方的数据,这条连接应该是没有状态的,就算挂掉了一个 AccessSvr 服务,客户端重连后在另一台 AccessSvr 重新建立连接即可,对于用户来说几乎是无感知的。唯一需要处理的是同一个用户 id 只能在 AccessSvr 集群上有一条连接,这个用一致性哈希可以保证。引入 MQ 并不能解决这个问题
package main

import "fmt"

type MysqlConfig struct{}

type MongoConfig struct{}

func newCfg(source string) interface{} {
if source == "mysql" {
return &MysqlConfig{}
} else {
return &MongoConfig{}
}
}

func main() {
mysqlCfg := newCfg("mysql").(*MysqlConfig)
mongoCfg := newCfg("mongo").(*MongoConfig)
fmt.Printf("%T\n%T\n", mysqlCfg, mongoCfg)
}
91 天前
回复了 Rooger 创建的主题 Go 编程语言 Go 游戏后端微服务后端求推荐
用 v3 版本
另外 vim 和 terminal 调试确实很麻烦,不如 vscode 调试来的方便
在终端里面用了好几年的 vim,近一年切换到 vscode+vim 插件了,虽然没有以前在终端里面各种快捷键切换 vim 和 terminal 来的方便,但是确实省心,建议楼主可以试一试。
132 天前
回复了 Turkestan 创建的主题 职场话题 上个班真累,动不动就被老员工摆一道
@gBurnX 别和他们争了兄弟,他们只是想喷领导傻逼,社会傻逼,zf 傻逼而已。
老外的项目要是遇到这种无脑喷的你以为他会态度很好的给你回复嘛?不一样是直接 close 掉?天天有一波人提这种无聊的 issue,你试试看他关不关?
那么问题来了,是不是老外的项目这么做就是集中精力在开发上面,华为关闭 issue 就是删评控评?
@imldy https://github.com/asim/go-micro
类似的例子太多了,开发者想要的是有帮助的 pr,而不是在 issue 上发表无意义的唠叨
现在喷华为是 zzzq 吗?哪个项目遇到这种只知道发泄怨气的 issue 不会直接关闭的,老外 close 掉 issue 的时候应不应该喷呢?
关 issue 的项目多了去了
164 天前
回复了 zhuwd 创建的主题 问与答 [非推广] 可以选择 Coding 吗?
用了挺长一段时间,今天下午 ci 还炸了,其他总体来说还是不错的,重要的是基础功能全免费,ci 不想充值的话还可以把自己机器挂成节点来用
你的目录结构和我的基本差不多,不过我不是开 golang 的容器来编译,要不就是本地交叉编译然后打包 docker 镜像,要不就是用代码托管的 ci 来跑打包,每次都 copy 进去感觉确实没有必要,挂载 volumn 把文件都映射进容器里面会比较好吧。
Mac 用户强势围观(
我用的 loki+grafana,docker 里面的进程直接输出日志到 stdout 就行
《大江大河 1 》 《大江大河 2 》
linux 下和 windows 下底层运行逻辑不一样的,windows 下 ui 库基本都是 cgo 去调用 c/c++的接口,差别很大
222 天前
回复了 b00tyhunt3r 创建的主题 程序员 c++ 20 有人正经用起来了吗?谈谈感受啊
十一年 c++游戏后端开发,已全面转向 golang,早转早享受
1  2  3  4  5  
关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1122 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 25ms · UTC 19:59 · PVG 03:59 · LAX 11:59 · JFK 14:59
♥ Do have faith in what you're doing.