如何把Space创建到指定Cellapp上?
把Space创建到指定Cellapp上
在《如何针对Space的创建进行负载均衡?》中,我们知道了在创建Space时,如何充分利用服务器资源,让整个系统负载均衡,但有些业务场景是要把Space空间创建到指定的Cellapp上,如某台服务器性能非常好,需要承载一些压力较高的Space空间。
本节就会围绕如何把Space空间创建到指定Cellapp上展开阐述。
背景
Space空间是在Cellapp服务器上的,其创建和销毁、用户的频繁交互、触发器和移动系统的计算、View视图的管理等都会在空间中进行。虽然它是一个内网环境,没有外部带宽的约束,但对CPU和内存方面的要求会相对高一些,服务器资源是相对固定的,所以开发者在设计系统时需要考虑如何把不同业务不同类型的房间平摊到不同Cellapp服务器上,把服务器资源充分利用起来。
核心API
Baseapp API-Entity.createCellEntityInNewSpace(cellappIndex),如果cellappIndex参数大于0则会创建到指定的Cellapp上。
假如预期会开启4个Cellapp,那么cellappIndex需要指定时,索引可以是1、2、3、4。这些需要开发者自己进行维护,并且明确你的目标Cellapp是什么索引。
引擎是默认把Cellapp设置为参与负载均衡的,所以在这种业务需求下,对应不参与负载均衡的CellApp需要在启动时进行配置,引擎提供了API:KBEngine.setAppFlags(KBEngine.APP_FLAGS_NOT_PARTCIPATING_LOAD_BALANCING)。可以在cell的入口脚本kbemain.py的onCellAppReady中进行设置。
应用场景
1、唯一的空间
有些应用中,某种空间是全局唯一的,比如ARPG类游戏中的主城。这种空间由于唯一性,所以一般会有比较高的压力承载。建议开发者选用高性能的服务器,并把该空间在服务器启动时创建在 对应的CellApp上。
应用举例:
- ARPG类游戏,其中的主城空间可采用该方式;
- MMORPG游戏,其中的主城空间。
2、业务复杂度高的空间
这类空间由于业务复杂度高,对服务器性能有一定要求,完全由负载均衡管理时,会徒增管理成本,无法合理利用服务器资源。所以会根据空间的类型,选择性的把空间创建到指定的服务器对应的Cellapp上。当然,开发者需要对这些Cellapp的索引进行维护,让BaseApp知道哪些CellApp索引是这类空间需要的。
应用举例:
- ARPG类游戏,其中的主城空间可采用该方式;
- MMORPG游戏,其中的主城空间。
相关参考
如何针对Space的创建进行负载均衡?