• ASCE1885
    2018-11-06
    无状态服务的主要好处是服务间无需同步状态或者数据,便于扩缩容。

    作者回复: 是的

    
     70
  • 不求
    2018-11-07
    针对于思考题的一些思考:
    分布式架构的原则:尽量使用无状态的服务,不同服务实例之间不共享状态,也就是不持有数据。。。

    这个问题我是这样考虑的,什么是无状态的服务?为什么需要它?它是在怎样的情况下出现的?

    这个应该是分布式架构的设计者在考虑架构的可扩展行(伸缩性)的时候设计出来的这样一个针对于服务的一个要求或者是标准(也就是原则);

    所以我想说,这个问题太“应试”了,就像您的课程一样,之前都是顺着从无到有的一个顺序给我们讲解,我听的很爽,真的是爽,突然来了一个这样的反逻辑的“应试”问题,我有点懵。

    再多说一点,好像国内的教育太“应试”的原因也有是过于拆解概念,然后对概念进行逻辑行考核验证;所以我们上学时都挺会考试的,都在应付这个逻辑,而忽略了真正的学识,一个从无到有的东西,它是如何被创造出来的,它为什么会被创造出来,它还有没有改善的余地。也是“应试”环境下的学生创造力越来越差的原因吧,更多的花费在了逻辑推理上。

    老师,若有冒昧,还请批评指正,感谢🙏
    展开

    作者回复: 思考深入👍🏻

    
     28
  • jon
    2018-11-06
    移动数据的成本高且一台机器负载不了,所以用计算找数据的方式,让数据平均分布在集群中,把软件包发生到各台机器上并行对相对较小的数据计算,计算结果再合并起来。
    无状态的原因是程序包可以负载均衡的分发到任何最优的节点进行计算,计算时宕机了也可以在另一台创新计算,各个节点都是一样的环境
    
     12
  • 高国君
    2018-11-15
    互联网使用无状态服务的原则,主要目的是为了实现服务的低耦合高内聚的目标。一旦低耦合高内聚,服务就可以动态伸缩(放/换哪个机器上都可以运行),同时,也引申出另外一个要求:如何实现服务的发现、编排、调度?这就涉及一些微服务框架了。
    对于大数据,如果不是无状态服务,那弹出一个服务,还要调它依赖的服务,那么这个处理过程,会有非常多非必要的开销,也有非常多的隐患。譬如,被调用的服务怎么保证面对大量请求时的处理性能和可用性?所以,大数据的计算或存储,必须用一个无状态服务。
    对于它的处理逻辑:就是先把计算模型先设计好,之后,在先抓数据源,并分片后处理成任务。任务调用计算模型,生成计算结果。这样,任务分片后,被放入了一个分布式环境中执行,就实现了分布式计算。
    展开
    
     11
  • 陈柏林
    2018-11-07
    每台服务器原本都不带有程序,但是调度服务器为处理服务器分发任务之后,处理服务器就执行任务并检查是否有该程序,没有就下载,下载之后从指定路径中读取数据进行处理,处理好之后统一存放处理结果,大概的执行流程是这样吗?

    作者回复: 是的

    
     4
  • 五岳寻仙
    2018-11-06
    刚接触这个领域,认知还比较浅显。我觉得成千上万的机器之间通信会很耗费时间,无状态能保证减少机器之间的耦合,提高效率。

    作者回复: 即使有状态的服务器,也尽量做到share nothing,尽少通信,不然n对n通信,通信量巨大

    
     4
  • 没有枫树的枫林
    2018-11-07
    有点抽象,能举例子说明一下什么是无状态的什么是有状态的吗?移动计算不就是那个节点都进行相同的计算吗?是说计算过程需要依赖其他节点的数据叫有状态?

    作者回复: 大数据的分布式都是有状态的,这个无状态是网站架构里的无状态应用,抱歉思考题跳跃有点大。

    关于无状态应用可以参考我的《大型网站技术架构》这本书

    
     3
  • 苏锐 | JuiceFS
    2018-11-13
    在 hadoop 提出的年代是百兆网卡为主,所以搬数据会出现网络带宽的瓶颈。今天,万兆网卡已经成为标配,data locality 已经没那么重要了吧,请教李老师。同时,下发计算,scale-out 的能力会受 data node 数量的限制,Facebook 等厂商开始实践存储与计算分离的架构,计算资源更容易在大任务执行时去临时扩展。希望和李老师探讨
     1
     2
  • 老男孩
    2018-11-06
    期待后面的文章。无状态的服务是内聚的低耦合的,同一个用户的请求可以被分发到不同服务节点上进行处理。伸缩自如。

    作者回复: 是的

    
     2
  • 公号-云原生程序员
    2018-11-06
    无状态服务有利于提升分布式系统的可伸缩性。

    作者回复: 是的

    
     2
  • 丶请叫我七七丿。
    2019-01-08
    大数据引擎根据集群里不同服务器的计算能力,在每台服务器上启动若干分布式任务执行进程,这些进程会等待给它们分配执行任务....
    请问:分布式任务执行程序是指什么?

    作者回复: 继续学习,会有答案~

    
     1
  • 贝特
    2018-11-11
    无状态,主要是为了可靠性和扩缩容。
    可靠性体现在如果集群中单个节点故障后,其他节点能无缝接管比此节点的数据,而不需要实时做同步。
    扩缩容和可靠性类似,单节点坏掉就是缩容的一个特殊场景,扩容体现在增加节点后也不需要做状态和数据同步。

    作者回复: 是的

    
     1
  • cellardoor
    2018-11-06
    无状态的好处:
    1,伸缩性更好,应用之间无需同步状态,方便伸缩。
    2,幂等,应用服务器之间都是对等的,请求落在哪里都可以得到相同的响应。
    3,可用性更好,有状态,意味着有数据丢失的可能,在某些情况下,状态不一致容易造成可怕的结果。
    4,性能好,应用服务器之间无需同步,减少对资源的浪费;

    作者回复: 赞

    关于2幂等,应用服务器无状态,但是应用服务器依赖的数据库或者其他服务器可能有状态,无状态的应用服务器也无法幂等了。需要看情况。

    
     1
  • yangsanity
    2018-11-06
    最近在自学一些大数据的组件,有个问题想请问一下老师,在不改写sqoop源码的情况下,有没有什么好的方法避免数据倾斜?
    
     1
  • 公号-云原生程序员
    2018-11-06
    无状态服务有利于提升分布式系统的可伸缩性。

    作者回复: 是的

    
     1
  • gogo
    2018-11-06
    【自问自答】什么是无状态服务?无状态服务的好处是什么?无状态服务有没有缺点?
    
     1
  • John Lau
    2018-11-06
    無狀態服務可以免除需要同步狀態的情況,系統可以跟據情況把計算自由分發到不同的機器上,而不用考慮同步問題。實現起來也會簡單很多。
    但我有個問題:現實場景就是有很多時候需要有狀態,有沒有系統的思考方法,把需要狀態的工作方式,改寫成不需要狀態的工作方式?

    作者回复: 状态委托给其他服务器,缓存或者数据库。
    有状态是逻辑需要,可以委托出去,但是很难不要状态。

    
     1
  • 淤白
    2020-01-06
    无状态服务,可以方便进行服务器扩容和缩容,增加水平扩展性
    
    
  • 大数据小先
    2019-11-21
    不同服务实例处理结果必须一致,不然用户请求买个A商品,结果一号服务给他买了A商品,二号服务给他买了B商品,谁都得崩溃。
    无状态可能是指,例如:用户请求购买一件商品,服务实例只关注自己所需处理的信息,处理完成就继续下一笔,不记录用户状态,用户权限验证,交易成功或者异常等情况,交给专门处理这些任务的服务。
    
    
  • xiong
    2019-11-12
    无状态的服务,更容易支持并发or 并行,也就更容易水平扩容,提高服务整体的吞吐量。
    
    
我们在线,来聊聊吧