JBoss 系列十三:JBoss集群与基于jGroups 的坦克大战游戏

本文介绍了如何在JBoss集群环境中使用jGroups实现坦克大战游戏,探讨了游戏架构、性能考虑及如何使用TCP替代UDP。通过坦克大战的例子展示了jGroups在状态复制中的应用,并提供了游戏监控的方法。
摘要由CSDN通过智能技术生成

内容概要

如下图为JBoss集群中数据复制的简单示意图


如图中所示的两个节点的JBoss集群,一般来说一个集群中我们需要将http会话、EJB、JMS、Hibernate二级缓存等在所有节点上保持同步,也就是说,任何一个节点上的这些数据发生变化,都需要将变化的数据复制到其他节点上。JBoss集群使用JGroups完成这一操作,这里我们不深入探讨JGroups怎样完成状态复制,这里我们说基于jGroups 的坦克大战游戏。

坦克大战是经典的角色对战游戏,游戏中可以有多个坦克参与,但所有坦克分为两种角色,两种角色的坦克可以发射炮弹相互攻击对方,当坦克被击中后坦克的生命值会减少,坦克生命值为零时坦克爆炸,坦克可以通过添加燃料来回复生命值,不同角色的坦克碰撞后生命值也会减少。一般我们可以通过键盘控制坦克进行游戏:

  • 通过键盘方向建(上下左右)控制坦克的移动和方向
  • 通过空格建发(space)射子弹
  • 通过F2建重新生成坦克(坦克被炸毁)
基于jGroups 的坦克大战游戏是通过Java语言,使用jGroups API实现的。游戏中所有坦克状态都必须保持同步,即任何一个坦克都必须知道所有其他坦克的状态,同时也需要将自己的状态发送给其它坦克。如下图为坦克大战游戏中数据复制的简单示意图:



如上图坦克状态包括:

  • 坦克方向
  • 坦克生命值
  • 坦克发射的子弹
  • 燃料位置
相比较JBoss集群中数据复制,基于jGroups 的坦克大战游戏数据复制是非常简单,即在游戏中任何一个节点上如上信息发生变化,需要将变化的内容复制到其他节点。我们使用jGroups来实现坦克状态的同步。本示例着眼方向还是jGroups的使用。我们知道jGroups是可靠多播通信工具包,Java应用可以使用该工具包构建多播通信应用。通常在实际应用中,我们需要考虑的问题包括:应用性能最优化,对应用实时监控,应用替代实施方案。我们将通过本示例讨论这些问题。

坦克大战游戏

运行坦克大战游戏

使用示JBoss Cluster Framework Demo 介绍

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值