MOOON-scheduler核心设计图(初稿)-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

MOOON-scheduler核心设计图(初稿)

简介: 按以下思路进行设计,非最终设计图,有等进一步思考,以发现问题,需要达到以下目的: 同时支持线程和进程模式(做了抽象) Service不和线程绑定 Service独占线程池或进程(进程下再划分线程池) Session和线程绑定,不跨线程 Service下可以有0到多个Session...
按以下思路进行设计,非最终设计图,有等进一步思考,以发现问题,需要达到以下目的:
  1. 同时支持线程和进程模式(做了抽象)
  2. Service不和线程绑定
  3. Service独占线程池或进程(进程下再划分线程池)
  4. Session和线程绑定,不跨线程
  5. Service下可以有0到多个Session
  6. 一个Session可以0到多个 子 Session,不限制层级
  7. 子Session和父Session由同一个线程调度
  8. Service的ID从0开始的无符号32位整数
  9. Session的ID从1 开始的无符号32位整数,0被Service占用,以简化程序设计(在后续会讲到原因)
img_ab4e350cb96a3a7b8393a7b272819399.jpg


在进程模型,CKernelThread和CServiceThread个数是相等的,而且线程是一对一的。CServieProcess会fork出一个进程,这个进程会创建CServicePool,CServiceThread阻塞同步的接收CProcessMessageBridge发过来的消息,然后处理,直接到处理完后CKernelThread才会去处理下一个消息。但在这过程中,CService和CSession可以输出需要发送到其它Service或节点的消息,CProcessMessageBridge会做相应的处理。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: