web服务器工作机制和服务器集群简介

如果想学好web服务器,那么了解web服务工作原理和优化是必须的。因为会安装网页只是初级,到最后随着流量的增加,网络的升级如何规划自己的服务器集群才是关键。

我们以apache服务器httpd为例,它是基于tcp协议在网络上传送。
(一)我们需要了解他的两种传输方式:
1) 1.0版本的httpd: 不支持持久连接

2)1.0以后的版本:支持持久连接

非持久连接:每一个数据对象,在传输时都需要遵守TCP协议三次握手
持久连接:第一个对象进行三次握手,其他的对象都基于第一个对象的三次握手。

总结:可以看出非持久性连接比持久连接更加稳定,但是效率没有持久连接高。也是住在牺牲效率的基础上换来的稳定。

(二)http的构架和apache的数据请求响应机制
http 是基于C/S构架的,服务器端一边监听在80端口,等待客户端的请求给予响应。
而apache的监听状态分为5大类:
状态码: 1 普通信息

2 正确信息

3 资源重定向 301永久重定向 302临时重定向

4 客户端错误
5 服务器端错误 (请求不存在,服务器故障)

我们经常使用浏览器的时候报错,例如404,302等,可以根据它的数字来判断是哪一个段出错。

那么apache的响应机制又有哪些?
apache的响应机制分为两种,一个属于多进程 Prefork ,一个属于多线程 Worker
1) prefork
工作流程:监听在80端口接收请求-----> (从内存里开辟一个进程)找到特定位置找到请求页面 ---->响应页面请求传输页面

2)worker
工作流程:启动HTTPD服务-----> 在内存中开辟两个worker进程 ----> worker进程里生成一个线程来响应用户请求---->别的用户请求再开辟新的线程

总结:两种工作机制各种体现了进程和线程的特点,prefork每一个用户请求都开辟一个新进程来响应,这样在用户请求多时,会大量占用内存,从而
造成服务质量下降,但也有好处:因为是进程,所以就算一个用户的进程坏掉,也不会影响其他用户,而worker基于线程,在一个进程里开辟新的线程
来响应用户请求,内存占用小,但是如果一个用户的线程坏掉,整个服务进程都将崩溃,也就是服务器当机。

所以根据这两种工作方式,我们来根据不同需求来选择,如果对服务稳定性要求不高的话,使用worker也可以。

##但是根据测试,worker的工作效率并不比prefor优越多少

(三)如何实现动态页面?
动态页面是指服务器端来通过分析客户端请求来源的不同,动态的响应客户端特定的页面。
流程:判断客户端来源---->根据客户端特征后台处理--->处理结果返回给客户端
它的实现方式有三种:
1. CGI Common Gateway Interface 通用网关接口
2. Mod 模块化
3. FastCGI
首先说第一种,CGI 给web服务器提供了调用其他外部应用程序的接口,并支持某些动态的网页运行机制,C,C++,PERL ,PHP等语言
它的工作机制类似PREFORK都是在内存共开辟一个进程,这种工作方式效率不高,占用资源大,所以有了模块化的设计,而apache
服务器就支持模块化,它给外部程序提供了统一的API,这样就可以在需要时调用外部程序。而第三种方式是指将应用服务器独立出来
这样应用服务器就只处理外部应用请求,不给web服务器负担,各自处理。

(四)服务器的性能提升的发展方向----服务器集群
假设我们现在有一个网站刚建立,那么随着它的发展,访问量越来越大,对服务器的负载要求也越来越高,那么服务器的性能该如何扩展呢?
我们通过一个流程图了说明整个过程。


当服务器发展到一定阶段时,整个服务器群已经很庞大了,这时候就需要一个强大的文件系统来支持整个服务器群,来保证服务器的正常运行,
这时候SAN文件系统出现了,它是一种块文件系统,传输速度快,但是有一个缺点,如果一个web服务器和另一个web服务器同时响应用户
要读写同一个文件,由于他们彼此之间不知道对方的存在,所以这时候,同时读写的这个文件会造成文件系统崩溃,进而造成整个服务器群的
崩溃。
那该怎么办呢?使用集群文件系统。
集群文件系统:主要目的解决普通文件系统不具备的功能
特称:A改变了数据 对数据进行加锁,其他用户不能写这种机制被称为分布式文件锁


我们可以在SAN的基础上划分一块空间来构建集群文件系统例如GFS2 OCFS2等,这样各个服务器之间就知道了彼此的存在,从而避免发生刚才的错误




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值