hellodudu86 最近的时间轴更新
hellodudu86

hellodudu86

V2EX 第 261996 号会员,加入于 2017-10-24 15:29:10 +08:00
今日活跃度排名 22223
hellodudu86 最近回复了
27 天前
回复了 goforwardv2 创建的主题 程序员 游戏服务器和中间件
@goforwardv2 我用的 gRPC ,想自定义负载均衡算法的话可以参考下官方的文档 https://github.com/grpc/grpc-go/tree/master/examples/features/load_balancing
28 天前
回复了 goforwardv2 创建的主题 程序员 游戏服务器和中间件
个人觉得没必要存在这个 proxy 服务,尤其是是单点的情况,十分危险。

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

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

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

至于你所说的网关存在单点故障的问题,我不觉得这个和分布式部署有何矛盾之处,AccessSvr+proxy 的本质就是建立一条客户端和 GameSvr 的连接并且转发双方的数据,这条连接应该是没有状态的,就算挂掉了一个 AccessSvr 服务,客户端重连后在另一台 AccessSvr 重新建立连接即可,对于用户来说几乎是无感知的。唯一需要处理的是同一个用户 id 只能在 AccessSvr 集群上有一条连接,这个用一致性哈希可以保证。引入 MQ 并不能解决这个问题
另外 vim 和 terminal 调试确实很麻烦,不如 vscode 调试来的方便
在终端里面用了好几年的 vim,近一年切换到 vscode+vim 插件了,虽然没有以前在终端里面各种快捷键切换 vim 和 terminal 来的方便,但是确实省心,建议楼主可以试一试。
139 天前
回复了 Turkestan 创建的主题 职场话题 上个班真累,动不动就被老员工摆一道
@gBurnX 别和他们争了兄弟,他们只是想喷领导傻逼,社会傻逼,zf 傻逼而已。
老外的项目要是遇到这种无脑喷的你以为他会态度很好的给你回复嘛?不一样是直接 close 掉?天天有一波人提这种无聊的 issue,你试试看他关不关?
那么问题来了,是不是老外的项目这么做就是集中精力在开发上面,华为关闭 issue 就是删评控评?
关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1112 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 11ms · UTC 21:13 · PVG 05:13 · LAX 13:13 · JFK 16:13
♥ Do have faith in what you're doing.