说明
集群、负载均衡、分布式、高可用 这几个概念都是针对服务部署的,服务的考量标准一般是这几个方面:安全、高可用、易伸缩、可扩展
集群(Cluster)
集群的概念是和单台服务器相对应的,简单来说集群就是部署多台服务器协同完成一项工作。
解决大型网站访问量大,并发量高,海量数据的问题。
集群可以分为:负载均衡集群、分布式集群等(区别在于怎么做到多个服务器协同工作)
负载均衡(Load Balance)
-
负载均衡,意思是将负载(工作任务,访问请求)进行平衡、分摊到多个操作单元(服务器,组件)上进行执行。是解决高性能,单点故障(高可用),扩展性(水平伸缩)的终极解决方案。
-(服务器A、B、C 是统同一服务的copy,通过一定的均衡方式分配到不同服务器上去处理任务) -
分类
*DNS负载均衡* :在DNS服务器上配置多个域名对应IP的记录。例如一个域名www.baidu.com对应一组web服务器IP地址,域名解析时经过DNS服务器的算法将一个域名请求分配到合适的真实服务器上
*HTTP负载均衡*:根据用户的http请求计算出一个真实的web服务器地址,并将该web服务器地址写入http重定向响应中返回给浏览器,由浏览器重新进行访问
*IP负载均衡*:在网络层通过修改请求目标地址进行负载均衡, LVS 实现了IP负载均衡,包含三个方法:NAT(传输层4),DR(直接路由, 数据链路层2),TUN(隧道)
*链路层负载均衡*:在通信协议的数据链路层修改mac地址,进行负载均衡
*混合型负载均衡*:多种均衡方式组合使用
- 负载均衡算法
*轮询*: 将所有请求,依次分发到每台服务器上,适合服务器硬件同相同的场景。
*随机*:请求随机分配到各个服务器
*最少链接*:将请求分配到连接数最少的服务器(目前处理请求最少的服务器)
*Hash*(源地址散列):根据IP地址进行Hash计算,得到IP地址。优点:将来自同一IP地址的请求,同一会话期内,转发到相同的服务器;
*权重*:在轮询,随机,最少链接,Hash’等算法的基础上,通过加权的方式,进行负载服务器分配。
- 其他
- Nginx的反向代理实现负载均衡
- 目前市面上,主流的负载均衡方案,硬件设备有F5,软件方案有四层负载均衡的LVS,七层负载均衡的Nginx、Haproxy等。
分布式(Distributed)
- 分布式系统, 是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。分布式集群的各个服务器是用来完成不同系统功能的,通过各个服务器一起工作来完成一件事情。
- 每台计算机的用户不仅可以使用本机的资源,还可以使用本分布式系统中其他计算机的资源(包括CPU、文件、打印机等)
- (服务器A、B、 C 是属于服务的不同子功能部署,共同协作完成一个事情的处理)
- 应用
- 分布式应用和服务
- 分布式静态资源部署
- 分布式数据和存储
- 分布式计算
- 其他
- MongoDB:是一个基于分布式文件存储的数据库
MongoDB集群包括一定数量的mongod(分片存储数据)、mongos(路由处理)、config server(配置节点)、clients(客户端)、arbiter(仲裁节点:为了选举某个分片存储数据节点那台为主节点)。(一个主从集群,互相都能成为“主节点”,叫做Replica Set,主挂了, 在从里面通过选举策略选出一个作为主) - Git :分布式版本控制系统
- MongoDB:是一个基于分布式文件存储的数据库
高可用(High Availability)
高可用是从另外一个角度来描述满足服务稳定的概念。系统中部分节点失效时,其他节点能够接替它继续提供服务,则可认为系统具有高可用性。(服务稳定!数据不能丢!)
- 高可用一定是集群部署, 单机挂了直接就没服务了,谈不上高可用
- 对于普通负载均横, 当主服务器A、B、C任意一个挂了, 其他服务照样可以提供服务, 所以算高可用, 但是要是均衡器服务坏了就不能用了,这就不是高可用
- 对于分布式的系统需要进行高可用部署才能说是高可用的,比如mongoDB、kafka
- 高可用部署方式多样,取决于方便性与数据冗余的平衡