架构师速成8.3-可用性之分布式

分布式算是软件界发展的一个里程碑,它开辟一个新的软件时代,其他的溢美之词我就不再乱说了。

分布式按照我的观点,应该分为有状态和无状态2种:

  1. 有状态
    • 分布式数据库
    • 分布式存储
  2. 无状态
    • 分布式计算
    • 分布式web系统

当然分布式尽量做成无状态的分布式,但是存储最终因为最终存储的是有状态的数据,所以不得不变的有状态。当然web系统也可以是有状态的,但是最好做成无状态的,因为无状态可扩展性更强,而有状态必须维护和确定状态和机器的对应关系,无谓增加了很多复杂性。例如:

无状态的集群,我随意增加或减少一台机器,对原有机器无任何影响。有状态的,我就需要知道新增或减少的机器,应该分配哪些数据哪些数据。

我们先从简单的无状态分布式系统说起,分布式计算我就不再展开了,针对web系统如何架构为无状态讲解一下其中的关键:

  1. web系统有状态的原因是什么?如果用户都不需要登录,系统本身就是无状态的,所有人的看到都是一致的。但是用户登录之后,你要一直显示这个登录用户的相关数据,导致了系统变为有状态。
  2. 如何解决这种有状态呢?如果这种状态可以作为数据每次通信时传递给web系统,那web系统就可以变为无状态。这也是常见的有状态变为无状态系统的解决方案,例如web系统将有状态的数据存储在db。解决方案很简单,就是cookie记录用户id。有人说用户登录之后有好多数据,我cookie存不下,而且有安全问题,那就加一个无状态的cache集群,存储所有的用户数据。cookie的id来了之后就去cache拿一下所需的数据,针对这个有个专业的名词叫做 share nothing architecture,sna架构。
  3. 有了无状态的web系统,如果请求量增加,很easy,加机器就可以了。另外有些同学说加的机器怎样感知到,如果有机器宕机,又是如何感知到的,这个是负载均衡干的事情,后面会单独再讲。

无状态的讲完了,那再讲讲有状态的分布式,这个可能需要的篇幅比较多了,让我再单开一章吧。

刚才查了一下,果真有人已经提出了有状态和无状态,呵呵,看来还是有人更专业。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值