因为无法再见面,所以要笑着说再见。 收藏本站
登陆 / 注册 搜索

阅读: 5.6K   回复: 5

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

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

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

主题破百
        1.分布式- O# u& a( e* u- w" h

  S* H+ o+ [7 U. C1 Y        小明的公司有3个系统: 系统A、系统B和系统C ,这三个系统所做的业务不同,被部署在3个独立的机器上运行, 他们之间互相调用(当然是跨域网络的), 通力合作完成公司的业务流程。
  O- Z/ ]* w9 V# k" O( k" t* W. c' O" L- }
科普贴——什么是集群和分布式 1-服务器.png

6 S/ P6 U: S% H9 E& }2 X5 {        将不同的业务分布在不同的地方, 这就构成了一个分布式的系统,现在问题来了, 系统A是整个分布式系统的“脸面”, 用户直接访问,用户量访问大的时候要么是速度巨慢,要么直接挂掉, 怎么办? % @4 f  _% d( Y# K) c% ?- ^. b
: [1 P2 A$ j! i0 Q
        由于系统A只有一份, 所以会引起单点失败。
% m7 a! O$ P2 i9 z, B0 b
2 G0 |  N1 ^+ ^& w% O5 O        2.集群(Cluster)
( x2 }- [# q) B/ U7 ~" m  Z! n1 f& C4 j! m. r
! b; l- K% h! P2 f6 \+ Z. w& c        小明的公司不差钱,就多买几台机器吧, 小明把系统A一下子部署了好几份(例如下图的3个服务器),每一份都是系统A的一个实例, 对外提供同样的服务,这样能睡个安稳觉了,不怕其中一个坏掉了,我还有另外2个呢。  
1 O( z* c! u/ e  E
, Q$ S& Z9 c3 Z2 f        这3个服务器上的系统就组成了一个集群。
3 w# `5 j, J; V/ H% }& t# B5 z( A0 O9 U+ i0 D) `; I
科普贴——什么是集群和分布式 2-集群.png
- m/ x, B: M$ t
        可是对用户来说,一下子出现这么系统A ,每个系统的IP地址都不一样,  到底访问哪一个? : C  Z) @4 _- V7 o' R7 V
7 b' f! s7 j" `. p' v3 ]
        如果所有人都访问服务器1.1 ,那服务器1.1 会被累死, 剩下的三个闲死,成了浪费钱的摆设。
/ h* |' T5 t% X5 m( O  E1 u
/ `( Z; T! m  ~+ b4 D        3.负载均衡(Load Balancer)
+ f6 X  p2 J( z/ Q( K
) [9 b$ G5 i: f; G        小明要尽可能的让3个机器上的系统A 工作均衡一些, 比如有3万个请求,那就让3个服务器各处理1万个(当然,这是理想状况), 这叫负载均衡。  - [  Z) P/ X! h7 I, m
8 f% @# [- t2 G) S9 J( V9 J; X
        很明显,这个负载均衡的工作最好独立出来, 放到独立的服务器上 (例如Ngnix):4 Y; |2 T2 V' b' V" ~* I
+ b6 X* ?5 ~1 w* \* N9 u
科普贴——什么是集群和分布式 3-负载均衡.png

) F$ r$ N- H8 k. U: T. m' F        后来小明发现, 这个负载均衡的服务器虽然工作内容很简单,就是拿到请求,分发请求,但是它还是有可能挂掉啊, 单点失败还是会出现。  k, S2 K% y. `5 s! w+ l4 Q

& I$ R' A" E2 S; K% E        没办法,只好把负载均衡也搞成一个集群, 不过和系统A的集群有两点不同:9 w! W- c" Q4 L' X; A7 N+ q

+ n' Q% w* Q4 g9 d; z0 q        1.  这个新的集群中虽然有两个机器,但我们可以用某种办法,让这个集群对外只提供一个IP地址, 也就是说用户看到的好像只有一个机器。
! D% Y" r9 y. E: Q
/ O9 {( Y& q4 P" p6 _+ u9 W! j& b        2. 同一时刻,我们只让一个负载均衡的机器工作, 另外一个原地待命。 如果工作的那个挂掉了,待命的那个就顶上去。
- C! d9 c* b( G& q; K4 i4 h+ `5 y( l! v+ k9 |4 P7 t: Z+ k, R6 i
科普贴——什么是集群和分布式 4-负载均衡.png

4 ?; A! l% _( E6 W. _$ J        4.弹性
" |( X7 h6 {7 u% M
6 c8 R; l: W' @        如果这3个系统A的实例还是满足不了大量的请求,那就再加服务器! * |; Q/ y8 f: X/ ^: b

9 s, h/ o& N8 |' t8 Z* x) v( t/ j& Q        双11来了,用户量是平时的10倍, 小明向领导申请费用又买了几十台服务器,一下子把系统A部署了几十份。  可是双11过后, 流量一下子降下来了,那几十个服务器用不上了,也变成了摆设!
" `$ Q. a4 W1 K' k) I/ u
; U* c/ @. \. c% }        被领导批评以后,小明决定尝试一下云计算,  在云端可以轻松的创建、删除虚拟的服务器, 那样就可以轻松地随着用户的请求动态的增减服务器了。  双11来了就创建虚拟服务器,等到双11过去了就把不用的关掉, 省得浪费钱。 9 z. U+ ?- W% y

* ]$ c) s2 U4 J! N& N' P9 p5 U        于是小明的系统具备了一定的弹性。3 y2 g( Z, ~1 |8 }0 v- S5 N

+ p. W! X! c& W! \* a* E        5.失效转移6 t6 e) I/ W# T) Z' x- Q) a8 q

5 @1 M) j5 M4 K# G        上面的系统看起来很美好,但是做了一个不切实际的假设: 所有的服务都是无状态的。 换句话说,假设用户的两次请求直接是没有关联的。
. C" V. B+ ~! z2 q- }- M6 x
3 p. x& H4 i. Z" r        但是现实是,大部分服务都是有状态的, 例如购物车。
( @) M8 t4 z" U+ S9 \: }" h/ ~9 F& ^7 l
        用户访问系统,在服务器1.1上创建了一个购物车,并向其中加入了几个商品, 然后 服务器1.1 挂掉了, 用户的后续访问就找不到服务器1.1了,这时候就要做失效转移,让另外几个服务器去接管、去处理用户的请求。( _1 s0 e1 g$ d6 C" N
5 K2 B- ]1 C- r( C5 u- K
        可是问题来了,在服务器1.2,1.3上有用户的购物车吗?  如果没有, 用户就会抱怨,我刚创建的购物车哪里去了?
/ Q5 J) j9 x. i+ e
7 t* e$ N0 k& I, J7 l: y        还有更严重的,假设用户是在服务器1.1上登录的, 用户登录过的信息保存到了该服务器的session中, 现在这个服务器挂掉了, 用户的session自然也不见了,当用户被失效转移到其他服务器上的时候,其他服务器发现用户没有登录, 就把用户踢到了登录界面, 让用户再次登录!
8 C, O. M. S6 ~# e7 v- ]' F5 ^! D
        状态, 状态,状态! 用户的登录信息,购物车等都是状态信息,  处理不好状态的问题,集群的威力就大打折扣,无法完成真正的失效转移, 甚至无法使用。1 N5 v* x, q- f; a4 E- \

0 O" S- {- p# c7 W5 F% E( h        怎么办?  #375:
4 n8 Q- G) n  r- a6 _
5 D9 S( d, A  P& |9 J        一种办法是把状态信息在集群的各个服务器之间复制,让集群的各个服务器达成一致,  谁来干这个事情? 只能是像Websphere, Weblogic这样的应用服务器了。 " h' u/ Z# b8 s  L9 q, E0 X9 |
        7 \  P" L8 {2 H2 y! F0 q: F
        还有一种办法, 就是把状态信息集中存储在一个地方, 让集群的各个服务器都能访问到:
0 p& r5 H  i; x2 Q& o4 W- e, P
1 q. @7 F: Q7 P# l/ `! a3 _; s
科普贴——什么是集群和分布式 5-服务器5.png

, }3 U' _! ~- L7 c! u* M3 R        小明听说Redis 不错, 那就用Redis来保存吧 !
& k7 v( ]3 G9 r$ ?- p' e8 }( k
; _# m4 q- I1 o& Z
本文来自微信公众号:码农翻身(有重新排版)
作者:老刘

. b! h2 g6 M# a( \4 y

评分

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

查看全部评分


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

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

灌水也要讲技术保证句句是十五字/ w2 t% h- X# o

评分

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

查看全部评分

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

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

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

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

总感觉没完呢,还可以继续的吧。9 u$ s; y# b* _1 f( R: B' k; Z
是不是该写上to be continue
屋顶,数星星 「出类拔萃」 2018-1-21 12:47 来自手机 |显示全部楼层

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

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

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

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

本版积分规则

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

GMT+8, 2020-8-5 19:17 , Processed in 0.026786 second(s), 22 queries , Redis On.

© 2015-2020 GuHei.Net

Powered by Discuz! X3.4

快速回复 返回列表