web服务器总体架构
互联网发展至今,虽说只有20多年的历史,但是不得不说,其发展速度之快、囊括技术之多简直令人发指,其所涉及的领域,从电子商务、社交、娱乐、搜索,渐渐向传统行业渗透,立志于解决传统领域的痛点,教育、医疗、能源、保险等等传统行业,以后渐渐都会看到互联网的影子。
互联网大多是2C业务,其特点如下:
- 高并发:qq最大在线数1.4亿,淘宝双11第一分钟独立访问用户数1000万;
- 高可用:7*24小时可用;
- 海量数据:Facebook每周上传照片接近10亿,google有近百万台服务器提供服务
- 用户分布广泛
- 。。。。。。
上面提到的应该还不全,但是这种业务特点给web服务器总体架构提出了很大的挑战,今天就来聊聊web服务器总体架构,不讨论具体技术细节,后续文章会慢慢补充具体技术细节。

CDN:遍布网络各个机房,解决缓存问题,用户可以从cdn服务器中直接得出结果,而不会过渡到web server,减少web server的压力
反向代理服务器:其作用类似于CDN,但是是部署在web server中心机房
负载均衡:通过负载均衡,可以将应用服务器集群化
应用服务器:图中,应用服务器根据各业务特点划分,可以有A/B/C等多个,如类似于58同城的业务,房产、二手车、招聘等,每个业务线都有自己的应用服务器集群
消息队列:消息队列也是集群的形态加以部署,用以连接各应用服务器,这个其实就是一个典型的生产者、消费者模型,消息队列一头连接生产者,一头连接消费者。
分布式服务服务器:一方面,随着应用服务器规模的扩大,应用服务器的连接数据库和缓存的数量将会大到超过缓存和数据库的限制。另一方面,一些共用的服务,如帖子服务、用户信息服务,或许每个应用服务器都会用到,就不如把这些服务统一抽象出来,已服务的形式提供。已rpc调用的方式为app服务器提供服务。
缓存:包括本地缓存和分布式缓存,应用服务器如果直接访问db,db压力大不说,由于db速度的影响,其性能也会很差,cache的引入就为了解决这个问题,最常用的分布式缓存就是memcache
分布式文件服务器:互联网需要存储大量视频、图片、doc等文件。
分布式数据库:根据业务不同进行分库,如果表记录过大,需要分表
nosql服务器:伸缩性比关系型数据库要强
上面所看到的架构,是web server发展到一定程度之后,所呈现出来的架构,但是这种架构,不可能从一开始就把架构铺的这么大,都是由最基础的单台server(Linux + Apache + php + mysql)发展而来。
不同公司,其业务内容、形态不同,其架构一定要从其业务特点来加以设计。
|