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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大并发服务器开发学习笔记_01大并发服务器架构介绍相关的知识,希望对你有一定的参考价值。

大并发服务器架构介绍

一、服务器设计目标
(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大并发服务器架构介绍的主要内容,如果未能解决你的问题,请参考以下文章

最新Java架构进阶学习笔记:并发+JVM+分布式+微服务+设计模式等!

高并发大访问量架构设计演进之路 归纳总结

大数据经典学习路线(及供参考)

学习 《构建高并发网站结构》记录

《大型网站技术架构》学习笔记

轻松+愉快 | Hystrix技术解析