胸部的大小并没有关系,重要的是存在于那里的温暖。 每日签到 收藏本站
登陆 / 注册 搜索

USERCENTER


查看:4378   回复: 5

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

[复制链接]
发新帖
跳转到指定楼层
楼主
仗剑天涯吾是土豪 发表于 2017-9-8 23:57:15 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

        1.分布式
& }9 m  |0 B* V: r  n
/ y6 @0 q! H9 `0 [9 w/ Q& F        小明的公司有3个系统: 系统A、系统B和系统C ,这三个系统所做的业务不同,被部署在3个独立的机器上运行, 他们之间互相调用(当然是跨域网络的), 通力合作完成公司的业务流程。2 W( n. q) F3 r. ~% X

1 p) v  A* ^0 Q3 j
 1-服务器.png 科普贴——什么是集群和分布式

6 M0 o( G0 O! D) E        将不同的业务分布在不同的地方, 这就构成了一个分布式的系统,现在问题来了, 系统A是整个分布式系统的“脸面”, 用户直接访问,用户量访问大的时候要么是速度巨慢,要么直接挂掉, 怎么办? ; w& G% k7 Y9 C4 B0 }$ I% L" J/ a& o

  N0 u0 M. D' ~3 Z  g, Q* p        由于系统A只有一份, 所以会引起单点失败。
3 l/ L5 n) ]$ g2 c# [
; M2 _1 y7 f1 U9 x1 X        2.集群(Cluster)
0 R" v9 u' ]2 y, ?5 ?; D+ J9 {0 w) V8 s/ A1 t( ?
        小明的公司不差钱,就多买几台机器吧, 小明把系统A一下子部署了好几份(例如下图的3个服务器),每一份都是系统A的一个实例, 对外提供同样的服务,这样能睡个安稳觉了,不怕其中一个坏掉了,我还有另外2个呢。  ( X" E: s) M* K1 Y

; ~* c2 L% ~8 F' x- E        这3个服务器上的系统就组成了一个集群。
7 O  S; A) w) F& `% @4 D
7 }+ N. V! ]! D! y* s
 2-集群.png 科普贴——什么是集群和分布式
( z7 Z3 Z# p1 O+ D  R
        可是对用户来说,一下子出现这么系统A ,每个系统的IP地址都不一样,  到底访问哪一个?
6 ^$ S$ J" o- q1 j3 E) x3 q( W: {  @1 v& P/ b
        如果所有人都访问服务器1.1 ,那服务器1.1 会被累死, 剩下的三个闲死,成了浪费钱的摆设。# x1 G' U7 G! y  }+ Q, D4 T
5 t) n* m8 j5 d! k1 ]8 [8 x
        3.负载均衡(Load Balancer)9 @, Z* S) d5 ~% P; G( a& D6 U

, _7 y5 R- l4 m# d& h: j) a        小明要尽可能的让3个机器上的系统A 工作均衡一些, 比如有3万个请求,那就让3个服务器各处理1万个(当然,这是理想状况), 这叫负载均衡。  
3 v5 u3 E6 E( w8 E) ]' e  K% M! l/ W2 ^/ z  O
        很明显,这个负载均衡的工作最好独立出来, 放到独立的服务器上 (例如Ngnix):
* i5 K  r4 K3 _5 X3 ~
3 s+ A, Y5 P9 g! K& {: f
 3-负载均衡.png 科普贴——什么是集群和分布式

" J- z2 C& V* Q. L) ?9 J/ ^! O( o        后来小明发现, 这个负载均衡的服务器虽然工作内容很简单,就是拿到请求,分发请求,但是它还是有可能挂掉啊, 单点失败还是会出现。$ ]+ ~3 |3 o" B& K) u

8 `/ E! `, Q, Z        没办法,只好把负载均衡也搞成一个集群, 不过和系统A的集群有两点不同:
7 J1 {& @/ G  h) q) Q% I# a  Q: C9 k! R: M3 R
        1.  这个新的集群中虽然有两个机器,但我们可以用某种办法,让这个集群对外只提供一个IP地址, 也就是说用户看到的好像只有一个机器。
1 w) N6 @9 M: ~+ M% }% x2 e" u1 @0 V6 Y& q
        2. 同一时刻,我们只让一个负载均衡的机器工作, 另外一个原地待命。 如果工作的那个挂掉了,待命的那个就顶上去。
& ]- q4 Y4 O, Z- d: a0 K8 K$ ?6 @( {, v) ~' ]/ V
 4-负载均衡.png 科普贴——什么是集群和分布式
8 [4 \' z5 C1 c1 t: i; L
        4.弹性
' G+ d6 d; \0 o6 T4 E, E6 m, a, q8 C* O, o: ]- O3 K) L" A9 i
        如果这3个系统A的实例还是满足不了大量的请求,那就再加服务器! - S, W3 C2 U( A9 N* W: x/ ~
6 `+ J0 F$ N' n* o" ~. i
        双11来了,用户量是平时的10倍, 小明向领导申请费用又买了几十台服务器,一下子把系统A部署了几十份。  可是双11过后, 流量一下子降下来了,那几十个服务器用不上了,也变成了摆设!
. z9 n" B4 v$ n( R
7 B) p! Z8 U- _- f        被领导批评以后,小明决定尝试一下云计算,  在云端可以轻松的创建、删除虚拟的服务器, 那样就可以轻松地随着用户的请求动态的增减服务器了。  双11来了就创建虚拟服务器,等到双11过去了就把不用的关掉, 省得浪费钱。
7 c( f. @) L5 h" t! z$ S$ v2 x' Y& \
        于是小明的系统具备了一定的弹性。# }9 \& P2 r9 n' f2 S

6 j: x5 P. B6 ~" i7 u        5.失效转移4 }! R. f0 P& c  K

2 z' O# }' @) y8 |        上面的系统看起来很美好,但是做了一个不切实际的假设: 所有的服务都是无状态的。 换句话说,假设用户的两次请求直接是没有关联的。
7 E2 {; G/ C6 h. a4 ~
9 E, s. R/ I5 a( K- x6 Z' p        但是现实是,大部分服务都是有状态的, 例如购物车。9 k* H  |! }) c: X( c3 l
9 U2 H/ O/ c7 p6 m7 r
        用户访问系统,在服务器1.1上创建了一个购物车,并向其中加入了几个商品, 然后 服务器1.1 挂掉了, 用户的后续访问就找不到服务器1.1了,这时候就要做失效转移,让另外几个服务器去接管、去处理用户的请求。% n' F: l$ W1 n4 m1 F. B
5 B& k- R, z( [( k2 W, S8 P
        可是问题来了,在服务器1.2,1.3上有用户的购物车吗?  如果没有, 用户就会抱怨,我刚创建的购物车哪里去了?
$ ^" v* h  s6 i( U( }+ X2 q% r7 b) {3 _0 K1 L6 ]
        还有更严重的,假设用户是在服务器1.1上登录的, 用户登录过的信息保存到了该服务器的session中, 现在这个服务器挂掉了, 用户的session自然也不见了,当用户被失效转移到其他服务器上的时候,其他服务器发现用户没有登录, 就把用户踢到了登录界面, 让用户再次登录!
0 W, }* Y# I& v7 n5 v2 D7 @" C! N& j! O4 P& X5 x
        状态, 状态,状态! 用户的登录信息,购物车等都是状态信息,  处理不好状态的问题,集群的威力就大打折扣,无法完成真正的失效转移, 甚至无法使用。. b9 `6 }; }5 l8 X# a; i& j

" G: k+ W8 `6 B6 m9 c        怎么办?  #375:% ^* A) k& X, u& i; O7 y

' f7 {% X; C6 Q0 s+ P: w2 g: {0 S        一种办法是把状态信息在集群的各个服务器之间复制,让集群的各个服务器达成一致,  谁来干这个事情? 只能是像Websphere, Weblogic这样的应用服务器了。
5 i% O, h" @  a        7 W8 Q  `0 N& B* Y
        还有一种办法, 就是把状态信息集中存储在一个地方, 让集群的各个服务器都能访问到:
5 r' N9 W% I  l  v. L/ e' L! [% Z, m; b9 p5 W. ]7 }& v
 5-服务器5.png 科普贴——什么是集群和分布式
+ l# ]# N" b1 [* \& a, [
        小明听说Redis 不错, 那就用Redis来保存吧 !
; w- d1 Q. y3 v* K$ J$ {! i: ~) V4 Q9 O
本文来自微信公众号:码农翻身(有重新排版)
作者:老刘

+ j5 f! V  e+ w: g- ]) j- f! v

评分

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

查看全部评分

推荐
巴黎环抱的花海「出类拔萃」 发表于 2017-9-9 06:32:32 来自手机 | 只看该作者
灌水也要讲技术保证句句是十五字$ k4 I. C- n$ E, {" j. i: ]! Q0 E3 ?

评分

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

查看全部评分

Sunglassescat龙战于野 发表于 2017-9-11 14:57:29 来自手机 | 只看该作者
看小执念写的东西比看书有意思
soarcloud「出类拔萃」 发表于 2017-9-11 16:04:29 | 只看该作者
总感觉没完呢,还可以继续的吧。- |* Y8 Q1 q) e, _
是不是该写上to be continue
屋顶,数星星「出类拔萃」 发表于 2018-1-21 12:47:39 来自手机 | 只看该作者
撸主的文章带给我们的是心灵深处的震撼。。。#366:
锁上的光「出类拔萃」 发表于 2018-1-21 14:13:16 来自手机 | 只看该作者
  这篇帖子构思新颖,题材独具匠心,段落清晰,情节诡异,跌宕起伏,主线分明,引人入胜,平淡中显示出不凡的文学功底,可谓是字字珠玑,句句经典,是我辈应当学习之典范。
您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则

关于我们|小黑屋|手机版|Archiver|古黑论

GMT+8, 2019-9-21 07:02 , Processed in 0.055005 second(s), 40 queries , Gzip On, Redis On.

© 2015-2019 GuHei.Net

Powered by Discuz! X3.4

快速回复 返回列表