大话集群和负载均衡,一看全明白


在“高并发 , 海量数据 , 分布式 , NoSql , 云计算......”概念满天飞的年代 , 相信不少朋友都听说过甚至常与人提起“集群 , 负载均衡”等 ,
但不是所有人都有机会真正接触到这些技术 , 也不是所有人都真正理解了这些“听起来很牛的”技术名词 。 下面简单解释一下吧 。
要了解这些概念首先要了解一下项目架构的演进 , 我这里应用一张Dubbo的文档图片如图
一:项目架构的演进
大话集群和负载均衡,一看全明白
本文插图
ORM与MVC:
早期的架构都集中在一台服务器上 , 这样对于小型的业务访问量是完全可以的 , 但是随着业务的增多 , 我们引进的MVC的架构 , 这种架构是将整个业务分成不同的层(表现层 , 业务层 , 数据访问层)维护也更加方面了 , 开发更加方便 。
PRC架构:
但是业务如果继续增大 , 项目会出现臃肿 , 一台服务器已经完全没办法支持了 , 所以出现了RPC分布式的架构 , RPC架构就是将服务进行合理拆分 , 分别放入多台服务器执行 , 服务器与服务器之间通过远程调用的方式进行通信 。
服务提供者:运行在服务器端 , 提供服务接口与服务实现类
服务中心:运行在服务器端 , 负责将本地服务发布成远程服务 , 管理远程服务 , 提供服务给消费者使用 。
服务消费者:运行在客户端 , 通过远程代理对象调用远程服务
目前Java中常用的RPC框架:
1:Dubbo:
2:Spring Cloud:
3:Thrift:
SOA架构:
但是业务继续增加 , 对RPC架构来说 , 各个服务与服务之间的通信越来越多 , 依赖越来越多 , 越来越混乱 , 给开发带来了困难 , 于是SOA架构应运而生 , SOA架构将服务与服务集中起来进行管理 , 加上一个服务治理中心 。 谁发布了服务来中心进行注册 , 谁需要依赖什么服务来中心进行请求 。
而最近很火的微服务 , 则是将业务拆分更加精细 , 每一个可以成为一个完整的服务 。 演变肯定会演变 , 但是过程得多久谁也不好说 。
大话集群和负载均衡,一看全明白
本文插图
二:名词解释
【大话集群和负载均衡,一看全明白】接下来进入正题 , 解释让外行看起来高大上的名词
1:集群
集群(Cluster)
所谓集群是指一组独立的计算机系统构成的一个松耦合的多处理器系统 , 它们之间通过网络实现进程间的通信 。 应用程序可以通过网络共享内存进行消息传送 , 实现分布式计算机 。 通俗一点来说 , 就是让若干台计算机联合起来工作(服务) , 可以是并行的 , 也可以是做备份 。
大规模集群 , 通常具备以下一些特点:
(1)高可靠性(HA)
利用集群管理软件 , 当主服务器故障时 , 备份服务器能够自动接管主服务器的工作 , 并及时切换过去 , 以实现对用户的不间断服务 。
(2)高性能计算(HP)
即充分利用集群中的每一台计算机的资源 , 实现复杂运算的并行处理 , 通常用于科学计算领域 , 比如基因分析、化学分析等 。
(3)负载平衡(LB)
即把负载压力根据某种算法合理分配到集群中的每一台计算机上 , 以减轻主服务器的压力 , 降低对主服务器的硬件和软件要求 。
常用的集群又分以下几种:
load balance cluster(负载均衡集群)
一共有四兄弟开裁缝铺 , 生意特别多 , 一个人做不下来 , 老是延误工期 , 于是四个兄弟商量:老大接订单, 三个兄弟来干活 。客户多起来之后 , 老大根据一定的原则(policy) 根据三兄弟手上的工作量来分派新任务 。
High availability cluster(高可用集群)
两兄弟开早餐铺 , 生意不大 , 但是每天早上7点到9点之间客户很多并且不能中断 。 为了保证2个小时内这个早餐铺能够保证持续提供服务 , 两兄弟商量几个方法: