摘要:離線并發多個數據庫事務中支持多線程的各種應用服務器并發問題丟失更新同時編輯文件,相繼保存,最終丟失先保存者更新的內容不一致性讀取期間,數據有更新執行語境從與外界交互角度看的個語境請求對應于軟件工作的外部環境發出的單個調用,處理請求的軟件會決
離線并發:多個數據庫事務中支持多線程的各種應用服務器
1. 并發問題: 1)丟失更新(同時編輯文件,相繼保存,最終丟失先保存者更新的內容) 2)不一致性(讀取期間,數據有更新) 2. 執行語境: 1)從與外界交互角度看的2個語境:請求:
對應于軟件工作的外部環境發出的單個調用,處理請求的軟件會決定是否返回一個應答(過程大部分是在服務器端進行,而客戶端則假設為在等待應答)
會話:
客戶端和服務器端之間一次長時間的交互
2)操作系統的2個語境: 進程:重量級的執行語境,將其正在處理的內部數據域外部隔離開(有效隔離,減少沖突,但需要消耗很多資源)
線程:輕量級的執行語境,一個多帶帶的進程里可以存在多個線程(可以充分利用資源,但易導致并發問題)
3. 隔離與不變性:企業應用2個解決方案:
1)隔離: 方案1:劃分數據,使得每一個片數據都只能被一個執行單元訪問(操作系統為每個進程多帶帶分配一片內存,并且只有這個進程可以對這片內存進行讀寫操作)
方案2:文件鎖,一個人打開文件,其他人再無法打開或者只打開該文件只讀拷貝并且不能修改(好的并發設計應該是:找到各種創建隔離區的辦法,并且保證在每個隔離區里能夠完成盡可能多的任務)
2)不變性: 方案1:識別哪些是不變的數據(只有在共享數據可以修改的情況下,并發問題才會出現),不用考慮這些數據的并發問題二廣泛地共享它們
方案2:把那些只讀取數據的程序分開,讓他們只是用拷貝的數據源
4. 樂觀并發控制盒悲觀并發控制: 1)2種鎖: 樂觀鎖:關于沖突檢測的(僅當提交更新時才檢查沖突)
優點:并發性高,限制較少,使用起來比較自由
缺點:業務數據比較復雜,難以自動合并,并且使用者難以發現差別時,只能丟棄原有數據,從頭開始更新
悲觀鎖:關于沖突避免的(只要有人已是用當前數據或者文件,拒絕其他人使用當前數據或文件)
優點:減少并發程度
缺點:用戶體驗差
兩種策略選擇標準:沖突的頻率與嚴重性(沖突少或者沖突后果不嚴重時,選擇樂觀鎖;否則選擇悲觀鎖)
2)避免不一致性: a. 檢測不一致讀:通過讀加鎖(read lock,共享鎖)和寫加鎖(write lock,排他鎖),可以一次多個人對同一份數據加只讀鎖,但只要有人得到一個只讀鎖,其他人就都無法得到寫鎖;一旦有人得到一個寫鎖,其他人都不能得到兩種所中任意一種
基于數據的某種版本標識(時間戳或者順序計數器),核對將要更新數據的版本標識和共享數據的版本標識,如果兩者一樣,系統允許更新數據并更新共享數據的版本標識
b. 時序讀:每次讀取數據時都是用某種時間戳或其他不變的標簽作為約束條件,數據庫根據時間或者標簽返回數據(源代碼控軟件可以用,但數據庫比較困難并且代價昂貴)
3)死鎖:處理死鎖的方法:
a. 用軟件來檢測死鎖的發生,選擇一個犧牲者,放棄他的工作和他所加的鎖;
b. 給每個鎖都加上時間限制,一旦達到時間限制,所加的鎖就會失效,工作就會丟失;
防止死鎖的方法:
強制人們在開始工作時就獲得所有可能需要的鎖,在此之后就不再允許得到更多的鎖;
可以硬性規定每個人獲得鎖的順序(如按姓名字母順序)
5. 事務: 1)ACID:原子性、一致性、隔離性、持久性
2)事務資源:定義:可以進行事務處理的任何事物
事務控制方法:保證事務盡可能短(盡可能不讓事務跨越多個請求,跨越多個請求的事務稱為長事務);
盡可能晚打開事務
3)減少事務隔離以提高靈活性: SQL的4種隔離級別:可串行化的、可重復讀、讀已提交、讀未提交
不必給所有的事務設置相同的隔離級別,而應該仔細觀察每個事務并根據每個事務具體情況來決定如何權衡靈活性與正確性
4)業務事務和系統事務: 系統事務:由關系數據庫系統和事務監視器所支持的事務 (一般不用干預)
業務事務:簡單辦法:在單個系統事務中執行完整的業務事務(產生長系統事務);
復雜的,采用離線并發(通過工作單元來保存更新數據)
6. 離線并發控制的模式:樂觀離線鎖、悲觀離線鎖
7. 應用服務器并發:每會話一線程 VS 每會話一進程:線程節省資源,但創建和進入隔離區很重要
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/30044.html
摘要:遠程外觀運行機制使用時機數據傳輸對象運行機制使用時機進一步閱讀 1.遠程外觀 (Remote Facade) 1.1運行機制 1.2使用時機 2.數據傳輸對象 (Data Transfer Object) 2.1 運行機制 2.2 使用時機 2.3 進一步閱讀
摘要:目前,中關村黑馬程序員訓練營已成長為行業學員質量好課程內容深企業滿意的移動開發高端訓練基地,并被評為中關村軟件園重點扶持人才企業。黑馬程序員的學員篩選制度,遠比現在以上的企業招聘流程更為嚴格。系統的學習可以參考w3c的教程 web概念概述 * JavaWeb: * 使用Java語言開發基于互聯網的項目 * 軟件架構: 1. C/S: Client/Server 客戶端/服務...
摘要:若以多線程的方式操作這些,則可能出現操作的沖突。另外,因為是單線程的,在某一時刻內只能執行特定的一個任務,并且會阻塞其它任務執行。瀏覽器事件觸發線程事件觸發線程,當一個事件被觸發時該線程會把事件添加到任務隊列的隊尾,等待引擎的處理。 首先,說下為什么 JavaScript 是單線程? 總所周知,JavaScript是以單線程的方式運行的。說到線程就自然聯想到進程。那它們有什么聯系呢? ...
摘要:工作單元用于維護受業務事務影響的對象列表,并協調變化的寫入和并發問題的解決。工作單元控制器工作單元控制所有數據庫的讀操作,一旦對象被讀取,將將它注冊為干凈的對象。 1. 工作單元 用于維護受業務事務影響的對象列表,并協調變化的寫入和并發問題的解決。如下: showImg(https://segmentfault.com/img/remote/1460000018095222?w=162...
摘要:大家好,我是冰河有句話叫做投資啥都不如投資自己的回報率高。馬上就十一國慶假期了,給小伙伴們分享下,從小白程序員到大廠高級技術專家我看過哪些技術類書籍。 大家好,我是...
閱讀 1117·2023-04-26 03:02
閱讀 1161·2023-04-25 19:18
閱讀 2583·2021-11-23 09:51
閱讀 2561·2021-11-11 16:55
閱讀 2614·2021-10-21 09:39
閱讀 1694·2021-10-09 09:59
閱讀 1991·2021-09-26 09:55
閱讀 3512·2021-09-26 09:55