众所周知,在web开发中,服务器和数据库是影响整个网站的关键。在传统的web开发中,只需要使用apache服务器和关系数据库就能很好的满足我们的需要,但是当用户数目增加时,当数据量增大时,服务器和关系数据库就会遭到性能的瓶颈。本文将浅要谈谈高并发海量数据环境下的服务器和数据库技术。
1.服务器技术
apache服务器
Apache服务器支持的最大用户连接数为2000,在传统的web开发中,网站的用户数目不大(一般不超过10000),这样子,apache服务器足以胜任传统的网站(公司内部的系统,小型网站)访问需求。再加上apache本身的安全性和稳定性,它足以胜任小型网站的开发。但是一个大型的网站(baidu,sina)每秒钟可以达到百万级,单纯使用apache服务器就会出现网站页面打不开,网站崩溃的现象。这个是由于apache本身的性能所致。使用nginx可以解决高并发需求。
nginx服务器简介
反向代理(ReverseProxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。由于外部网络上的主机并不会配置并使用这个代理服务器,普通代理服务器也被设计为Internet上搜寻多个不确定的服务器,而不是针对Internet上多个客户机的请求访问某一个固定的服务器,因此普通的Web代理服务器不支持外部对内部网络的访问请求。当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。
Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器也是一个IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。Nginx 可以在大多数 Unix like OS 上编译运行,并有Windows 移植版。以下是目前市场上主流服务器占用率的图片:
在全球的前1000网站中,nginx服务器是主流选择。知名的网站诸如,诸如Facebook,GitHub、百度、腾讯、阿里巴巴、新浪、网易、腾讯、CSDN、酷六、水木社区、豆瓣等都是使用nginx的网站。
nginx的反向代理为什么能提高网站性能?
CPU, 内存, 带宽都不是瓶颈,瓶颈是网络IO次数.用比较通俗的话来比喻就是,快递一次给你送十个包裹,你完全无压力。
但是如果他一天分十次给你送十个包裹,要十次interrupt你,你就崩溃了.反向代理起的作用就是当你的收发室,收集了十个包裹再一次发给你.
对于后端是动态服务来说,比如Java和PHP。这类服务器(如JBoss和PHP-FPM)的IO处理能力往往不高。Nginx有个好处是它会把Request在读取完整之前buffer住,这样交给后端的就是一个完整的HTTP请求,从而提高后端的效率,而不是断断续续的传递(互联网上连接速度一般比较慢)。同样,Nginx也可以把response给