在“高并发,海量数据,分布式,NoSql,云计算......”概念满天飞的年代,相信很多朋友都据说过甚至常与人提起“集群,负载均衡”等,但不是全部人都有机会真正接触到这些技术,也不是全部人都真正理解了这些“听起来很牛的”技术名词。下面简单解释一下吧。
集群(Cluster)node
所谓集群是指一组独立的计算机系统构成的一个松耦合的多处理器系统,它们之间经过网络实现进程间的通讯。应用程序能够经过网络共享内存进行消息传送,实现分布式计算机。通俗一点来讲,就是让若干台计算机联合起来工做(服务),能够是并行的,也能够是作备份。算法
负载均衡(Load Balance)windows
网络的负载均衡是一种动态均衡技术,常见的实现方式是经过一些工具实时地分析数据包,掌握网络中的数据流量情况,把任务合理均衡地分配出去。这种技术基于现有网络结构,提供了一种扩展服务器带宽和增长服务器吞吐量的廉价有效的方法,增强了网络数据处理能力,提升了网络的灵活性和可用性。平常生活中处处都能看到“负载均衡”,一个超市的收营员高峰期只能服务10位顾客,当作活动时有20位顾客须要服务的话可能就会排长队,这样购物体验将会不好(就像客户抱怨系统/网站访问太慢)。最简单的办法就是再招个营业员,从新开通一个出口。负载均衡的核心就是“分摊压力”。服务器
大规模集群,一般具有如下一些特色:
(1)高可靠性(HA)。
利用集群管理软件,当主服务器故障时,备份服务器可以自动接管主服务器的工做,并及时切换过去,以实现对用户的不间断服务。
(2)高性能计算(HP)。
即充分利用集群中的每一台计算机的资源,实现复杂运算的并行处理,一般用于科学计算领域,好比基因分析、化学分析等。
(3)负载平衡(LB)。
即把负载压力根据某种算法合理分配到集群中的每一台计算机上,以减轻主服务器的压力,下降对主服务器的硬件和软件要求。
固然,以上的这些特色,在某些适应场合下是须要同时具有的。经常使用的集群又分如下几种:
load balance cluster (负载均衡集群)
一共有四兄弟开裁缝铺,生意特别多,一我的作不下来,总是延误工期,因而四个兄弟商量:老大接订单, 三个兄弟来干活。 客户多起来以后,老大根据必定的原则(policy) 根据三兄弟手上的工做量来分派新任务.
High availability cluster(高可用集群)
两兄弟开早餐铺,生意不大,可是天天早上7点到9点之间客户不少而且不能中断。为了保证2个小时内这个早餐铺可以保证持续提供服务,两兄弟商量几个方法:
方法一:平时老大作生意,老二这个时间段在家等候,一旦老大没法作生意了,老二就出来顶上,这个叫作 Active/Standby.(双机热备)
方法二:平时老大作生意,老二这个时候就在旁边帮工,一旦老大没法作生意,老二就立刻顶上,这个叫作Active/Passive.(双机双工)
方法三:平时老大卖包子,老二也在旁边卖豆浆,老大有问题,老二就又卖包子,又卖豆浆,老二不行了,老大就又卖包子,又卖豆浆.这个叫作Active/Active (dual Active)(双机互备)
包子= application package, 互相照应叫作heartbeat, 顶替对方工做叫作 failover/takeover. 若是两个兄弟忽然都瞎了聋了,不知道如今对方究竟是否正在干活,都认为本身要顶对方的工做,这个叫作brain-split, 而后须要第三者,好比他们的老爹来解决问题,这个叫作tier-breaker, 或者让他们两个的媳妇过来拉走其中一个,这个叫作fency.
high computing clustering (高性能计算集群)
10个兄弟一块儿作手工家具生意,一个客户来找他们的老爹要求作一套很是复杂的仿古家具,一我的作也能够作,不过要作好久好久,为了1个星期就交出这一套家具,10个兄弟决定一块儿作。
老爹把这套家具的不一样部分分开交给儿子们做,而后每一个儿子都在作木制家具的加工,最后拼在一块儿叫货.
老爹是scheduler任务调度器,儿子们是compute node. 他们作的工做叫作做业。
(其实,还有一种,分布式存储相关的集群,应用于超大规模网站,云计算平台等等。涉及点存储方面的,这里就不介绍了)网络
严格来说,这些已经超过了通常开发人员的知识范畴了,想真正理解和掌握这些并不太容易,有时候须要真正的实践而不是闭门造车。从运维人员和系统架构师的角度来看,不只须要具有丰富的操做系统配置和管理的经验,更要具有网络协议、存储等相关的知识(懂算法和底层的就更完美了)。从开发人员和软件架构师的角度来看,须要考虑的重点又不一样了。固然,远远不止我所提到的这些。如今的Web应用通常都比较依赖于基础架构,而愈来愈脱离了”纯软件架构“的本质。集群不是万能的,但有时候确实至关有用。因为项目和工做关系,我本人目前主要使用的是微软的技术体系(固然,目前大都是基于windows平台的)。有机会的话,我能够将本身在这方面的研究和实践分享出来,更但愿有兴趣的朋友在一块分享和交流。架构