旅行唯有出发前最愉快,狗儿唯有叫声最吓人,女人唯有背影最美丽。 收藏本站
登陆 / 注册 搜索

阅读: 6.2K   回复: 5

[# 网络基础] 科普贴——什么是集群和分布式

仗剑天涯论坛大牛 2017-9-8 23:57 |显示全部楼层

今生相逢便是缘分,何苦去怨恨,何苦去仇视。

主题破百
        1.分布式
8 ~3 D! @7 K: k7 P2 N7 k
; Q. y; i( b! H. J/ o; }4 x        小明的公司有3个系统: 系统A、系统B和系统C ,这三个系统所做的业务不同,被部署在3个独立的机器上运行, 他们之间互相调用(当然是跨域网络的), 通力合作完成公司的业务流程。. h3 i" S3 ~: h! {

' X6 ?, x  ^2 z6 v
科普贴——什么是集群和分布式 1-服务器.png
7 l3 c1 s* ^) a* S
        将不同的业务分布在不同的地方, 这就构成了一个分布式的系统,现在问题来了, 系统A是整个分布式系统的“脸面”, 用户直接访问,用户量访问大的时候要么是速度巨慢,要么直接挂掉, 怎么办? ; u& b+ e; T# D( {' ~
6 f' }7 ^: s' U! t" `0 L
        由于系统A只有一份, 所以会引起单点失败。3 Y9 c1 A  s! y6 I
! M8 D( ]' h7 `' X/ a
        2.集群(Cluster)& w& n: F3 c  i6 j1 b5 A

# p3 C0 ~8 |6 _" a0 n/ ^* n; q        小明的公司不差钱,就多买几台机器吧, 小明把系统A一下子部署了好几份(例如下图的3个服务器),每一份都是系统A的一个实例, 对外提供同样的服务,这样能睡个安稳觉了,不怕其中一个坏掉了,我还有另外2个呢。  9 d5 b+ k6 c, a1 C; ~

! I* c$ N. o6 f4 s        这3个服务器上的系统就组成了一个集群。( R& n* ~, O! n4 N, B

: t4 n- s3 j5 B& B4 O6 r& ~
科普贴——什么是集群和分布式 2-集群.png
# Q% x: |5 {. I; p- u6 ^' ]# S
        可是对用户来说,一下子出现这么系统A ,每个系统的IP地址都不一样,  到底访问哪一个? ) c! @. T! Y- f2 t  p  A, S

" ]1 I" i5 C: }* \' ]. M1 C# A, {        如果所有人都访问服务器1.1 ,那服务器1.1 会被累死, 剩下的三个闲死,成了浪费钱的摆设。, m1 B+ e$ }& `* r. I# _

4 [$ ^/ r( ~7 k, r1 d! S7 d$ ?2 Y0 ^        3.负载均衡(Load Balancer)
, ?& L7 m1 b0 [1 D2 D+ f, H9 h7 }5 ~1 A. q1 z# Y, D
        小明要尽可能的让3个机器上的系统A 工作均衡一些, 比如有3万个请求,那就让3个服务器各处理1万个(当然,这是理想状况), 这叫负载均衡。  9 D2 f7 f* P: W5 k

3 R) P/ p* I; f# T# \        很明显,这个负载均衡的工作最好独立出来, 放到独立的服务器上 (例如Ngnix):
" Z5 ?& C6 K( N5 Y, `- g
# m0 ]# [7 C5 y6 M" K' j
科普贴——什么是集群和分布式 3-负载均衡.png

4 h! }- y! u5 q! y. h) J        后来小明发现, 这个负载均衡的服务器虽然工作内容很简单,就是拿到请求,分发请求,但是它还是有可能挂掉啊, 单点失败还是会出现。2 a+ I4 T. P3 V! c' @8 U: G
4 p( \* ?, c& O/ |: v
        没办法,只好把负载均衡也搞成一个集群, 不过和系统A的集群有两点不同:+ q& K/ a/ _: M4 _0 K3 p9 g+ ~
8 }4 L/ v8 N2 ^# _" m7 p. H
        1.  这个新的集群中虽然有两个机器,但我们可以用某种办法,让这个集群对外只提供一个IP地址, 也就是说用户看到的好像只有一个机器。
2 v+ x# u( ?1 b2 Q: c3 `2 k4 J) w. y, b5 F  v5 b
        2. 同一时刻,我们只让一个负载均衡的机器工作, 另外一个原地待命。 如果工作的那个挂掉了,待命的那个就顶上去。$ Q' b3 o4 Q- B
4 D! D" l( d% ], G9 R/ `
科普贴——什么是集群和分布式 4-负载均衡.png
, Z( X0 `! |( S+ |& ?8 d$ d$ B* `
        4.弹性& n; ?! P9 x- d

5 K. R+ a3 T+ a# g5 U        如果这3个系统A的实例还是满足不了大量的请求,那就再加服务器! 8 U# P7 I# [4 j. o; H  T$ Q8 B/ D
4 f0 a9 j$ _9 [9 [2 @5 f) |" k! L, c
        双11来了,用户量是平时的10倍, 小明向领导申请费用又买了几十台服务器,一下子把系统A部署了几十份。  可是双11过后, 流量一下子降下来了,那几十个服务器用不上了,也变成了摆设!
$ ]0 D9 M4 A4 t+ j0 \% |$ M% R1 A0 l4 E3 ^( U; m1 i' K8 i( }4 M2 n; Y
        被领导批评以后,小明决定尝试一下云计算,  在云端可以轻松的创建、删除虚拟的服务器, 那样就可以轻松地随着用户的请求动态的增减服务器了。  双11来了就创建虚拟服务器,等到双11过去了就把不用的关掉, 省得浪费钱。
+ [# N2 ]  u1 g2 g+ W6 S/ J, ~7 J) g" F1 T
        于是小明的系统具备了一定的弹性。
. _: k( l* }5 ~/ p; I" ~
: W2 o3 \5 ~8 N2 t4 [2 t2 I        5.失效转移8 Y) u6 i7 h8 U8 i* r

& F. _  f" d+ ~) F        上面的系统看起来很美好,但是做了一个不切实际的假设: 所有的服务都是无状态的。 换句话说,假设用户的两次请求直接是没有关联的。  C% x1 c! l7 m
1 l) d' M4 r% K" C( F
        但是现实是,大部分服务都是有状态的, 例如购物车。- _1 S4 b' W3 R$ X/ X$ e

8 L$ c# z* p# G" T! I4 r: A9 c& p4 I7 Y        用户访问系统,在服务器1.1上创建了一个购物车,并向其中加入了几个商品, 然后 服务器1.1 挂掉了, 用户的后续访问就找不到服务器1.1了,这时候就要做失效转移,让另外几个服务器去接管、去处理用户的请求。" W' A- m% u8 @
+ l% Z2 r! _$ c: G# q
        可是问题来了,在服务器1.2,1.3上有用户的购物车吗?  如果没有, 用户就会抱怨,我刚创建的购物车哪里去了?1 y1 d% \" D- Q7 j6 P3 R

  D- z' ~6 }( J9 B% o  I        还有更严重的,假设用户是在服务器1.1上登录的, 用户登录过的信息保存到了该服务器的session中, 现在这个服务器挂掉了, 用户的session自然也不见了,当用户被失效转移到其他服务器上的时候,其他服务器发现用户没有登录, 就把用户踢到了登录界面, 让用户再次登录!) J6 L/ h. X+ M9 F# b" P6 U
# j0 K7 \; p* ~+ v
        状态, 状态,状态! 用户的登录信息,购物车等都是状态信息,  处理不好状态的问题,集群的威力就大打折扣,无法完成真正的失效转移, 甚至无法使用。& Y$ Y; h8 V6 K' l( w

0 O& M" A" M1 U* }        怎么办?  #375:
4 Q/ H# {( K" z& s8 ~+ o  V: L' W" W2 N3 C8 N
        一种办法是把状态信息在集群的各个服务器之间复制,让集群的各个服务器达成一致,  谁来干这个事情? 只能是像Websphere, Weblogic这样的应用服务器了。
; N- j; K/ h  ]) H7 b        % v# ^& J2 I& r  K" ^
        还有一种办法, 就是把状态信息集中存储在一个地方, 让集群的各个服务器都能访问到:
7 k. ^$ v7 [. {9 b
  _7 t7 p# J0 v( Z  a1 p
科普贴——什么是集群和分布式 5-服务器5.png

2 ]# q$ N0 l) S1 `        小明听说Redis 不错, 那就用Redis来保存吧 !
) _- u, t+ m- m( i+ M; X1 r1 g, w
4 l( @$ F3 |/ Q; n% O  V
本文来自微信公众号:码农翻身(有重新排版)
作者:老刘
9 `" S* ?0 }' W5 ?
上一篇
下一篇

评分

参与人数 1成长值 +1 金币 +1 展开 理由
Sunglassescat + 1 + 1 佩服!

查看全部评分

小执念在电影院邂逅美女,请美女吃大餐,花掉2 个 金币.


巴黎环抱的花海 「龙战于野」 2017-9-9 06:32 来自手机 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

灌水也要讲技术保证句句是十五字
( k" G9 Q' i1 N! b/ z4 N9 m9 c8 |

评分

参与人数 1成长值 +1 金币 +1 展开 理由
Sunglassescat + 1 + 1 佩服!

查看全部评分

Sunglassescat 「龙战于野」 2017-9-11 14:57 来自手机 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

看小执念写的东西比看书有意思来自: Android客户端
soarcloud 「龙战于野」 2017-9-11 16:04 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

总感觉没完呢,还可以继续的吧。; L5 t- L* Y* B& a% e& L
是不是该写上to be continue
屋顶,数星星 「出类拔萃」 2018-1-21 12:47 来自手机 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

撸主的文章带给我们的是心灵深处的震撼。。。#366:
锁上的光 「出类拔萃」 2018-1-21 14:13 来自手机 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

  这篇帖子构思新颖,题材独具匠心,段落清晰,情节诡异,跌宕起伏,主线分明,引人入胜,平淡中显示出不凡的文学功底,可谓是字字珠玑,句句经典,是我辈应当学习之典范。
您需要登录后才可以回帖 登录 | 免费注册  

本版积分规则

关于本站|大事记|小黑屋|古黑论 网站统计

GMT+8, 2021-6-16 00:52 , Processed in 0.029637 second(s), 23 queries , Redis On.

© 2015-2021 GuHei.Net

Powered by Discuz! X3.4

快速回复 返回列表