有狀態服務和無狀態服務


對於應用服務器來說,當客戶端來訪問時,是否會在服務器保存客戶端的信息(比如: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 對於一致性,強一致性:實時都可以讀取到最新值,

                      弱一致性:寫入新值后,有的服務會讀取的到,有些服務讀取不到,

                     最終一致性:在一段時間后,都可以讀取到最新的值。  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM