到了新的环境,老大让我有空研究下一代服务器技术,作为一个长期任务。
新的服务器想达到的目标:
1、分布式系统,对象(Entity)之间的关系类似于Actor模型。
2、逻辑服务,是单进程、多线程的,对象之间发消息进行通信,但是简单读取属性尽可能做到直接。
3、必须使用Python语言。开发方式类似于BigWorld引擎。
这个目标还是很宏伟的,只能从底层一步一步攻克。在这里记录一下解决问题的过程,既是分享,也是督促自己不要半途而废。
我个人极度喜欢skynet框架,由于很多原因,skynet框架几乎不可能修改为Python脚本。
原因除了众所周知的GIL(Python全局锁)问题以外,还有Python的Interpreter是极为重量级的,如果像skynet的独立lua_state那样使用,怕是什么都不做也能把内存全部用光。所以还是用普通的对象表示每个Entity,在进程内保存所有对象即可,逻辑进程之内,也并不存在“独立服务”的概念。
但是,在研究了skynet之后,我认为以后必然会大量参考skynet的成熟做法,甚至copy很多C语言层的代码。毕竟和高手对架构的理解,和C语言经验上,实在是差的太多。