有状态服务和无状态服务

对于应用服务器来说,当客户端来访问时,是否会在服务器保存客户端的信息(比如:session),如果保存,即客户端的请求在服务端具备上下文关系,那么就是有状态服务;

那么无状态服务便是服务器端不保存客户端的请求信息,服务器端能获取到的信息全部来自于请求所携带的信息,或者在其他服务器保存的信息(比如专门存session的服务器)

从分布式角度 对比:有状态服务,多台服务器就session的同步问题,就令人难受:1.大量数据同步,浪费带宽。2. 多台服务器中都有相同的session副本,浪费大量的内存,3.有状态,服务宕机可能会存在数据丢失 4.对于高可用的服务,快速扩容时必要的,然而有状态的服务会有冷启动的问题,必须先加载数据,方可对外提供服务 

  一个方案就是使用专门的session服务器来保存session,客户端登陆的时候会去session服务器进行拿信息,这样来看,对于应用服务器来说,所有的访问都是无状态了。

但是有状态服务也有好处:不需要去调用别的服务,低延迟,不需要额外的存储。

对于构建一个高可用的服务,CAP理论上:Consistency (all  nodes see the same data at the same time)

                   Availability ( a guarantee that every request receives a response about whether it succeeded or failed)

                   Partition tolerance (the system continues to operate despite arbitrary partitioning due to network failures)

但是在实际中,一般只能保证AP 对于一致性,强一致性:实时都可以读取到最新值,

扫描二维码关注公众号,回复: 5382954 查看本文章

                      弱一致性:写入新值后,有的服务会读取的到,有些服务读取不到,

                     最终一致性:在一段时间后,都可以读取到最新的值。  

猜你喜欢

转载自www.cnblogs.com/doublethree/p/10460497.html