本文为个人学习笔记,可能有很多描述不对,仅作参考。
分发均衡策略
DNS负载均衡
实现方式:
- 一个域名设定多个dns服务或者服务器进行解析,同一个域名的每个解析都指向不同的IP地址
- 自建DNS解析服务
使用场景:
不同线路可以通过动态域名解析到最快的IP上。
应用层与内容的均衡还要另外考虑实现方案。
LVS
Linux虚拟服务器,
- 需要申请多个IP
- 接近硬件设备的网络吞吐和连接负载能力
- 抗负载能力强
- 工作在网络4层之上,仅作分发之用,没有流量的产生
- 配置较复杂
- 工作稳定,自身有完整双机热备方案
- -
Nginx
工作在网络七层,支持http、websocket、tcp socket、email。
- 主要针对http,
- 安装配置比较简单
- 一般能支撑超过1万次的并发
- 可以通过端口检测到服务器内部的故障,并把返回错误的请求重新提交到另一个节点,缺点不支持url检测
- 对请求的异步处理中以帮助节点服务器减轻负载
- 不能保持session
keepalived
keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障
- keepalived通过虚拟路由实现双机热备,相比其他方案具有一定的优越性
- 因为是固定主从热备,该方案比较适合两个互备服务器性能有差异的情况
- Keepalived同样可以实现双主互备,通过设置互为主备,然后通过DNS负载均衡到不同vip就可以实现
局域网使用,租用主机可能不方便使用。
HAProxy
工作在网络七层。
- 能够补充Nginx的一些缺点,比如session保持、cookie引导
- 支持url检测后端
- 负载均衡策略经Nginx多
- 效率可能比Nginx高
- 可以对Mysql进行负载均衡,对后端的DB节点进行检测和负载均衡
- 有介绍它也支持tcp协议?
Squid
缓存Internet数据.
- 支持http,ftp,gopher,ssl,wais等协议
CDN
内容分发
硬件NetScaler、F5、Radware和Array等商用负载均衡器。
可以建立在4~7层协议之上,花销较大。
Seesaw
Google开源的一个基于Linux的负载均衡系统。
应用层负载均衡
其它负载均衡架构技术
ActiveMQ
Apache出品的开源消息总线,完全支持JMS1.1和j2EE 1.4规范的JMSProvider实现。
- 支持多种客户端语言
- 对Spring支持
- 可以自动部署到任何兼容JAVAEE1.4商业服务器上
- 支持多种传送协议:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA
- 支持通过JDBC和journal提供高速的消息持久化
- 从设计上保证了高性能的集群,客户端-服务端,点对点
- 支持Ajax
- 支持与Axis的整合
- 可以很容易调用内嵌JMS provider,进行测试
有多种通讯模式:
- 发布、订阅模式
- P2P
- request-response,不是默认提供的一种模式
norbert
基于zookeeper构建的集群管理器和支持集群的c/s网络API。
封装了zookeeper和netty,使用了协议栈缓存,基于Scala实现。