SL目前采用的是 http REST轻量级SOA+专用协议(区域主机),数据序列化格式目前使用的是XML,将来会增加Binary和Json格式。
SL的设计目标:
虚拟世界区域可伸缩性能
* 6千万地图区域 (或更多)
居民数量伸缩性:
* 20亿用户
同时在线用户数量伸缩性:
* 5千万 - 1亿的同时在线用户(无论来自哪个平台)
SL的核心架构是由区域(Region地图)世界域Domain和角色(Agent)世界域Domain构成。
区域服务是用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 搜索设置
角色服务用于处理角色相关的无状态信息,角色主机(Host)服务实际上角色会话服务,保持的是和角色相关的状态的信息,同样角色数据仓库为其数据层。
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)服务实际上角色会话服务,保持的是和角色相关的状态的信息,同样角色数据仓库为其数据层。