Sun game server , 简称 (sgs) 是 sun 公司的一个开源项目 , 主要目标是针对 mmo 游戏的服务器端开发.
SGS 提供的主要功能 :
l 服务器端的扩展 : 传统的扩展方法是将整个游戏区域分成多个区 , 不同的区运行在不同的游戏服务器上 . 这带来两个问题 , 一个是处于不同区的玩家不能互相交互 , 另外一个是如果某个区发生的动作较少时 , 会出现服务器资源未被充分利用的情况 . 而在 sgs 的处理方式下 , 所有的处理被分割成为一个个小的执行单元 ( 称为 task), 这些 task 可以在组成网络的任何 sgs 服务器上执行 , 当用户增加时 , 系统自动增加处理线程 , 不再需要为了扩展而将不同的区分配到不同的服务器上面 . 这样既提高了资源利用率 , 又可以让所有的玩家进行交互 .
l 数据完整性 : sgs 提供了一个分布式的数据存储 , 一个 task 需要访问数据时 , 通过数据存储 api 进行访问 , 数据访问具有事务支持 , 当两个 task 发生冲突时 ,sgs 会自动协调 , 较年轻的 task 重新调度等待执行 , 而年老的 task 将会执行并直到结束 . 当前版本中的 sgs 数据存储未使用关系数据库 , 而是使用了 berkeley db. 任何 java 对象 , 只要实现了 ManagedObject 标志接口 和 Serializable 接口后即可自动透明存储 .(sgs 的存储机制好像是可扩展的 , 论坛上已经看到有人在讨论 mysql 的存储插件 )
l 简单的编程模型 : 从应用开发的角度来看 ,sgs 提供了 api 屏蔽了多数的底层复杂性 , 例如线程调度 , 事务处理 , 等等 , 应用程序只需要开发并装配自己的对象 , 监听响应客户端事件 , 自己管理持久化的 ManagedObject 对象生命周期即可 .
l 两种通信模型 : 一种是 client/server 的通信 , 即每个 client 只和 server 通信 , 由 server 来负责数据的处理和转发 . 另外一种是 channel 机制 ( 类似一对多的广播 ),channel 由 server 创建并维护 , 每个 channel 可以添加多个 client,server 可以监听 channel 中的所有通信或者具体某个 client 的通信 . 也可以给 channel 中的全部或者部分 client 发送消息 . 加入 channel 的 client 可以收到其它任何 client 发送的消息 .channel 下面 client 之间的通信不需要 server 端的介入 . 由于所有通信的数据格式都是字节数组 , 所以应用程序需要开发自己的应用层协议 .
l 可扩展的机制 : sgs 应用程序访问数据 , 使用 channel, 创建 task 都是通过 ”Manager” 来进行的 . 目前一共有三种缺省的 ”Manager” ,DataManager,ChannelManager,Taskmanager. 但可以扩展开发自己的 Manager, 例如在 sgs 中要求 task 应该是尽量快的执行 (task 允许执行的时间上限可以配置 ) , 所以如果出现调用可能导致阻塞的系统方法时 , 就需要开发一个扩展的 Manager.
Darkstar是最终幻想11的开源模拟服务器,项目托管于github平台:地址https://github.com/DarkstarProject/darkstar。相比wow的开源服务器源码,总体上来讲代码实现还是比较简单的,适合入门。 darkStar总共有三个进程,分别对应查找服务器,登录服务器和地图服务器。darkStar是FFXI最终幻想11的模拟服务器,它的游戏逻辑主
我试图建立一个通用服务器总是在连接的客户端。 该体系结构由4个主要组件组成 有状态应用服务器 无状态网关服务器 客户排队 系统和经纪人 工艺流程 客户端连接到网关 我正在使用JavaNetty作为网关。appserver也是用Java编写的。 我很想说这个设计像Mongrel2,但我不能完全确定。我想说,这更符合城市飞艇氦边缘服务器的设计(http://urbanairship.com/blog/
JAGS 游戏服务器是一个开源的 Java / AS 3.0 的游戏服务器,支持多玩家、碰撞检测以及键盘事件等等。
1.问游戏经历,玩过什么游戏 2.操作系统的虚拟内存和物理内存 3.问项目,如果把你的项目需要长时间维护,怎么去保证高吞吐和容灾 4.一条长链路的设计会有什么问题,怎么去解决 5.如果让你设计一个朋友圈,你要怎么设计那些模块(点赞,通知,拉取,推送等方面) 6.很多数中找到前1000大的数 7.算法:反转链表
八股拷打(30min) 1. tcp的重传机制有哪几种?具体描述一下 2. override、final 3. epoll的边缘触发和水平触发 4. tcp的滑动窗口 5. stl的常用容器及其底层实现数据结构 6. static的用法和作用 7. 智能指针 8. 虚函数、虚表指针 9. 内存碎片 10. 索引的优缺点 11. 索引可以用哪些数据结构实现 还有其他的一些基础八股题,后面问的跟项目有
二本鼠鼠学Java没出路。。 技术面 - 50min - 9.26 自我介绍 介绍一下你的项目经历 MySQL索引底层结构 Redis有哪些数据结构 Redis的持久化机制 学过其他语言吗(c++和go),说一下c++、go、Java的区别 LRU怎么实现 最短路径算法实现 JVM垃圾回收算法 手撕在一排数据中算出不重复数据的子集 TCP三次握手 你知道什么是SYN攻击吗 TCP四次挥手为什么是四
过年回上海裸辞出去玩了一个月,5月回来找的工作,正好现在有时间了,抽空写一下社招面经,有些已经忘记了。裸辞还是太冲动了,菜鸡不配gap,两年工作经验不应该随便裸辞,还是太年轻、太狂妄了。当年校招腾讯、祖龙、小米等等offer随便拿,以为社招还跟校招一样简简单单,结果现在只能去个小公司养老了。 巨人网络(球球大作战) golang游戏后端,线下1、2、3面一起的 一面 项目架构图 pb的底层实现结构
1.自我介绍 2.算法题:8位数字首位相连成一个环,每位数字都是0或者1,输入一个8位数字,每次可以将一位翻转, 翻转时,这一位的前后各一位也会同时翻转,求最少的翻转次数,能够将输入的8位数转换为全0 3.实习相关项目介绍 4.项目相关问题 5.协程 6.reactor 剩下记不住了 #友塔游戏##C/C++##面经一面面经##游戏开发#
问题 自我介绍 问我在实习的时候做了什么 问我擅长的语言和技术 http的默认端口,https的默认端口 一个网卡上可以绑定多个ip吗 指向自身主机的ip地址 怎么不用第三个变量交换a和b的值,我答了异或,面试官问还有吗,我就说c++的swap和指令集的xchg make和cmake的区别 5L的水桶和3L的水桶怎么量出4L的水 交换机位于OSI模型的哪一层 问我玩过哪些游戏 总结 20多分钟就面