谈谈分布式的场景及分布式事务的解决方案
一、解決java集群的session共享的解決方案:
1.客戶端cookie加密。(一般用于內網中企業級的系統中,要求用戶瀏覽器端的cookie不能禁用,禁用的話,該方案會失效)。
2.集群中,各個應用服務器提供了session復制的功能,tomcat和jboss都實現了這樣的功能。特點:性能隨著服務器增加急劇下降,容易引起廣播風暴;session數據需要序列化,影響性能。
3.session的持久化,使用數據庫來保存session。就算服務器宕機也沒事兒,數據庫中的session照樣存在。特點:每次請求session都要讀寫數據庫,會帶來性能開銷。使用內存數據庫,會提高性能,但是宕機會丟失數據(像支付寶的宕機,有同城災備、異地災備)。
4.使用共享存儲來保存session。和數據庫類似,就算宕機了也沒有事兒。其實就是專門搞一臺服務器,全部對session落地。特點:頻繁的進行序列化和反序列化會影響性能。
5.使用memcached來保存session。本質上是內存數據庫的解決方案。特點:存入memcached的數據需要序列化,效率極低。
二、分布式事務的解決方案:
Session 分布式方案
1.客戶端cookie加密。(一般用于內網中企業級的系統中,要求用戶瀏覽器端的cookie不能禁用,禁用的話,該方案會失效)。
2.集群中,各個應用服務器提供了session復制的功能,tomcat和jboss都實現了這樣的功能。特點:性能隨著服務器增加急劇下降,容易引起廣播風暴;session數據需要序列化,影響性能。
3.session的持久化,使用數據庫來保存session。就算服務器宕機也沒事兒,數據庫中的session照樣存在。特點:每次請求session都要讀寫數據庫,會帶來性能開銷。使用內存數據庫,會提高性能,但是宕機會丟失數據(像支付寶的宕機,有同城災備、異地災備)。
4.使用共享存儲來保存session。和數據庫類似,就算宕機了也沒有事兒。其實就是專門搞一臺服務器,全部對session落地。特點:頻繁的進行序列化和反序列化會影響性能。
5.使用memcached來保存session。本質上是內存數據庫的解決方案。特點:存入memcached的數據需要序列化,效率極低。
分布式鎖的場景
比如交易系統的金額修改,同一時間只能又一個人操作,比如秒殺場景,同一時間只能一個用戶搶到,比如火車站搶票等等
分布式鎖的實現方案
基于數據庫實現分布式鎖
基于緩存實現分布式鎖
基于Zookeeper實現分布式鎖
文章來自www.wityx.com,轉載請注明出處!原文地址http://www.wityx.com/post/1295_1_1.html
總結
以上是生活随笔為你收集整理的谈谈分布式的场景及分布式事务的解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: session共享怎么做的(分布式如何实
- 下一篇: Maven修改远程仓库配置