• 架构师速成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,加机器就可以了。另外有些同学说加的机器怎样感知到,如果有机器宕机,又是如何感知到的,这个是负载均衡干的事情,后面会单独再讲。

    在阿里巴巴有一个专门的架构方案来解决web架构的有状态,叫做tbsession。

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

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

  • 相关阅读:
    网络科学导论【第二章】读书脑图
    稳定匹配
    Machine learning(3-Linear Algebra Review )
    Machine learning(2-Linear regression with one variable )
    Machine learning(1-Introduction)
    1710. Maximum Units on a Truck (E)
    0729. My Calendar I (M)
    0105. Construct Binary Tree from Preorder and Inorder Traversal (M)
    0746. Min Cost Climbing Stairs (E)
    0128. Longest Consecutive Sequence (M)
  • 原文地址:https://www.cnblogs.com/top100j/p/4716966.html
Copyright © 2020-2023  润新知