skynet 一个agent多个玩家的优缺点
一个agent多个玩家的优缺点
优点:
1 省内存
缺点:
1 破坏了actor模式,破坏了lua天生的沙盒模式。
2 因为一般一个skynet会启动n个agent的service,那么就需要额外维护负载均衡,并且这个负载均衡是内嵌到框架里的。
3 skynet的worker线程,首先会先判断上一次执行的次级消息队列,如果上一次的消息队列里还有剩余消息,那么会继续执行该消息队列的消息,那么如果一个玩家多个agent,大概率会出现这个消息队列一直有消息的情况,那么有可能会出现此worker线程在一段时间内只处理该消息队列的消息,那么对其他service,例如公会服务的消息有失公平。
4 每次有消息的时候,agent必须先判断此次uid的值,所以每次消息过来都必须要显示带入一些区分user的参数。
5 因为破坏了lua天生的沙盒环境,那么当用lua的闭包时要小心翼翼(增加了代码负担)。
6 gc问题,容易产生大table,vm数据量大,一个完整gc扫描的数据量大,经历时间更长,垃圾内存更慢才被释放,gc原子阶段的卡顿时间越长。
7 当使用定时任务时,必须要显示关闭,不然会出现大量未关闭的协程。
浙公网安备 33010602011771号