我想很多朋友还不太了解分散和集群是什么,也不太了解他们的区别,先来看看他们的基本概念吧。
分布式(distributed)是指在多台不同的服务器中部署不同的服务模块,通过远程调用协同工作,对外提供服务。
集群(cluster)是指在多台不同的服务器中部署相同应用或服务模块,构成一个集群,通过负载均衡设备对外提供服务。
http://www.Sina.com/http://www.Sina.com /
他们到底有什么不同呢? 用酒店的例子来说明吧。
晚饭时间,我来到一家小酒店,开始点菜。 红烧鱼、糖醋排骨、酸土豆泥,真不错。
现在我们和这家酒店之间的是用户和系统的关系。 我们希望他给我们做一顿丰盛的晚餐。 我们完全不在乎他的厨师。 如果能在短时间内提供好吃的料理就好了。
在上面,我们对这家酒店提出了两个要求。 料理提供时间短,料理很好吃。 除了这些以外,客人可能还有其他要求。 例如,烹饪要干净卫生,酸土豆泥里多放辣椒等等。
映射到计算机系统后,来自用户的要求如下
烹饪时间短-性能清洁卫生-在安全的菜肴中多放辣椒-可扩展性的菜肴很好吃-可用性上面提到的这家小酒店,只有一个厨师。集中式系统是指
集中部署的电子商务APP应用程序
如果酒店里只有一位客人,这几个基本上是可以满足的。 但是到了晚饭的时间,客人突然多了起来,这些客人的要求可能都得不到满足。
如果酒店客满,这家小酒店只有一个厨师,他需要保证所有的菜都好吃卫生,保证所有的菜都能按时准备好,满足不同用户的个性化要求。 这个挑战大得惊人。
以上,映射到计算机软件上也一样。 随着业务量的增加,网站的高可用性、可扩展性、可扩展性、安全性等目标变得非常困难。
一个大型的中央处理系统,中央处理系统是一台高性能、可扩充的计算机,所有的数据、运算、处理任务全部在中央计算机系统上完成。随着餐厅生意越来越好,老板意识到只有一个厨师有很大的问题。
首先,在顾客高峰期,一个厨师不能满足所有顾客的要求。
其次,厨师得了一分。 他不能生病。 一旦生病,整个酒店就不能营业了。
这让上司很为难,一时之间不知道该怎么办。 但是老板有一个聪明的妻子,他提出了一个建议。
你担心什么? 再雇几个厨师就好了。
而且,为了提高酒店的接待能力。 上司决定增加几个厨师。
厨师做好几个之后。 店内客人的订单可以分配给厨师的多位厨师来做。
具体怎么分配,这需要一定的战略。 可以选择分配给空闲的厨师,也可以按顺序轮流分配。
餐厅有多位厨师,但用户不知道这些,他只知道自己的订单需求,只要能满足就好。 他也不用在意是谁给自己做饭的。 除非料理出现了质量问题,否则需要找到指定的厨师来负责问责。
以上,映射到计算机软件上也一样。 集中式系统是只有一台计算机提供服务,集群是多台计算机提供相同的服务。
部署在一个集群中的电子商务APP应用
用户请求通过负载平衡分配给群集中的每台计算机。 整个系统对用户来说就像机器在提供服务一样。
集中式系统
在酒店雇了多位厨师后,酒店的服务能力确实提高了很多。 顾客也在增加。
但是,在最近的店内,如果某道菜的味道和自己至今为止吃的不一样,经常会有人投诉。
店长仔细调查后发现,这家店的厨师除了炒菜外,还需要负责洗菜、切菜、准备菜,甚至刷碗。
结果,厨师无法集中精力炒菜。 他会被其他琐事牵着后腿,无法集中精力炒菜,影响烹饪质量。
而且,最近店内的客人也在增加,所以几个厨师都忙不过来。
这个时候,老板要想办法继续提高酒店的服务能力。 他正在考虑继续雇佣几个厨师。
还是酒店老板聪明的太太,又给他出了更好的主意。
雇厨师很费钱啊。 用雇厨师的钱,雇几个厨师、厨师不就行了吗?
这是分散的思想。
把一件大事分割成多个小事,分别交给别人。
这样学术行业就有了专家,洗菜的人可以把菜洗得更干净,厨师也可以把注意力集中在炒菜上,把菜炒得更美味。
酒店从安排多位厨师变成了安排多位厨师、配餐师、厨师。 这家酒店的服务能力大幅提高。 已经没有客人投诉料理问题了。
对顾客来说,他们还不知道主厨的这些变化,他甚至不知道自己点的菜是多人合作的结
果。以上,映射到计算机软件中,也是一样的。除了通过集群部署的方式提升系统能理外,还可以通过分布式部署的方式。
一个分布式部署的电子商务应用
把一个大的系统拆分成多个子系统,每个子系统负责自己专注的事情,然后通过网络进行通信和协调,对用户来说,就像访问的是同一台机器一样。
随着饭店的发展,慢慢的从只有一个厨师演变成有多个厨师,进而演变成有洗菜工、配菜师、厨师等多个职位。
这个网站架构发展也类似。网站初期,只需要搭建一个集中式的单体应用就可以了,如果业务量有很大增长,先考虑增加机器,通过集群部署提升能力。接着,就可以考虑分布式了。