网络是生活在互联网世界的我们形影不离的存在,新浪微博、今日头条、搜狐新闻、腾讯视频、微信QQ等我们常常访问的大型网站的网站服务器架构需要哪些服务器呢?
1、Web服务器
Web服务器主要是为访客提供http访问或是加密https访问的服务器,所接触到的网页就是直接从Web服务器中发送出来的,处于网站服务器的最前端。在windows服务器系统上常使用的是IIS,在unix和Linux服务器系统上常使用的是Apache、Nginx。
2、应用程序服务器
应用程序服务器是作为服务器执行共享业务应用程序的底层的系统软件服务器,所访问的app请求就是在应用服务器中处理的。在应用程序服务器上运行着各式的业务逻辑,主要是是EJB、 JNDI和JMX API等J2EE API方面的,还包含事务处理、业务逻辑管理、数据库连接等功能。
3、数据库服务器
运行在局域网中的一台或多台计算机和数据库管理系统软件共同构成了数据库服务器,数据库服务器为客户应用提供服务,这些服务是查询、更新、事务管理、索引、高速缓存、查询优化、安全及多用户存取控制等。
4、代理服务器
代理服务器通常是客户端访问的一种行为。它虽然不属于网站部署中的环境,但在整体的客户端访问中,它却是一个重要环节的服务器。
5、反向代理服务器
与代理服务器相对,还有一个反向代理服务器,其功能是Web服务器的功能。但是从它这里拿到的网页不是最原始产生页面的"产生地",而是由它从页面的"产生地"取回页面后的一个缓存。代理服务器中缓存的内容通常是由某些用户访问某个页面而产生访问请求后,在客户端代理服务器上留下的缓存;而反向代理服务器上缓存的页面,不是由于某些用户访问某个页面后留下的缓存,却是根据网站运维的策略定期、定时地生成一些后台服务器的页面缓存。
代理服务器与反向代理服务器的区别:代理服务器是工作在客户端,反向代理服务器时工作在服务器端,Nginx服务器常被用作于反向代理服务器。
6、 后台服务器
后台服务器只是一个说法而已,这是根据它的工作特点来说的,换句话说是没有直接提供给客户访问。例如众多的FastCGI服务器,它们都工作在后台,HTTP协议却无法访问到它们,另一种情况,如果我们从前是通过使用Apache作为Web服务器提供HTTP访问的,现在被Nginx反向代理了,是说由Nginx直接面对客户访问,而将请求再转到Apache服务器,那么这里的Apache服务器已经成为后台服务器了。
7、CDN缓存服务器
正如其名字,它是缓存服务器的角色,而且是反向代理的应用,在网站部署中,它算是一种部署策略,即对于远距离访问的解决方案,为了解决时间产生距离、时间缩短距离而产生的,它是反向代理的另一种应用。
8、负载均衡服务器
负载均衡服务器主要作用是实现某些类型服务器的规模扩展。比如对于系统前端的web服务器和后端的数据库服务器,想通过加服务器实现N+1横向扩展,通过多台服务器负载分担压力,负载均衡必不可少。
9、消息队列服务器
队列是系统解耦利器,也是大中型分布式系统标配,没有队列,业务系统很容易高度耦合,系统吞吐量也会很快遭遇瓶颈。
10、文件服务器
分布式文件系统,专门用于存储业务系统需要的各种文件如图片、多媒体文件等。
11、索引服务器
用于网站全文索引,搜索必备。对内存和CPU要求较高,大型网站,通常还需要支持主从备份和容错,甚至多实例索引集群。
12、搜索服务器
通常需要部署多台,否则查询多了性能撑不住,对内存要求不高。有的中小型站点,索引和搜索服务器在物理和逻辑上都是同一台服务器。
13、作业服务器
主要用于后端应用程序大批量大数据量复杂业务逻辑的定时作业,大多数互联网公司标配,某些企业的定时调度框架是直接部署在web服务器上的,可以减少这里的所谓作业服务器。
14、nosql服务器
海量数据处理的兴起,各种nosql产品层出不穷,nosql服务器主要用于处理海量数据,支持存储、查询、分片等。
web应用中,有两个一直是不好实现横向扩展或者由于历史遗留问题实现代价非常大的东西,如你所知,就是:A、数据库 B、网络带宽。
而某些nosql的出现很可能解决这个历史遗留难题,现在已经有nosql产品弥补了关系型数据库天生不支持横向扩展的缺点,在特定场景下正在替代关系型数据库。
15、其他
需求不断变化和应用需要,某些互联网企业还可能衍生出基于安全的授权/证书服务器,全局唯一的流水号服务器,会话服务器等等。
大型网站面对着高负载、高并发的要求,对网站服务器的架构更为苛刻,天下数据建议架构Web服务器、应用程序服务器、代理服务器、反向代理服务器、后台服务器、CDN缓存服务器等类型的服务器来应对需求。