一、分布式部署(Nginx)

分布式部署

  • 将系统拆分到多台服务器上进行分布式部署:一台服务器做 Nginx 负载均衡,两台服务器部署应用程序,还有一台服务器作为数据库服务器。
  • 部署后通过 Jmeter 工具进行压测,设置的是 1000 个线程循环 20 次。分布式部署前:平均耗时500ms左右,TPS 在1500左右,Mysql 服务器的 CPU 占用率在 80% 左右。分布式部署后:平均耗时也是500ms左右,TPS 在1600左右,Mysql 服务器的 CPU 占用率在 10% 左右,明显降低了。提高了系统性能。

为什么选用 Nginx 作为反向代理服务器?

Nginx 主要提供反向代理、负载均衡、动静分离功能。

选用 Nginx 是因为它性能好:

  1. 基于epoll多路复用机制实现: 如果基于 select 实现(Apache服务器使用的是 select 模型),假设有一个服务器监听100个客户端连接是否有变化,如果变化了就唤醒自己,然后循环遍历这100个连接,找出发生变化的位置,执行 read 操作。这种模式的缺点是采用的是轮询的方式进行遍历,效率低,而且监听数量有上限,最多为1024个。而 epoll 模型,在监听的同时设置了回调函数,事件触发时,直接执行回调函数,而不需要去遍历这100个连接,并且没有了监听数量的限制,所以效率较高。

  2. 采用的 master-worker 进程模型: master 进程管理多个 worker 进程,负责分配事件,多个worker进程负责处理客户端连接。可以通过 reload 命令进行平滑的重启,重启时不会断开与客户端的连接。

  3. 使用协程机制实现了同步调用的开发: 协程是一种依附于线程的内存模型,比线程的切换开销小,因为它不像线程那样有CPU时间片的切换开销;不需要加锁,是一个串行执行的过程;nginx中,当协程遇到阻塞时,比如 socket 的 read 方法,它会通过 epoll 多路复用来切换协程,而不需要去关心 read 方法什么时候会返回,因为 read 完成时,epoll 会执行回调函数,epoll 将就绪的 fd 放在一个 readyList 中顺序的进行操作,实现了同步调用的开发。

Nginx 有哪几种负载均衡调度算法?

  1. 普通轮询:每个请求按时间顺序逐一分配到不同的后端服务器,如果某台服务器宕机,Nginx能自动剔除该服务器。
  2. 加权轮询:给不同的后端服务器设置了一个权重值,权重越大,分配到请求的几率就越大,权重值根据后端服务器的硬件情况来设置。(默认)
  3. ip_hash:每个请求按 ip 的 hash 结果进行分配,这样每个访客固定访问一个后端服务器,在一定程度上解决了集群部署环境下 Session 共享的问题。
  4. url_hash:按访问的 URL 的 hash 结果进行分配,使每个请求的 URL 定向到同一个后端服务器,在 Nginx 作为静态服务器的情况下可以提高缓存效率。
  5. fair:按后端服务器的响应时间来分配请求,响应时间短的服务器分配到请求的概率高。
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值