码迷,mamicode.com
首页 > 其他好文 > 详细

大并发服务器开发学习笔记_01大并发服务器架构介绍

时间:2016-10-23 20:00:38      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:更新   img   失败   网络   操作系统   监视   应用服务   方案   接收   

大并发服务器架构介绍

一、服务器设计目标
(1)高性能(High Performance):快速请求响应;
(2)高可用(High Availability):能7X24小时工作,能够进行故障转移;
(3)伸缩性(Scalability):能跨机器通信;
二、分布式
(1)负载均载
(2)分布式存储
(3)分布式计算

三、C/S结构

技术分享

 

      任何网络系统都可以抽象为C/S结构

四、一个典型的服务器结构

技术分享

      网络I/O + 服务器高性能编程技术 + 数据库

1.超出数据库连接数:
(1)问题描述:

  数据库并发连接数10个,应用服务器这边有1000个并发请求,将会有990个请求失败;

(2)解决方案:

  我们可以加一个队列进行排队,中间层DAL数据访问层(队列服务+连接池)。

2.超出时限:

(1)问题描述:

  数据库并发连接数10个,数据库1秒钟之内最能处理1000个请求,应用服务器这边有10000个并发请求,会出现0-10秒的等待;

(2)解决方案:

  主要的业务逻辑挪到应用服务器处理,数据库只做辅助的业务处理,利用缓存cache。

3.缓存更新(缓存同步)

(1)如果缓存失效(timeout),重新去数据库查询,这种方法实时性比较差;

(2)将热点数据存至缓存,一旦数据库中数据更新,立即通知前端的缓存更新,这种方法实时性比较高。

4.缓存换页:

  内存不够,将不活跃的数据换出内存。常见换出算法有:FIFO(先进先出) LRU(最近最少使用) LFU(最不频繁使用换出),这些在大家的操作系统课程中应该有介绍过。

5.nosql:

  key/value 存放非关系数据,一致性要求不是很高的数据,可以把nosql当做缓存来使用,比如分布式缓存开源软件:redis memcached等。

6.数据库读写分离:

  对大部分应用来说数据库的读操作,>写操作,对数据库进行负载均衡,master(主人) slave(奴隶)实现主从机制,主库负责写的操作,从库负责读的操作,利用大部分数据库都有的replication机制。

7.应用服务器的负载均衡:

 增加一个任务服务器来实现,任务服务器查询可以监视应用服务器当前的负载。如CPU高、IO高、并发高、内存换页高等情况。

(1)应用服务器被动接收任务:查询到这些信息之后,选取负载最低的服务器分配任务;
(2)应用服务器主动接收任务:更公平。

8.数据分区(分库、分表):
(1)垂直分区:分库,数据库可以按照一定的逻辑,把表分散到不同的数据库,如分为用户表、业务表、基础表;
(2)水平分区:如把用户表的10条记录分到10个数据库,每个数据库分到一条记录。这种方式更常用。

9.服务器性能的四大杀手:

(1)数据拷贝:尽量减少数据拷贝,服务器内部一些缓存解决;

(2)环境切换(理性创建线程): 该不该用多线程,单线程好还是多线程好,例如单核服务器(采用状态机编程,效率最佳) 采用多线程编程时不能并发,反而增加了线程间的切换开销;多核服务器使用多线程能够充分发挥多核服务器的性能;

(3)内存分配: 内存池;
(4)锁竞争:尽可能减少锁的竞争;

 

  欢迎大家学习交流,如有不足恳请批评指正,转载请注明出处,感谢您的支持。如果您也喜欢我的博客可以持续关注我,让我们一起成长,共同进步。

  生活很精彩 剔除杂质,留下对编程的穷极探索 纯粹追求。

大并发服务器开发学习笔记_01大并发服务器架构介绍

标签:更新   img   失败   网络   操作系统   监视   应用服务   方案   接收   

原文地址:http://www.cnblogs.com/liumt/p/5990423.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!