【原创】我的webserver基本架构图

 

      再次声明,这里的大部分文章都是我从我baidu的博客上转过来的,那里专业人士比较少,以后新的文章都会发表在这里。

      用了点时间把我的webserver的基本架构图大致描述了出来,一则为了自己有个更为清晰的认识,二则为那些在服务器架构方面有要求有想法的人提供一点参考。

总体来讲架构的思路就是利用linux的socket或者文件fd的唯一性来避免全局竞争锁的出现(可能liunux内内部在分配的时候已经采用了锁), 这样我只要保证每次同一个fd只出现在一个环节的其中一个线程中就不会导致全局锁,这样就可以在系统性能方面提供一个伪耦合的架构,多个环节均采用任务调 度器来进行,这样当系统出现瓶颈的时候就可以加大那个环节的线程数量来解决,外部还是通过epoll的事件机制处理,这样就可以达到比较理想的动态处理速 度,又不会影响静态处理速度,其实IOCP内部也似一个线程池来解决的异步IO,只有把每个环节需要IO的部分都打散才能够保证系统的整体性能,并且不会 因为一个调度的失败影响全局的进程,总体结构图如下:

                          见100%大图

其中在读的环节见如下图表:

服务端处理见如下:

这样总体的系统就可以在server处理环节开展更为灵活的扩展方式,类似apoache的是将协议、网络等底层的处理部分全部封装,然后保证性能 和稳定性的前提下对中间环节进行扩展,这样可以避免fastcgi的引入,以求达到更高的服务器端性能。当然我的总体服务是一个类似于sop的纯XML+ 数据库+全文索引的模式,正因为如此才可以将设计全部局限于一个应用之中。

     这是最原始的架构图,现在已经做了很多改动,不过任务调度器还是挺合理的一个工具,只是他跟epool有同质冲突,所以现在的改动全部是基于事件驱动,不过这种架构也能跑出比Nginx更高性能的web 服务器。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值