sun game server (sgs)初探

简介:

sun game server (sgs)初探

文章分类:Java编程 关键字: flex game

Sun game server , 简称 (sgs) 是 sun 公司的一个开源项目 , 主要目标是针对 mmo 游戏的服务器端开发 . 最初是从 Nighthaven 的博客文章 (http://nighthaven.javaeye.com/blog/181431 ) 上了解到 sgs 项目 , 在大致了解了一下它提供的功能后 , 对其发生了兴趣 , 经过一段时间的研究 , 有了一些心得 . 下面就是这些心得的一个总结 , 最后提供一个使用 sgs 做服务器的对战俄罗斯 .

SGS 提供的主要功能 :

服务器端的扩展 : 传统的扩展方法是将整个游戏区域分成多个区 , 不同的区运行在不同的游戏服务器上 . 这带来两个问题 , 一个是处于不同区的玩家不能互相交互 , 另外一个是如果某个区发生的动作较少时 , 会出现服务器资源未被充分利用的情况 . 而在 sgs 的处理方式下 , 所有的处理被分割成为一个个小的执行单元 ( 称为 task), 这些 task 可以在组成网络的任何 sgs 服务器上执行 , 当用户增加时 , 系统自动增加处理线程 , 不再需要为了扩展而将不同的区分配到不同的服务器上面 . 这样既提高了资源利用率 , 又可以让所有的玩家进行交互 .

数据完整性 : sgs 提供了一个分布式的数据存储 , 一个 task 需要访问数据时 , 通过数据存储 api 进行访问 , 数据访问具有事务支持 , 当两个 task 发生冲突时 ,sgs 会自动协调 , 较年轻的 task 重新调度等待执行 , 而年老的 task 将会执行并直到结束 . 当前版本中的 sgs 数据存储未使用关系数据库 , 而是使用了 berkeley db. 任何 java 对象 , 只要实现了 ManagedObject 标志接口 和 Serializable 接口后即可自动透明存储 .(sgs 的存储机制好像是可扩展的 , 论坛上已经看到有人在讨论 mysql 的存储插件 )

简单的编程模型 : 从应用开发的角度来看 ,sgs 提供了 api 屏蔽了多数的底层复杂性 , 例如线程调度 , 事务处理 , 等等 , 应用程序只需要开发并装配自己的对象 , 监听响应客户端事件 , 自己管理持久化的 ManagedObject 对象生命周期即可 .

两种通信模型 : 一种是 client/server 的通信 , 即每个 client 只和 server 通信 , 由 server 来负责数据的处理和转发 . 另外一种是 channel 机制 ( 类似一对多的广播 ),channel 由 server 创建并维护 , 每个 channel 可以添加多个 client,server 可以监听 channel 中的所有通信或者具体某个 client 的通信 . 也可以给 channel 中的全部或者部分 client 发送消息 . 加入 channel 的 client 可以收到其它任何 client 发送的消息 .channel 下面 client 之间的通信不需要 server 端的介入 . 由于所有通信的数据格式都是字节数组 , 所以应用程序需要开发自己的应用层协议 .

可扩展的机制 : sgs 应用程序访问数据 , 使用 channel, 创建 task 都是通过 ”Manager” 来进行的 . 目前一共有三种缺省的 ”Manager” ,DataManager,ChannelManager,Taskmanager. 但可以扩展开发自己的 Manager, 例如在 sgs 中要求 task 应该是尽量快的执行 (task 允许执行的时间上限可以配置 ) , 所以如果出现调用可能导致阻塞的系统方法时 , 就需要开发一个扩展的 Manager.

目前 sgs 提供了 c 和 java 的客户端库 , 但协议是开放的 , 已经有人开发出了支持 as3 和 python 的客户端库 (https://darkstar-as-client.dev.java.net/ ).
本文转自jiahuafu博客园博客,原文链接http://www.cnblogs.com/jiahuafu/archive/2010/06/13/1757705.html如需转载请自行联系原作者

jiahuafu

相关文章
|
9月前
|
安全 C# 开发工具
将 EasySQLite 从 .NET 8 升级到 .NET 9
将 EasySQLite 从 .NET 8 升级到 .NET 9
133 31
|
机器学习/深度学习 数据采集 分布式计算
【机器学习】XGBoost: 强化学习与梯度提升的杰作
在机器学习的广阔领域中,集成学习方法因其卓越的预测性能和泛化能力而备受瞩目。其中,XGBoost(Extreme Gradient Boosting)作为梯度提升决策树算法的杰出代表,自其诞生以来,便迅速成为数据科学竞赛和工业界应用中的明星算法。本文旨在深入浅出地介绍XGBoost的核心原理、技术优势、实践应用,并探讨其在模型调优与解释性方面的考量,为读者提供一个全面且深入的理解框架。
558 2
|
9月前
|
网络协议 关系型数据库 MySQL
云端问道高效学生班3期-方案讲解
本期主题为“云端问道高效学生班3期-方案讲解”,重点介绍阿里云的SSL证书管理服务、云解析DNS和RDS MySQL等产品。SSL证书确保网站数据安全传输,满足应用生态的安全合规要求;云解析DNS提供权威的域名解析服务,保障访问速度与稳定性;RDS MySQL支持高并发和大数据量处理,提升数据库性能。此外,专有网络VPC提供灵活的私网环境,确保网络安全隔离并支持多种接入方式。
|
数据可视化 前端开发
数据可视化之antv/g6 交互与事件及自定义Behavior
数据可视化之antv/g6 交互与事件及自定义Behavior
1776 1
|
网络协议 Linux
【Linux C TCP服务器端-epoll案例】
本文主要介绍了linux下Select的TCP通信流程,实现了客户端和服务器的通信,主要实现了消息的回发,即服务器将消息原封不动的回发给客户端。
159 0
|
安全 关系型数据库 MySQL
Mysql修改root用户密码
进入mysql的安装目录的bin目录、停止mysql服务、以安全模式启动mysql、重新打开一个cmd窗口,启动mysql服务,回车跳过密码输入、切换数据库到mysql,修改密码,然后刷新权限、修改后退出,重启服务。
664 0
Mysql修改root用户密码
|
消息中间件 Java RocketMQ
《Rocket MQ 使用排查指南8-13》电子版下载
发送消息耗时太久?客户端发送常见异常报错?启动发送端连接异常?Java 进程消息堆积严重...这些问题都有答案啦!详细的排查步骤和问题回答帮你快速搞定Rocket MQ使用过程中的各类问题。还有细致的问题原因分析和最佳的问题解决方案。100+常见问题,《Rocket MQ 使用排查指南》一本搞定!还等什么?即刻下载阅读吧!
113 0
《Rocket MQ 使用排查指南8-13》电子版下载
|
传感器 测试技术 芯片
可编程 USB 转串口适配器开发板连接计算机使用S2STool工具
S2STool 是为 S2S 固件开发的测试工具,运行于 Windows 平台,内置串口调试助手和 S2S 参数配置工具,支持动态解析自定义的芯片驱动,用户可自行编写、修改、增加任何芯片的驱动程序, 方便对芯片进行测试和评估。
可编程 USB 转串口适配器开发板连接计算机使用S2STool工具
|
存储 安全 网络协议
信息收集(上)
信息收集是安全渗透测试非常重要的环节,在对目标进行安全渗透之前,需要充分掌握目标的基本信息,通过这些基本信息了解目标的情况,为后续的渗透提供支持。掌握的信息越多、越全面,渗透成功的概率就越大。
|
程序员 测试技术
编程的乐趣与苦恼
首先是一种创建事物的纯粹快乐。如同小孩在玩泥巴时感到愉快一样,成年人喜欢创建事物,特别是自己进行设计。我想这种快乐是上帝创造世界的折射,一种呈现在每片独特、崭新的树叶和雪花上的喜悦。
242 0