阅读文章

SecondLife核心架构浅析(1)

[日期:2008-04-15] 来源:  作者: [字体: ]

     SL目前采用的是 http REST轻量级SOA+专用协议(区域主机),数据序列化格式目前使用的是XML,将来会增加Binary和Json格式。
  
  SL的设计目标:
   虚拟世界区域可伸缩性能
   * 6千万地图区域 (或更多)
  
   居民数量伸缩性:
   * 20亿用户
  
   同时在线用户数量伸缩性:
   * 5千万 - 1亿的同时在线用户(无论来自哪个平台)
  
  SL的核心架构是由区域(Region地图)世界域Domain和角色(Agent)世界域Domain构成。
  
  
  一、区域(Region地图)Domain
  区域(Region地图)又分为区域服务,区域主机(Host)和区域数据仓库(Stores)等服务。
  区域服务是用Python编写的无状态的HTTP/REST Service,区域主机则是专用协议高效的在某个区域的消息状态服务,处理该区域内的一切交互,而区域数据仓库则是数据层服务。
  区域服务用于处理和区域相关的无状态信息:
   * Avatar 位置
   o avatar 在缩略图上的位置 (绿色的小点)
   o 来自其它角色的请求
   + 交谈
   + God / Support level
   * 对象信息
   o 元数据 (名称 / 说明 / 待售)
   + 搜索
   o 任务物品
   o 地理位置
   + 打造地图图像
   o 区域统计 (FPS/Frame Times/etc)
   * 土地信息
   o 名称 / 说明
   o 当能搜索才公开
  
  区域主机用于处理该区域的一切交互行为,也就是在SL中常提到的simulators。
   * 物理引擎
   * 脚本执行
   * 本地 avatar/脚本化聊天
  
  区域主机的划分是一个有意思的课题:
   区域的适度大小划分
   区域的角色(Agent)数
   物理运算的能力
   脚本执行能力
  可惜这部分并没有开源。
  
  区域数据仓库
  
  区域数据仓库存放了某个区域的数据:
   * 对象信息
   o 地理位置
   o 形状/贴图
   o 链接/组关系
   o 物品
   o 元数据
   + 名称 / 描述
   + 许可
   + 版本信息
   * 区域信息
   o 许可
   o 贴图
   o Logs
   o Metrics / Stats
   * Parcels(一小块土地)
   o 元数据
   + 名称 / 描述
   + 许可
   + 元数据
   o 搜索设置
  
  
  角色(Agents)
  角色(Agents)也同样分为角色服务,角色主机(Host)以及角色数据仓库等服务。
  角色服务用于处理角色相关的无状态信息,角色主机(Host)服务实际上角色会话服务,保持的是和角色相关的状态的信息,同样角色数据仓库为其数据层。
    


阅读:
录入:blue1000

评论 】 【 推荐 】 【 打印
上一篇:免费的狗食!
下一篇:Asp.net程序中生成Excel报表
相关文章      
本文评论
发表评论


点评: 字数
姓名:

  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款