没有动漫的世界,就是没有的光明的大地! 收藏本站
登陆 / 注册 搜索

阅读: 5.9K   回复: 5

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

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

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

主题破百
        1.分布式
& {0 ^9 x! _' S' ~, P( N7 D; z& W# F
        小明的公司有3个系统: 系统A、系统B和系统C ,这三个系统所做的业务不同,被部署在3个独立的机器上运行, 他们之间互相调用(当然是跨域网络的), 通力合作完成公司的业务流程。
( K1 O0 L  t7 T/ R
, w- u- P9 J, ~- I  z9 T$ ]
科普贴——什么是集群和分布式 1-服务器.png
% ]3 R# E) H8 c) [# s: C& A
        将不同的业务分布在不同的地方, 这就构成了一个分布式的系统,现在问题来了, 系统A是整个分布式系统的“脸面”, 用户直接访问,用户量访问大的时候要么是速度巨慢,要么直接挂掉, 怎么办? / G  ]4 p  d: F1 `9 I. d0 @

' @# ]8 ^7 N4 U+ o7 f  H# ?        由于系统A只有一份, 所以会引起单点失败。
- N- t: o. Q: e
$ e, A$ m% H% s$ _, R        2.集群(Cluster)
+ |3 ~; i0 {1 ?4 F+ ^& v- \: N$ Z' _! j  S) i5 E. M4 J8 b3 Y% l
        小明的公司不差钱,就多买几台机器吧, 小明把系统A一下子部署了好几份(例如下图的3个服务器),每一份都是系统A的一个实例, 对外提供同样的服务,这样能睡个安稳觉了,不怕其中一个坏掉了,我还有另外2个呢。  
9 s, w! H) ^. z& `, f: i4 ~9 n6 J5 L. B* E% F) x  ^% h+ @8 c, h
        这3个服务器上的系统就组成了一个集群。
) Q4 k0 K: G0 q' |1 A: b8 y
7 q! N  x6 O- I- g! ^5 V
科普贴——什么是集群和分布式 2-集群.png

1 {% x+ I8 _! b6 c        可是对用户来说,一下子出现这么系统A ,每个系统的IP地址都不一样,  到底访问哪一个? ! ?/ a8 T' S" I5 g0 d6 ]' ?* T$ W( Q4 I
0 W# H+ w- n. y2 \
        如果所有人都访问服务器1.1 ,那服务器1.1 会被累死, 剩下的三个闲死,成了浪费钱的摆设。
: F5 A( p! ?- C
6 O- z% L. B! m1 w. L9 v5 p6 [( J        3.负载均衡(Load Balancer)
& M8 M$ u& |0 `( n$ H) O4 E
/ Z; L; X5 Y% V4 O4 N; T$ j0 Z        小明要尽可能的让3个机器上的系统A 工作均衡一些, 比如有3万个请求,那就让3个服务器各处理1万个(当然,这是理想状况), 这叫负载均衡。  - Y. g9 N- ]% N1 u/ Q+ h
5 f1 X' s6 `' h; }
        很明显,这个负载均衡的工作最好独立出来, 放到独立的服务器上 (例如Ngnix):
! Z% M5 N9 y" P$ a
) L0 p" B& g$ m. @
科普贴——什么是集群和分布式 3-负载均衡.png
' Z! Q' v! ~$ P6 h1 c! w- [3 |
        后来小明发现, 这个负载均衡的服务器虽然工作内容很简单,就是拿到请求,分发请求,但是它还是有可能挂掉啊, 单点失败还是会出现。
0 {, U9 K3 G6 I6 L# N8 Y, c  x% U
6 _( P/ o* L3 a3 f+ w: u' t        没办法,只好把负载均衡也搞成一个集群, 不过和系统A的集群有两点不同:
2 F9 i7 D; d, _
4 O. h6 O8 X$ T$ O; t        1.  这个新的集群中虽然有两个机器,但我们可以用某种办法,让这个集群对外只提供一个IP地址, 也就是说用户看到的好像只有一个机器。
6 o/ T2 m6 h1 T( z6 y$ V" b8 R/ L: {: ~) i! }0 u, p8 Z
        2. 同一时刻,我们只让一个负载均衡的机器工作, 另外一个原地待命。 如果工作的那个挂掉了,待命的那个就顶上去。
( p) }4 ^( [) [2 F- c/ M: e
' _; R3 e! K7 z3 G5 r; f
科普贴——什么是集群和分布式 4-负载均衡.png

1 Q/ R- i& ?/ A+ t; c$ q8 B        4.弹性6 u. a2 K! Y" O

' P) [3 T# `8 I' g) X% N4 @        如果这3个系统A的实例还是满足不了大量的请求,那就再加服务器! * r% l3 n! t& S7 u! N/ n# v- t9 x
. M6 a$ S+ Z3 Y( I* ^5 {4 e+ U
        双11来了,用户量是平时的10倍, 小明向领导申请费用又买了几十台服务器,一下子把系统A部署了几十份。  可是双11过后, 流量一下子降下来了,那几十个服务器用不上了,也变成了摆设!
9 Y% J2 x" n. O( q" I3 O
! R7 L) e2 s" F" @4 W2 G. O( d' \        被领导批评以后,小明决定尝试一下云计算,  在云端可以轻松的创建、删除虚拟的服务器, 那样就可以轻松地随着用户的请求动态的增减服务器了。  双11来了就创建虚拟服务器,等到双11过去了就把不用的关掉, 省得浪费钱。 8 i& E7 d5 e, n( [3 Q& [

9 a% N# n' x- x, I" ~4 w* j        于是小明的系统具备了一定的弹性。
  Z5 ~. n) Q: N
4 F# I/ G9 E2 k  r7 Q: y        5.失效转移5 n. n2 D5 K# M9 ^
- N  A  r; s  ~. B! a
        上面的系统看起来很美好,但是做了一个不切实际的假设: 所有的服务都是无状态的。 换句话说,假设用户的两次请求直接是没有关联的。8 F' C2 |) i, l' m% y

' G0 C2 p; w% i1 C& K        但是现实是,大部分服务都是有状态的, 例如购物车。
7 I( |: o! @" Q  C  I% H4 M3 O3 P+ ?1 Z7 ^8 q9 `
        用户访问系统,在服务器1.1上创建了一个购物车,并向其中加入了几个商品, 然后 服务器1.1 挂掉了, 用户的后续访问就找不到服务器1.1了,这时候就要做失效转移,让另外几个服务器去接管、去处理用户的请求。8 d& p$ w  [  e4 v
/ A+ \8 W4 V6 X2 c8 ]# I
        可是问题来了,在服务器1.2,1.3上有用户的购物车吗?  如果没有, 用户就会抱怨,我刚创建的购物车哪里去了?
+ {/ i8 W6 P* K# {
0 b6 ]8 Q8 Q4 V        还有更严重的,假设用户是在服务器1.1上登录的, 用户登录过的信息保存到了该服务器的session中, 现在这个服务器挂掉了, 用户的session自然也不见了,当用户被失效转移到其他服务器上的时候,其他服务器发现用户没有登录, 就把用户踢到了登录界面, 让用户再次登录!" i9 x! t+ o% {2 O

- y/ A( D$ m& D" n6 F        状态, 状态,状态! 用户的登录信息,购物车等都是状态信息,  处理不好状态的问题,集群的威力就大打折扣,无法完成真正的失效转移, 甚至无法使用。" A1 P0 }2 _  C3 }# ]

) f  {+ n. O0 i# }. n# H* Z$ H' W( V        怎么办?  #375:! G" T. O9 z& c8 F! U

: y9 |% D! I9 ~* z2 A        一种办法是把状态信息在集群的各个服务器之间复制,让集群的各个服务器达成一致,  谁来干这个事情? 只能是像Websphere, Weblogic这样的应用服务器了。
/ y' v$ S+ N9 }        
/ _' e! r# b1 q2 ]8 O9 X        还有一种办法, 就是把状态信息集中存储在一个地方, 让集群的各个服务器都能访问到:) x+ G6 n9 Q6 C$ S8 _, Z
, l+ T1 X4 g1 T+ I1 |% u/ ]
科普贴——什么是集群和分布式 5-服务器5.png

& t9 y6 x) b/ z" x$ ]        小明听说Redis 不错, 那就用Redis来保存吧 !$ {' ?3 B2 F5 q; E) ^

, [$ R9 i8 i$ b- G
本文来自微信公众号:码农翻身(有重新排版)
作者:老刘
" \/ Z+ A, t1 ^' i- c" U
上一篇
下一篇

评分

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

查看全部评分


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

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

灌水也要讲技术保证句句是十五字* q: f+ K6 d. z6 k( W

评分

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

查看全部评分

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

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

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

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

总感觉没完呢,还可以继续的吧。
2 q( T& g3 S9 I: K7 e  _" h是不是该写上to be continue
屋顶,数星星 「出类拔萃」 2018-1-21 12:47 来自手机 |显示全部楼层

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

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

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

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

本版积分规则

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

GMT+8, 2021-2-25 13:27 , Processed in 0.031096 second(s), 23 queries , Redis On.

© 2015-2020 GuHei.Net

Powered by Discuz! X3.4

快速回复 返回列表