开学季,土耳其,灬-好酷-酷玩社区,发现新玩具

频道:新闻世界 日期: 浏览:179

概述

在“高并发,海量数据,散布式,NoSql,云核算......”概念满天飞的时代,信任不少朋友都听说过“集群,负载均衡”等,但不是一切人都有时机真实接触到这些技能,也不是一切人都真实理解了这些技能名词。下面介绍下集群、负载均衡和散布式这几个概念。


集群(Cluster)

所谓集群是指一组独立的核算机体系构成的一个松耦合的多处理器体系,它们之间经过网络完结进程间的通讯。应用程序能够经过网络同享内存进行音讯传送,完结散布式核算机。浅显一点来说,便是让若干台核算机联合起来作业(服务),能够是并行的,也能够是做备份。


负载均衡(Load Balance)

网络的负载均衡是一种动态均衡技能,常见的完结办法是经过一些东西实时地剖析数据包,把握网络中的数据流量情况,把使命合理均衡地分配出去。

这种技能依据现有网络结构,供给了一种扩展服务器带宽和添加服务器吞吐量的廉价有用的办法,加强了网络数据处理才能,提高了网络的灵活性和可用性。

日常日子中处处都能看到“负载均衡”,一个超市的收营员高峰期只能服务10位顾客,作为活动时有20位顾客需求服务的话或许就会排长队,这样购物体会将会很差(就像客户诉苦体系/网站拜访太慢)。最简略的办法便是再招个营业员,从头注册一个出口。负载均衡的中心便是“分摊压力”。


散布式

散布式可繁也能够简,最简略的散布式便是我们最常用的,在负载均衡服务器后加一堆web服务器,然后在上面搞一个缓存服务器来保存暂时状况,后边同享一个数据库,大致结构如下图所示:

这种环境下真实进行散布式的仅仅web server罢了,而且web server之间没有任何联络,所以结构和完结都十分简略。

有些情况下,对散布式的需求就没这么简略,在每个环节上都有散布式的需求,比方Load Balance、DB、Cache和文件等等,而且当散布式节点之间有相关时,还得考虑之间的通讯,别的,节点十分多的时分,得有监控和办理来支撑。这样看起来,散布式是一个十分巨大的体系,只不过能够依据详细需求进行适当地裁剪。

依照最齐备的散布式体系来看,能够由以下模块组成:

散布式使命处理服务:担任详细的事务逻辑处理

散布式节点注册和查询:担任办理一切散布式节点的命名和物理信息的注册与查询,是节点之间联络的桥梁

散布式DB:散布式结构化数据存取

散布式Cache:散布式缓存数据(非耐久化)存取

散布式文件:散布式文件存取

网络通讯:节点之间的网络数据通讯

监控办理:收集、监控和确诊一切节点运转状况

散布式编程言语:用于散布式环境下的专有编程言语,比方Elang、Scala

散布式算法:为处理散布式环境下一些特有问题的算法,比方处理共同性问题的Paxos算法


常用的集群分类

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. 他们做的作业叫做作业。


总结

集群是个物理形状,散布式是个作业办法。集群一般是物理会集、统一办理的,而散布式体系则不着重这一点。所以,集群或许运转着一个或多个散布式体系,也或许底子没有运转散布式体系;散布式体系或许运转在一个集群上,也或许运转在不归于一个集群的多台(2台也算多台)机器上。

散布式是相对中心化而来,着重的是使命在多个物理阻隔的节点上进行。中心化带来的首要问题是可靠性,若中心节点宕机则整个体系不行用,散布式除了处理部分中心化问题,也倾向于涣散负载,但散布式会带来许多的其他问题,最首要的便是共同性。

集群便是逻辑上处理同一使命的机器调集,能够归于同一机房,也可分属不同的机房。散布式这个概念能够运转在某个集群里边,某个集群也可作为散布式概念的一个节点。

一句话,便是:“分头干事”与“一堆人”的差异

散布式是指将不同的事务散布在不同的当地。 而集群指的是将几台服务器会集在一同,完结同一事务。散布式中的每一个节点,都能够做集群。 而集群并不必定便是散布式的。

散布式的每一个节点,都完结不同的事务,一个节点垮了,哪这个事务就不行拜访了。


用一个我们都看得懂的例子来结束吧~

小饭馆本来只要一个厨师,切菜洗菜备料炒菜全干。后来客人多了,厨房一个厨师忙不过来,又请了个厨师,两个厨师都能炒相同的菜,这两个厨师的联系是集群。为了让厨师专注炒菜,把菜做到极致,又请了个配菜师担任切菜,备菜,备料,厨师和配菜师的联系是散布式,一个配菜师也忙不过来了,又请了个配菜师,两个配菜师联系是集群。

后边会共享更多devops和DBA方面的内容,感兴趣的朋友能够重视一下~

热门
最新
推荐
标签