DingMing

丁大铭的个人空间,用来分享一些前端小技巧,默默成长吧,哈哈

初始负载均衡

  |  
 阅读次数

一、一些学习记录

1.Nginx 与 LVS

  • Nginx 做负载均衡,在第七层应用层,面向的事 HTTP 流量,对 HTTP 流量进行负载均衡
  • LVS 做负载均衡,在第四层传输层,面向的是 TCP/UDP 流量,对 TCP/UDP 流量进行负载均衡,效率非常高。但是他无法做到基于 HTTP 的分流,只能基于 IP 地址进行分流。

2.DNS

  • DNS 服务器是一个域名解析服务器,它的作用是将域名解析成 IP 地址,这样客户端就可以通过 IP 地址访问到服务器了。

3.网关

  • 不管是什么端,HTTP 请求(API)都会经过一个网关。网关支持高并发流量,负责第一层流量的保护,我们可以做 身份认真,安全,监控,日志,流量控制等策略。

二、Node.js 应用负载均衡的两个概念:服务负载均衡 与 RPC 负载均衡

1.服务负载均衡-集群(cluster)

Node.js 是单线程的。使用 Node 做服务端应用时,通常会创建多个实例来处理客户端的请求,以此提升系统的吞吐率,更好的利用 CPU(多核)。这的是实例,称之为 cluster 集群。

  • 通过 os.cpus()获取当前系统的 CPU 信息
  • 通过 cluster 提供 isMaster 和 fork 方法,可以创建多个实例,每个实例都是一个独立的进程,每个进程都有自己的 eventloop,互不影响。
  • 通过 cluster 提供的 IPC 通道,可以在主进程和子进程之间进行通信。

2.集群是如何工作的-进程间通信

主进程可用通过 worker.send()方法向子进程发送消息,子进程可通过 process.on(‘message’)监听消息。
子进程同理,通过 process.send()方法向主进程发送消息,主进程可通过 worker.on(‘message’)监听消息。
Master 和 Worker 之间的通信是通过 IPC 通道实现的通信。

这是 Node.js 提供的功能,一般的 node 框架都会封装这个功能,比如 egg.js

3.RPC 负载均衡

RPC(Remote Procedure Call)远程过程调用,是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。
RPC 只是一种概念,解决 不同服务之间的调用问题,包含 传输协议 和 序列化协议 两部分。
HTTP 是一种传输协议 RPC 可以使用 HTTP 作为传输协议,也可以使用 TCP 作为传输协议。

三、负载均衡算法结算

  • Round Robin 静态轮询
  • Weighted Round Robin 加权轮询
  • Source IP hash 源地址哈希
  • Least Connections 最少连接
  • Weighted Least Connections 加权最少连接