分布式系统关注点——「无状态」详解

本文探讨了分布式系统中的「无状态」概念,解释了「有状态」和「无状态」的区别,以及如何通过「无状态化」处理提高系统的易伸缩性和可维护性。文章建议将状态信息前置,通过丰富入参传递所需数据,避免服务端存储状态,并讨论了分层架构在实现无状态化中的作用。
摘要由CSDN通过智能技术生成

如果这是第二次看到我的文章,欢迎文末扫码订阅我的公众号(跨界架构师)哟~  >

本文长度为2728字,建议阅读8分钟。

坚持原创,每一篇都是用心之作~

 

 

前面聊完的2个章节「数据一致性」和「高可用」其实本质是一个通过提升复杂度让整体更完善的方式。

 

接下去我们开始聊一些让系统更简单,更容易维护的东西——「易伸缩」,首当其冲的第一篇文章就是「stateless」,也叫「无状态」。

 

z哥带你先来认识一下「状态」是什么。

 

 

一、初识「状态」

之前在「负载均衡」的第四篇(分布式系统关注点——做了「负载均衡」就可以随便加机器了吗?)中提到过一个例子,我们再翻出来一下。

 

开发Z哥对运维Y弟喊:“Y弟,现在系统好卡,刚上了一波活动,赶紧帮我加几台机器上去顶一下。”

 

Y弟回复说:“没问题,分分钟搞定”。

 

然后就发现数据库的压力迅速上升,DBA就吼了:“Z哥,你丫的搞什么呢?数据库要被你弄垮了”。

 

然后客服那边接框也爆炸了,越来越多的用户说刚登陆后没多久,操作着就退出了,接着登陆,又退出了,到底还做不做生意了。

 

这个案例中的问题,产生的根本原因是因为系统中存在着大量「有状态」的业务处理过程。

 

 

「有状态」和「无状态」

 N.Wirth曾经在它1984年出版的书中将程序的定义经典的概括为:程序=数据结构+算法。(这个概括也是这本书的书名)

 

这是一个很有意思的启发,受它的影响,z哥认为程序做的事情本质就是“数据的移动和组合”,以此来达到我们所期望的结果。而如何移动、如何组合是由“算法”来定的,所以z哥延伸出一个新的定义:数据+算法=成果

 

通过程序处理所得到的“成果”其实和你平时生活中完成的任何事情所得到的“成果”是一样的。任何一个“成果”都是你通过一系列的“行动”将最开始的“原料”进行加工、转化,最终得到你所期望的“成果”。

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值