[转载]HTTP无状态是什么意思?

 

作者:曾著
链接:https://www.zhihu.com/question/265610863/answer/300533939
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

首先,要定义一下什么叫【无状态】。 假设用户A向服务B发了一个请求1,再次发送一个请求2。 服务端本身完全不知道两个请求来自同一个用户,这在协议层次就是【无状态】的。

【无状态】设计不是因为

所说的历史原因,而是故意为之。无状态就意味着服务端可以根据需要将请求分发到集群的任何一个节点,对缓存、负载均衡有明显的好处,这一点很容易找到相关文献。

 

很多人对【无状态】感到不理解,大部分情况是误解了【无状态】的含义。http【无状态】仅仅是在*协议层*,当业务需要状态的时候,可以通过request中数据携带所需状态的id来实现。例如,为了让服务器知道是同一个用户的请求,请求1和请求2中必须携带一个相同的id,让服务端可以根据这个id,最终找到用户数据(【状态】)。

实现1:这个状态如果放在处理请求的服务器进程中(例如session),那服务器进程就是有状态的,该用户下一个请求如果没分发到这个进程,就会拿不到上一次请求留下的状态,这样会影响负载均衡和缓存的实现。

实现2:这个状态如果放在处理请求的服务器进程之外的集中式存储,那服务器进程仍然是无状态的,可以集群、负载均衡。无状态服务一般都用这种方案。

 

最后我的观点是:无状态和有状态服务适合不同的场景,并没有绝对的优劣。

转载于:https://www.cnblogs.com/yfish/p/8481380.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值