设计mooon调度器遇到的难题
mooon的设计进入关键时刻,有几个决策点还没有定下来,如下:
1.是否同时支持进程和线程模型
进程模型是指内核为一个独立的进程,而每个业务又为独立的一个进程,业务可以为多线程,同时内核会产生相应个数的内核线程与业务线程一一对应,内核线程和业务进程在创建业务时产生。
线程模型是业务和内核运行在相同的进程中,内核线程即为业务线程,在创建业务时产生。
2.service和线程不绑定(即不建立亲和关系),而session和线程建立绑定关系是否合理?
这么做重要的原因是考虑效率和保持简单,service不绑定,可以保证随机调度,这样就可以在随机的线程中创建session,并由这个线程调度和管理session(创建和销毁);同时由于session只会被一个线程调度,会使得真对单个session的编程不需要考虑线程安全;另外,不同session运行在不同线程中,又可保证一定的并发性,但线程和session是一对多的关系,因为session数量允许超过10万个。
3.一个session是否要支持可以有子session,子session下是否还要有子session
这个主要是考虑多方会话和群组类需求。
4.如果父session和线程是绑定关系,那子session是否和父session绑定到相同的session?
这个主要影响到复杂度,最好是可以相同,但是否会影响实用性了?
目前的计划:同时支持线程和进程模型,并且对于同一节点的进程模型业务,会使用pipe通讯绕过网络,影响最大的是第4点。
孤独,希望可以看到更多的讨论,计划端午三天完成设计图。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义