好文档 - 专业文书写作范文服务资料分享网站

大并发数据架构 - 图文

天下 分享 时间: 加入收藏 我要投稿 点赞

服务器的三条要求:

高性能:对于大量请求,及时快速的响应

高可用:7*24 不间断,出现故障自动转移,这叫fail over(故障转移) 伸缩性:使用跨机器的通信(TCP)

另外任何网络系统结构都可以抽象成C/S架构,我们常说的B/S模式本质上也是C/S架构(浏览器看作客户端)。 一个典型的服务器架构:

注: epoll是linux下最高效的网络I/O

由于服务器需要高效处理大并发连接,因此多个位置均可能出现性能瓶颈,下面我们分析不同位置产生瓶颈的原因及其处理方法: (一)数据库瓶颈

【1】超过数据库的连接数的解决方法:加上一层DAL,使用队列等待(队列等待--数据访问层),也可以再使用连接池(DAL队列服务+连接池)这样不需要重新连接,直接从池中找资源。

【2】超出时限的解决方法:

(1)将业务逻辑放置应用服务器(操作系统业务处理),数据库逻辑不要太复杂,只是进行一定的辅助业务处理。

(2)缓存数据,但是面临缓存的更新和同步的问题,如下:

1. 缓存的时效性,if timeout then 重新去数据库查询,(将热点数据放至缓存)这种方法实时性较差。

2. 一旦数据库更新,立即通知前端缓存更新。Update之后修改更新缓存,实时性较好。可能实现起来较难。

如果内存不够用,那么就放到外部磁盘,使用缓存换页机制(类似OS中的内存换页)。 上面提到的这些都可以使用开源产品实现:Nosql ---> (反sql ) 主要存放非关系的数据,key/value

还有Redis ,memached 缓存等分布式开源软件。这些软件是可以跨服务器的,但是如果部署在应用服务器上,则是局部的,其他同级服务器访问很麻烦。

但是如果单独布置机器,使用分布式缓存,这些就是全局的,所有的应用服务器都可以访问,方便快捷。 【3】数据库读写分离

数据库的查询操作一般比写操作频繁,我们可以对数据库进行负载均衡,使用主服务器进行写操作,从服务器进行读操作,DAL进行读写分离,通过replication机制进行主从服务器间的同步。

【4】数据分区(分库、分表)

分库:数据库可以按照一定的逻辑把表分散到不同的数据库--->垂直分区(用户表,业务表)

更加常用的分表--水平分区:将表中的记录分至不同的数据库,10条记录分至10个数据库,类似这样,这种方式很容易扩展水平结构。 (二)应用服务器瓶颈

添加任务服务器对应用服务器的任务分配进行负载均衡,其中又分为主动和被动两种方案:

(1)应用服务器被动接受方案:

使用任务服务器实现负载均衡,暴露一个接口,任务服务器可以当作一个客户端,应用服务器看作http服务器

任务服务器可以监视应用服务器的负载,CPU/IO/并发/内存换页高,查询到信息后,选取负载最低(算法确定)的服务器来分配任务.

(2)应用服务器主动到任务服务器接受任务进行处理

应用服务器处理完自己的任务后主动向任务服务器申请求任务。

(1)的方式可能会造成不公平,(2)的缺点是如果应用服务器处理不同的业务,那么可能任务服务器的编程逻辑会很复杂。

其中任务服务器可以设置多台,彼此之间通过心跳联系------>满足 高可用性(fail over机制)。

如此一来(数据库,缓存,应用服务器,任务服务器)任何位置出现瓶颈就只需要增加服务器好了。

为了高效的进行服务端的编程,我们也需要知道服务器性能四大杀手: (1)数据拷贝 ----> 缓存来解决

(2)环境切换 -----> 理性创建线程:是否需要多线程,哪个好?单核服务器(采用状态机的编程效率最佳,类似OS中的进程切换)

多线程能够充分发挥多核服务器的性能,也要注意线程间切换的开销 (3)内存分配 ------> 内存池,减少向操作系统申请内存 (4)锁竞争 -------> 通过逻辑尽量减少锁的使用 以上的信息可以归纳为下面的这张图:

我们接下来介绍实际中的大型网站架构的演变过程,和我们上面的问题处理流程基本一致:

[Step1]web server与数据库分离

Apache/Nginx处理静态(前端服务器) JBoss/Tomat处理动态 (后端服务器) [Step2]缓存处理

1.浏览器缓存减少对网站的访问

2.前端服务器静态页面缓存减少对web服务器的请求 3.动态中相对静态的部分使用ESI 4.本地缓存减少对数据库的查询

[Step3]web server集群+读写分离

负载均衡:

前端负载均衡

DNS负载均衡

在DNS服务器中,可以为多个不同的地址配置同一个名字,对于不同的客户机访问同一个名字,得到不同的地址。 反向代理

使用代理服务器将请求发给内部服务器,让代理服务器将请求均匀转发给多台内部web服务器之一,从而达到负载均衡的目的。标准代理方式是客户使用代理访问多个外部Web服务器,而这种代理方式是多个客户使用它访问内部Web服务器,因此也被称为反向代理模式。

基于NAT的负载均衡技术 LVS

F5硬件负载均衡

大并发数据架构 - 图文

服务器的三条要求:高性能:对于大量请求,及时快速的响应高可用:7*24不间断,出现故障自动转移,这叫failover(故障转移)伸缩性:使用跨机器的通信(TCP)另外任何网络系统结构都可以抽象成C/S架构,我们常说的B/S模式本质上也是C/S架构(浏览器看作客户端)。一个典型的服务器架构:
推荐度:
点击下载文档文档为doc格式
8s0ig3hdm05o77k30e8m0fvqu4yw9b00pan
领取福利

微信扫码领取福利

微信扫码分享