V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
V2EX  ›  hellodudu86  ›  全部回复第 3 页 / 共 6 页
回复总数  120
1  2  3  4  5  6  
2021 年 11 月 8 日
回复了 goforwardv2 创建的主题 程序员 游戏服务器和中间件
个人觉得没必要存在这个 proxy 服务,尤其是是单点的情况,十分危险。

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

GameSvr 无状态的话可以 roundrobin 。有状态的话应该是要保证同一个用户 id 数据转发到同一个 GameSvr 节点上,用一致性哈希或者自己定义一套用户 id 映射 GameSvr 节点 id 的算法。
2021 年 11 月 8 日
回复了 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)
}
2021 年 8 月 30 日
回复了 luojiedev 创建的主题 Go 编程语言 Go 游戏后端微服务后端求推荐
用 v3 版本
2021 年 7 月 20 日
回复了 shishirui 创建的主题 程序员 大家用 Macbook 的时候用什么 IDE 编辑器环境?求推荐
另外 vim 和 terminal 调试确实很麻烦,不如 vscode 调试来的方便
2021 年 7 月 20 日
回复了 shishirui 创建的主题 程序员 大家用 Macbook 的时候用什么 IDE 编辑器环境?求推荐
在终端里面用了好几年的 vim,近一年切换到 vscode+vim 插件了,虽然没有以前在终端里面各种快捷键切换 vim 和 terminal 来的方便,但是确实省心,建议楼主可以试一试。
2021 年 7 月 20 日
回复了 Turkestan 创建的主题 职场话题 上个班真累,动不动就被老员工摆一道
@gBurnX 别和他们争了兄弟,他们只是想喷领导傻逼,社会傻逼,zf 傻逼而已。
2021 年 6 月 23 日
回复了 ijrou 创建的主题 互联网 你们能把代码写得再复杂一点吗?活该加班加到死
老外的项目要是遇到这种无脑喷的你以为他会态度很好的给你回复嘛?不一样是直接 close 掉?天天有一波人提这种无聊的 issue,你试试看他关不关?
那么问题来了,是不是老外的项目这么做就是集中精力在开发上面,华为关闭 issue 就是删评控评?
2021 年 6 月 23 日
回复了 ijrou 创建的主题 互联网 你们能把代码写得再复杂一点吗?活该加班加到死
@imldy https://github.com/asim/go-micro
类似的例子太多了,开发者想要的是有帮助的 pr,而不是在 issue 上发表无意义的唠叨
2021 年 6 月 23 日
回复了 ijrou 创建的主题 互联网 你们能把代码写得再复杂一点吗?活该加班加到死
现在喷华为是 zzzq 吗?哪个项目遇到这种只知道发泄怨气的 issue 不会直接关闭的,老外 close 掉 issue 的时候应不应该喷呢?
2021 年 6 月 23 日
回复了 ijrou 创建的主题 互联网 你们能把代码写得再复杂一点吗?活该加班加到死
关 issue 的项目多了去了
2021 年 6 月 18 日
回复了 v2dev 创建的主题 问与答 [非推广] 可以选择 Coding 吗?
用了挺长一段时间,今天下午 ci 还炸了,其他总体来说还是不错的,重要的是基础功能全免费,ci 不想充值的话还可以把自己机器挂成节点来用
2021 年 6 月 18 日
回复了 SimbaPeng 创建的主题 Go 编程语言 关于 docker-compose 搭建 golang 本地开发环境的问题
你的目录结构和我的基本差不多,不过我不是开 golang 的容器来编译,要不就是本地交叉编译然后打包 docker 镜像,要不就是用代码托管的 ci 来跑打包,每次都 copy 进去感觉确实没有必要,挂载 volumn 把文件都映射进容器里面会比较好吧。
2021 年 6 月 16 日
回复了 szzhiyang 创建的主题 Windows 任务栏不在屏幕下方的朋友要做好心理准备了
Mac 用户强势围观(
我用的 loki+grafana,docker 里面的进程直接输出日志到 stdout 就行
2021 年 5 月 11 日
回复了 man9820 创建的主题 剧集 最近好无聊,有人推荐几部电视剧吗?不要科幻、偶像剧
《大江大河 1 》 《大江大河 2 》
linux 下和 windows 下底层运行逻辑不一样的,windows 下 ui 库基本都是 cgo 去调用 c/c++的接口,差别很大
2021 年 4 月 21 日
回复了 b00tyhunt3r 创建的主题 程序员 c++ 20 有人正经用起来了吗?谈谈感受啊
十一年 c++游戏后端开发,已全面转向 golang,早转早享受
2021 年 3 月 3 日
回复了 CodingNET 创建的主题 Coding Git 代码回滚与找回的艺术
nice
1  2  3  4  5  6  
About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5748 Online   Highest 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 497ms · UTC 02:56 · PVG 10:56 · LAX 19:56 · JFK 22:56
♥ Do have faith in what you're doing.