一:动静分离

动静分离是指在 web 服务器架构中,将静态页面与动态页面或者静态内容接口和动态内容接口分开不同系统访问的架构设计方法,进而提示整个服务的访问性和可维护性。

一般来说,都需要将动态资源和静态资源分开,由于 Nginx 的高并发和静态资源缓存等特性,经常将静态资源部署在 Nginx 上。如果请求的是静态资源,直接到静态资源目录获取资源,如果是动态资源的请求,则利用反向代理的原理,把请求转发给对应后台应用去处理,从而实现动静分离。

使用前后端分离后,可以很大程度提升静态资源的访问速度,即使动态服务不可用,静态资源的访问也不会受到影响。

二:负载均衡

一般情况下,客户端发送多个请求到服务器,服务器处理请求,其中一部分可能要操作一些资源比如数据库、静态资源等,服务器处理完毕后,再将结果返回给客户端。

这种模式对于早期的系统来说,功能要求不复杂,且并发请求相对较少的情况下还能胜任,成本也低。随着信息数量不断增长,访问量和数据量飞速增长,以及系统业务复杂度持续增加,这种做法已无法满足要求,并发量特别大时,服务器容易崩。

很明显这是由于服务器性能的瓶颈造成的问题,除了堆机器之外,最重要的做法就是负载均衡。

请求爆发式增长的情况下,单个机器性能再强劲也无法满足要求了,这个时候集群的概念产生了,单个服务器解决不了的问题,可以使用多个服务器,然后将请求分发到各个服务器上,将负载分发到不同的服务器,这就是负载均衡,核心是「分摊压力」。 Nginx 实现负载均衡,一般来说指的是将请求转发给服务器集群。

举个具体的例子,晚高峰乘坐地铁的时候,入站口经常会有地铁工作人员大喇叭“请走 B 口, B 口人少车空…”,这个工作人员的作用就是负载均衡。

Nginx 实现负载均衡的策略:

轮询策略:默认情况下采用的策略,将所有客户端请求轮询分配给服务端。这种策略是可以正常工作的,但是如果其中某一台服务器压力太大,出现延迟,会影响所有分配在这台服务器下的用户。
最小连接数策略:将请求优先分配给压力较小的服务器,它可以平衡每个队列的长度,并避免向压力大的服务器添加更多的请求。
最快响应时间策略:优先分配给响应时间最短的服务器。
客户端 ip 绑定策略:来自同一个 ip 的请求永远只分配一台服务器,有效解决了动态网页存在的 session 共享问题。

最新文章

  1. ANSI Common Lisp Practice - My Answers - Chatper - 3
  2. python学习笔记之基础二(第二天)
  3. MVC3中如何输出富文本
  4. 快速入门系列--WCF--08扩展与新特性
  5. 3种Java从文件路径中获取文件名的方法
  6. asp.net 微信支付 错误解决方案
  7. git删除远程仓库的某次错误提交
  8. JVM参数(二)参数分类和即时(JIT)编译器诊断
  9. 搞ACM的你们伤不起
  10. Python中list的实现
  11. TCommThread -- 在delphi线程中实现消息循环
  12. perl基本语法
  13. 【获取图像处理源码以及编译过程】在window下make。
  14. sort merge join导致temp被爆菊
  15. 第二章 andrid studio创建项目
  16. java解析xml汇总(转自倾城幻影-Java解析xml汇总,链接:http://www.cnblogs.com/jiugehuanying/archive/2012/01/12/2320058.html)
  17. POST不同提交方式对应的Content-Type,及java服务器接收参数方式
  18. Python练习二
  19. 7E - The sum problem
  20. 误删除libc.so.6的解决

热门文章

  1. c++设计模式概述之状态
  2. 【LeetCode】311. Sparse Matrix Multiplication 解题报告 (C++)
  3. 【LeetCode】984. String Without AAA or BBB 解题报告(Python)
  4. 【剑指Offer】滑动窗口的最大值 解题报告(Python)
  5. 重重封锁,让你一条数据都拿不到《死磕MySQL系列 十三》
  6. Codeforces 849A:Odds and Ends(思维)
  7. Java线程安全MAP ,LIST ,SET
  8. wiodows /linux CMD
  9. Cookie、Session、Token、JWT
  10. 第七个知识点:随机性如何辅助计算和什么是BPP类问题