第212章 Nexus项目(1/2)
早上八点十分,艾瑞克推开凌云办公室的门时,凌云已经站在白板前。
白板上贴了三张打印纸,左边一张是昨天董事会通过的项目提案封面,中间一张画着粗略的分层架构图,右边一张是空白的日程表。白板本身用黑色马克笔写了几个词:事件驱动、异步、非阻塞。
“早。”艾瑞克说,手里拿着笔记本和一支万宝龙钢笔。
“早。”凌云没回头,继续在白板上画一个流程图。箭头方框,连接线笔直。画完最后一笔,他才转身,从桌上拿起两份装订好的文件,递一份给艾瑞克。
文件封面写着:“项目代号 Nex – 技术架构 v0.1”。
“坐。”凌云指向办公桌对面的椅子。
艾瑞克坐下,翻开文件。第一页是目录:架构概览、核心模块、性能指标、开发阶段、团队组成。他快速翻到架构概览,眼睛扫过那些图表。
凌云走到白板前,敲了敲中间那张架构图。
“昨天董事会通过了,”他说,“现在进入执行阶段。你是技术负责人。”
艾瑞克点头,没抬头,还在看文件。
“有问题现在问。”凌云说。
艾瑞克翻到性能指标页,手指点在一行数字上:“五万并发连接。测试环境怎么模拟?”
“租用机房,”凌云说,“找ISP拉专线,用脚本模拟连接。初期测试可以降低标准,但最终验收必须达到。”
“内存占用,”艾瑞克继续,“每个连接不超过10KB。Apache现在平均是150KB。十倍差距。怎么做到?”
“连接池复用,”凌云走到白板前,在空白处画了个简单的内存布局,“不每个连接单独分配完整结构体,用共享内存区域,工作进程通过指针引用。事件通知用epoll,避免频繁上下文切换。”
艾瑞克在笔记本上记下几个词:连接池、共享内存、epoll。他抬头:“epoll是Lux特有的。FreeBSD用kqueue,Soris用/dev/poll。我们要做多平台支持?”
“项目只支持星辰系统,”凌云说,“优先保证我们的生态,其他平台后续考虑。”
“内核需要改多少?”
“不多。”凌云走回办公桌,从抽屉里拿出一叠打印纸,上面是手绘的内核调用图,“主要在网络栈,优化TCP连接建立和关闭的路径,减少锁竞争。还有事件通知机制的封装,提供统一API。”
艾瑞克接过那叠纸,翻看。图上标注了函数名和参数,有些地方用红笔圈出,写了优化建议。他看了两分钟,然后放下。
“时间表,”他说,“三个月出可用版本。按这个复杂度,至少需要十五个全职工程师。我现在团队抽不出这么多人。”
“新招。”凌云从桌上拿起另一份文件,是猎头公司提供的候选人名单,“已经让马克联系了。下周一安排面试,你主面。”
本章未完,点击下一页继续阅读。