4

Java 游戏后端开发入门, 涉及 quarkus vertx 最近一些思考

 1 year ago
source link: https://www.v2ex.com/t/878539
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

V2EX  ›  程序员

Java 游戏后端开发入门, 涉及 quarkus vertx 最近一些思考

  ddonano · 2 小时 17 分钟前 · 994 次点击
最近项目组开发直播在线类 unity 游戏,类似于 MMO 游戏,有房间、 多人在线概念,房间内人员加入、走动、退出,都要通知到的房间内其他人,所以需要一个高性能用户状态(主要是坐标位置信息)消息广播转发服务,当前的服务 基于 nodejs ,使用 koa 路由,grpc 转发,
由于本人一直从事 java 后端开发,所以想用 java 开发一个消息转发服务。

网上找资料零零散散找了很久,目前已经出来一个基础的 demo ,

基本架构:
提供的 url: interface/{userId}/{teamId}

负载:使用 nginx url hash
通过 hash teamId 将相同房间的负载到同一台机器,规避了服务器间相互调用。

服务:
使用了 quarkus 自带的 ServerEndpoint 注解的 websocket ,自带的 websocket 好像目前版本也用到了 vertx 这些,自己创建 map 管理 组内成员状态,这样组内广播也是单服务广播,暂时基本满足需求,无须全服广播,后期不确定有没有这个需求。 后期准备加入 verx cluster 这些特性,支持分布式。

目前进展:
正在找工具压测,
压测目标: 至少 100 个连接同时在一个房间内,一个新成员加入房间,随机生成坐标信息,通知到房内所有人(最大 99 人),同时房间内所有人当前坐标信息通知给这个新成员( 99+1 条消息)。当成员移动时,将坐标信息 发给房间内所有其他人( 99 条消息)。


网上找了一个工具 https://github.com/MirrenTools/Orion-Stress-Tester ,魔改了一下,支持我当前服务接口的 动态传参,但是初步测试了下,感觉性能也不是很强,是不是 quarkus 自带的 websocket 不是很强,看了下基于 undertow ,压测一会就有连接报错,感觉性能也不是很强?有大佬知道啥原因不,或者有兴趣的,一起交流下,
或者有其他 websocket 高性能广播转发开源组件 也可以推荐,谢谢大佬们了。

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK