【資訊軟體知識】「鎖」的兩極化,樂觀與悲觀

閱讀時間約 4 分鐘
這次會分享關於「鎖」的主題除了工作上遇到這樣的情境之外,也發現到其實軟體技術大部分跟我們生活情境息息相關,覺得非常有趣,因此嘗試將艱澀難懂的技術化為淺顯易懂的圖文知識來幫助大家快速理解,除了應用在工作上,或許對於生活過程中遇到的一些問題也能得到一些啟發。
此篇章主要著重於觀念的分享,並不會深入探討實作的細節,相信只要觀念通了,對於技術實作的道路上一定會非常順暢,好吧!廢話不多說,趕快來介紹一下樂觀鎖與悲觀鎖的基本觀念。

情境

軟體開發的過程中想必我們開會過程中常常會聽到以下的關鍵字句:

- 併發問題就應該用樂觀鎖啊!
- 最安全的併發正確性應該用悲觀鎖吧!
- Scale Out的服務怎麼保證正確呢?
- 啊!雙十節要到了,如何確保客戶的訂單與商品數量是正確的又能兼顧效能?
以上的問題都圍繞在效能、正確性, 而其中最關鍵的就是「鎖」, 雖然「鎖」難免會造成效能的下降, 但這點不足之處對於現階段的群集架構之下, 已經能夠透過橫向擴展的方式進行補足, 因此「鎖」的技術值得我們好好認識一番!

悲觀鎖(Pessimistic Lock) 😭

就如同字面上的意思, 對任何的事物都很悲觀, 而這種情緒之下的處理方式就是盡量鎖住整個資源, 保證整體一致性之後再釋放, 雖然安全但效能下降程度非常的高。
以生活化的例子來說, 當我們要去餐廳慶祝一下的時候, 通常就兩種作法, 不是預訂就是現場候位, 那麼較悲觀的人可能會事先安排, 因此會進行訂位的動作, 那麼一旦訂位之後, 該位置到某個時段就等於是被「鎖」上, 直到我們用完餐之後才釋放, 這樣的情境下確保我們能正確的慶祝用餐, 但對於資源使用上來說就相對耗費了, 尤其當我們發生非預期狀況之下無法到場時, 原本餐廳能夠服務到更多客人, 卻因為我們的「鎖」而導致服務客人的量減少了, 餐廳也少賺了一些客人的消費金額。

優點

- 保證「鎖」上的資源能夠完整處理操作後再釋放。

缺點

- 「鎖」的粒度太大導致資源的浪費。

樂觀鎖(Optimistic Lock) 😀

先做就對了, 有衝突再解決…。
一樣以餐廳為例, 這次就變成現場候位的狀況, 不採取預訂方式, 有位置再吃, 大不了下個時段再來, 這樣對於餐廳端來說, 資源閒置的狀況減少了, 每一桌吃完就服務下一桌, 以軟體技術語言的角度來說就是,先提交若「⚔️衝突」則下次提交。
上面有三個關鍵字分別是「先提交」、「衝突」、「下次提交」, 很暴力簡單的作法卻很有效, 最關鍵的就是「⚔️衝突」的偵測, 如何識別「⚔️衝突」就是相當重要的一環了。
其實偵測「⚔️衝突」的原理非常簡單, 通常最簡易的作法就是壓上一個版本號, 假若針對目標進行異動時, 發現版本號已經被異動了, 就視為「⚔️衝突」, 再更新資料到記憶體並重新進行一次操作即可。

優點

- 資源相對悲觀鎖能夠較有效的被善用。

缺點

- 併發量越高, 可能發生衝突的機率越高。
- 通常是人為實現的, 因此使用時要非常小心控制的欄位。

結語

「🔑 鎖」的概念非常的有趣, 結合到現實面也能夠藉此改善流程及效率, 大幅減少資源的浪費, 降低成本, 在雲端時代中, 軟體也漸趨複雜, 隨著無國界的發展, 一套優質的軟體勢必會服務來自世界各地的使用者, 然而當使用量倍增時, 也勢必面臨到橫向擴展與平行處理的技術, 但在這之間如何維持正確性與兼顧效能, 就取決於我們怎麼使用這把「🔑 鎖」囉。
除非有非常強烈的一致性需求才使用悲觀鎖, 否則一般的情境下樂觀鎖基本上都能夠通用。
每一項技術的背後都有其優缺點, 並非單一項就能通吃, 因此若我們能夠多認識一些技術背後的原理與優缺點, 相信遇到狀況時就能夠隨時因應變化, 端出最適用的技術應對, 如此一來才能夠打造出穩定可靠的系統軟體。
喜歡撰寫文章的你,不妨來了解一下:
歡迎加入一起練習寫作,賺取知識,累積財富!
為什麼會看到廣告
94會員
268內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
留言0
查看全部
發表第一個留言支持創作者!
你可能也想看
資訊瘦身運動資訊瘦身,拎回從指縫中逃走的時間。
Thumbnail
avatar
Saraha
2024-06-19
網路安全革命:如何利用先進監控軟體提升資訊安全在現今數位時代,網路安全已成為企業和個人必須面對的首要挑戰。隨著網路犯罪活動的日益猖獗,如何有效地保護敏感資訊並確保網絡環境的安全,成為每個組織和個人不可忽視的重要課題。本文將帶你了解如何利用先進的監控軟體來提升資訊安全,為您提供全面的解決方案。
avatar
唐志偉
2024-06-17
資訊種子培訓計畫:一個讓你看見更多可能性,陪你走過徬徨與迷惘的地方(上篇)不論你是對未來的職涯、學業感到迷惘無助,或是雖然有了明確方向但還是想要獲得更多、看得更遠,我相信點進這篇文章的你,就是資訊種子的有緣人。我將分享自身經驗,告訴你為何資訊種子是大學生一定要好好把握的大好機會,以及我是如何加入資訊種子、在裡頭學習成長、到現在發芽茁壯。
Thumbnail
avatar
益生駿
2024-06-10
挑選 RPA 軟體導入的五大評估指標!|昕力資訊發現RPA技術的無限潛力!了解如何透過Robotic Process Automation(RPA)實現自動化,克服企業勞動力短缺的挑戰。我們分享RPA的優勢、限制以及選擇最適合您企業的軟體的關鍵評估指標。結合AI技術,為您的業務帶來效率和質量的提升。不要錯過這個關於RPA未來發展趨勢的深入指南!
Thumbnail
avatar
昕力資訊
2023-12-15
軟體資訊紀錄 1PS Photoshop 之外的影像編輯軟體簡介
avatar
明瑜學外語
2023-10-21
【資訊爆炸的時代】避免淪為資訊弱者的重要性(上)|社會知識#01pic from pexels 插播一下我最近發生的事,可能有別於之前普遍走勵志和鼓勵的路線,這次要寫的是比較灰暗一點的經驗。 不過我想,這不就是人生的一部分嗎?身為存活在這一個被制定好許多遊戲規則,名為「社會」的環境下,我們究竟該如何保護好自己? 不去為了利益傷害他人,也不要被他人所傷害。 先來
Thumbnail
avatar
楊筠 Yuna
2021-12-15
【資訊新知】Lark EP.01 - 遠端協作軟體 - Lark!Lark對很多人來說,可能是完全沒有聽過的東西,這個協作軟體在大陸的名稱是「飛書」,而國際板的名稱則是「Lark」 很久沒寫過這一類的分享文,一腳跌進各種坑裡,真的爬不出來呢(;´༎ຶ
Thumbnail
avatar
貓日宅夜
2021-10-24
看盤軟體有相當豐富的資訊,包含技術指標、籌碼等資訊!新手必看,手把手教學!看盤軟體有相當豐富的資訊 包含常用的技術指標,KD、MACD 等等  還有籌碼指標,包含外資、投信、融資、融券等資訊  還有主力指標,包含主力進出、大戶持股,散戶持股等資訊  還有許許多多的指標   工欲善其事,必先利其器  本集影片就是要來手把手教學,將這些指標設定在頁面上 很 適合新手的一部影片
Thumbnail
avatar
股海的諾亞方舟
2021-09-08
資訊法領域的證據與程序-數位鑑識(下)延續上一篇的介紹說明,我們接著來看看數位鑑識的處理吧!
Thumbnail
avatar
建佑律師_NoMoreLaw
2021-06-13
資訊法領域的證據與程序-數位鑑識(上)所謂的「資訊法」,可說是只要與網路或數位科技相關的法律,就屬於它的範疇(請參閱本人先前所撰寫的「資訊法律-導論」)。大多是提及實體法的部分,例如著作權法、個資法、民法、消保法、刑法等,但較少有介紹或論及其相關的程序法,也就是如何採集數位證據的
Thumbnail
avatar
建佑律師_NoMoreLaw
2021-06-06