大并发服务器架构介绍

一个web服务器包括http服务器(前端)与应用服务器(后端),将web服务器动静分离后,http服务器处理静态请求,应用服务器处理经由http服务器发来的动态请求

一、对于服务器后端,其架构大致可以划分成下面几层:

http请求
任务服务器1
任务服务器2
应用服务器1
应用服务器2
应用服务器3
缓存1...n
DAL数据访问层
数据库

1、任务服务器 —— 应用服务器:

用户的主要业务逻辑放在应用服务器执行,真正的数据库只进行辅助操作。

在前端的http请求和应用服务器之间有一个任务服务器,主要负责应用服务器的负载均衡,对前端请求进行鉴权、路由转发等操作。可以主动监视应用服务器的状态,当收到新用户请求时,根据应用服务器的闲忙状态分配任务。也可以应用服务器完成当前任务后主动去任务服务器取任务。

2、应用服务器 —— 缓存:

应用服务器的业务请求需要数据时,通过缓存减少应用服务器读取数据库数据

缓存的更新可以分为两种:

1、缓存有实效性,查找时发现失效了则重新从数据库获取,缺点是实时性差

2、一旦数据库的数据更新(写操作会经过DAL),由DAL通知缓存进行更新

缓存内存空间可能不足需存到硬盘,可采用FIFO(先进先出)、LRU(最近最少使用)、LFU(最不频繁使用)等方式进行换页

3、缓存 —— DAL(数据访问层):

缓存一般不是直接读取数据库,而是通过DAL,比如有大量的并发写操作,则DAL可以只处理前1000个,或者用队列来储存这些请求

4、DAL —— 数据库:

DAL可以与数据库建立一些常连接作为连接池,不用每次读写操作都重建连接

数据库本身可以读写分离(主从机制)实现分布式逻辑,主库写操作之后用replication机制来同步数据给从库

数据库可以进行数据分区,例如有用户、业务、基础三张表

若进行垂直分区,则是对表进行划分,每个表分到一套主从机制的数据库中

若进行水平分区,则是对记录进行划分,如分成10份,则用户、业务、基础三张表的记录均被分成10分,分到10个数据库中

二、服务器性能杀手与优化:

1、数据拷贝:尽量少拷贝,多用缓存

2、环境切换:理性使用线程,对于单核服务器用状态机编程的效率最佳,对于多核服务器创建适当数量的线程

3、内存分配:用内存池

4、锁竞争:通过逻辑来减少锁的使用

你可能感兴趣的:(linux后台开发)