本章首先介绍了当前分布式Web服务器的发展现状,了解现状有助于我们在现有的解决方案的基础上扩展出更好的架构。第二节介绍了如何在一台机器上,依靠各个开源软件的组合,搭建出高负载的网站。第三节介绍了开发所用到的语言和工具。
1。1 分布式Web服务器发展现状
提到Web服务器,就不能不说说十年前非常流行的LAMP架构。LAMP是Linux操作系统、Apache服务器、MySQL数据库和PHP编程语言的缩写,LAMP的架构如图1。1所示。LAMP非常适合用来构建中小型动态站点和Web应用,因为LAMP中四个软件都是开源软件,所以中小网站使用LAMP架构将会节省很大一笔费用。并且搭建LAMP站点也非常容易,PHP语言也非常容易学习,在Windows上甚至有专门的WAMP安装包,一键安装后立即就搭建好了一个动态站点。这些特点都使得LAMP在十年前非常流行,几乎是中小网站的标配。
图1。1 LAMP架构图
但是,随着计算机行业的发展,一些中小网站也渐渐发展为大型网站,必然要承受大量用户并发访问。而Apache的阻塞型I/O模型Select不能承受高并发访问,并且用Apache搭建一个分布式的集群也比较困难,这时候就需要高性能的Nginx出场了。
Nginx具有异步非阻塞的I/O模型epoll,因此相比于Apache来说更适用于高并发的应用场景。并且Nginx更善于处理静态文件,占用的系统资源也比较少,因此Nginx自然成为了构建高性能网站的首选。如果站点需要提升服务能力,增加服务器数量,构建集群,可以将Nginx作为负载均衡服务器,Nginx可以很方便的配置上游服务器,并可以使用几种不同的算法分发网络请求,配置灵活,性能强大。
1。2 单机高负载网站架构
网站架构,就是在建立网站之前事先规定好的网站的设计思路,或者说草图,通常可以将网站架构划分为几个模块,各个模块之前相互协作,共同为用户提供服务。一般来说,除了网站的功能需求外,网站架构还要重点关注性能、伸缩性、扩展性、可用性和安全性这五个架构要素,网站设计过程中要在五个要素之间寻求平衡以实现架构目标并提供给用户优良的服务,这五个要素也是评判一个大型网站架构设计是否合理高效的重要考量因素[2]。
网站的用户量不可能一开始就很巨大,大型网站大都是由小网站一步步演化而来的,而小网站一般没有太多的资金,不能购买大量的服务器组建集群,只能通过一台配置不错的工作站来提供访问服务。因此如何充分发挥一台工作站的能力,搭建起一个高负载的网站,架构就变得很重要了。
上面已经提到用Nginx做服务器可以得到很大的性能提升,然后使用PHP作为后端语言,PHP7相对于之前版本有了不小的性能提升,并且我们使用FastCGI作为Nginx解析PHP的接口,FastCGI比起普通的CGI可以支持更多的并发连接。数据库仍选用传统的MySQL关系型数据库,但我们可以采用缓存来减轻数据库的负载,比如Memcached就是一个可以在内存中缓存数据和对象的高性能缓存系统。但是缓存数据只能供一些特定的场景比如读操作时使用,如果遇到太多的并发写入操作时数据库也可能会响应不过来,这时候就需要一个可靠的消息队列来分离读请求和写操作,确保数据库不会因为突然大量的访问而无法响应,RabbitMQ就是一个分离发送数据与接收数据的异步解耦的可靠消息队列。
这样一个单机高负载的网站架构如图1。2所示:
图1。2 单机高负载网站架构
1。3 开发语言与工具
PHP作为一门流行的通用脚本语言特别适合用来构建Web站点,快速、灵活、务实的PHP提供了从个人博客到世界上最流行的网站(Facebook)的访问服务。选择PHP作为开发语言也是因为它的高效与简洁,并且PHP 7相对了PHP 5。x有了较大的性能提升,可以更好的应对高并发的业务场景。 Nginx分布式Web服务器架构设计与实现(2):http://www.youerw.com/jisuanji/lunwen_96858.html