我们专注攀枝花网站设计 攀枝花网站制作 攀枝花网站建设
成都网站建设公司服务热线:400-028-6601

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

Open×××单线程原因

本文简单说一下一个几乎没有人考虑过的问题,那就是为什么Open×××被设计成单线程单进程的。我曾经苦苦等待Open×××新版本的推出,第一件事就是看其ChangeLog,然而没有发现multiXXX,我一直都不理解多核时代为何还有单进程单线程的Open×××,这个答案在我通读了Open×××的maillist之后终于有了答案。
        多线程在多核系统中的最大好处就是可以最大限度的利用多个处理器核心,然而一个好的算法在多核环境中最最关注的就是如何将欲求解的问题分割成可以并行处理的多个问题,然后将其分派给不同的处理器核心去处理。在典型的C/S模型中,一般根据客户来分派线程或者进程。比如Apache就是这么做的,其实IIS也差不到哪去,而且经典的UNIX网络编程规范也建议如此做,因此人们很容易将Apache的做法看做是理所当然的,虽然有了event机制来替代单纯的per-客户-per-thread,然而其底层实现都差不到哪去,只是用户态的api改变最大。
        现在看看Open×××为何仅仅使用了单个处理器核心?原因很简单,那就是在IP层无法很好分割问题,如果按照用户来分割,那么很有可能一个用户连上之后并不传输数据,从而造成线程闲置,若若按照实际访问的目标来分割,那么将会造成一个笛卡尔积的复杂局面。因此最佳的方式就是让×××的搭建着自己来完成问题的分割,然后通过注入负载均衡以及虚拟网卡bonding之类的技术来提高效率。然而可悲的是,事实上这样做的人很少,大多数人都十分满足于Open×××单线程的现有表现,我在网上google相关的Open×××提速方案,令人几乎掉泪的是搜索到的文章几乎都是我自己写的…咱也是普通一朵程序员,也有任务在身,也不是什么研究所的专职资料整理者,因此也希望能互动一把,总不能光奉献不索取吧。



新闻标题:Open×××单线程原因
标题路径:http://shouzuofang.com/article/gijdho.html

其他资讯