KBEngine:记录
Q:CBEngine使用什么网络协议?
A:集群组建使用UDP协议,其他情况下服务器模块之间、服务器和客户端之间用的都是TCP协议。
Q:CBEngine使用什么网络模型?
A:由于正式运营环境在Linux下,所以网络模型选择了epoll, 生产环境在Windows比较方便所以CBEngine也支持了Windows系统,但是网络模型只是简单的select。
Q:CBE是多线程的吗?可否部署在多台物理机上?
A:CBE采用的是单线程(当然db读写等特殊任务依然会另开临时线程处理)多进程结构,不同的进程可以部署在不同的物理机上。理论上通过扩展机器数量和配置就可以扩展负载规模。
Q:CBEngine使用的Python是什么版本的,是否需要自己安装?
A:目前CBEngine自带Python3.4运行环境,并不需要用户另行安装Python。当然如须运行installer和cluster_controller这样一些安装和控制脚本则已然需要单独安装Python。
Q:CBEngine的数据流采用的是什么格式?是否支持protobuf等第三方通用数据传输格式?
A:CBEngine采用的是自己序列化的二进制流,不支持protobuf等其他数据传输格式,而且因为这部分功能和引擎其他部分结合较为紧密,不建议用户自行替换。
Switch Fabric:交换机网络,根据网络环境的不同而不同,根据用户自己的情况进行配置,不属于引擎范畴。
运作流程:
1:Client接入我们提供的SDK或API,通过API连接Loginapp。
2:Loginapp处理账号登录的验证,其中数据会从DBMgr中请求获取。(如果挂接了Interfaces, 则可以通过Interfaces将登陆和注册请求转发到第三方服务,并且接收第三方服务的处理结果让引擎执行后续流程 )
3:如果登录验证通过,Loginapp会从BaseappMgr拿到最低负载的Baseapp,并通知Client该Baseapp的连接ip和端口。
4:Client通过API连接该Baseapp,并在Baseapp上生成Proxy代理对象与Client关联(默认的,会使用Account实体与之关联)。
5:根据业务的情况,需要创建一个Space空间内的实体时,如果目标空间不存在,则会向CellappMgr请求一个低负载的Cellapp,并在其上创建该空间。
6:在目标空间上创建Proxy对象(它是一个Entity的子类)的cell部分,使得该Proxy有了base部分以及对应空间内的cell部分。
7:通过Proxy,传递和接收Client、Baseapp上base部分、Cellapp上cell的信息,完成通讯过程。
Account实体是Client接入Baseapp时,第一个生成的实体,相当于账户实体。
其他涉及到的概念会在本文后面进行阐述。