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

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

情境

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

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

悲觀鎖(Pessimistic Lock) 😭

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

優點

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

缺點

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

樂觀鎖(Optimistic Lock) 😀

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

優點

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

缺點

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

結語

「🔑 鎖」的概念非常的有趣, 結合到現實面也能夠藉此改善流程及效率, 大幅減少資源的浪費, 降低成本, 在雲端時代中, 軟體也漸趨複雜, 隨著無國界的發展, 一套優質的軟體勢必會服務來自世界各地的使用者, 然而當使用量倍增時, 也勢必面臨到橫向擴展與平行處理的技術, 但在這之間如何維持正確性與兼顧效能, 就取決於我們怎麼使用這把「🔑 鎖」囉。
除非有非常強烈的一致性需求才使用悲觀鎖, 否則一般的情境下樂觀鎖基本上都能夠通用。
每一項技術的背後都有其優缺點, 並非單一項就能通吃, 因此若我們能夠多認識一些技術背後的原理與優缺點, 相信遇到狀況時就能夠隨時因應變化, 端出最適用的技術應對, 如此一來才能夠打造出穩定可靠的系統軟體。
喜歡撰寫文章的你,不妨來了解一下:
歡迎加入一起練習寫作,賺取知識,累積財富!
為什麼會看到廣告
113會員
254內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
留言0
查看全部
發表第一個留言支持創作者!
阿Han的沙龍 的其他內容
企業常常有代理人機制, 當我們有重要的事情需要請假時, 就會有代理人幫我們處理公司事務, 相當於「我們授權代理人處理什麼事情」,而這樣的代理機制在軟體世界也是常見的一種機制, 尤其是在分散式運算的架構下。 那代理能為我們帶來什麼好處呢? 又為什麼非用不可? 這也是我們今天著重探討的主題。 其實代理就
CDN全名為 Content Delivery(Distribution) Network,內容傳遞網路,光看名字應該還不知道能夠做什麼吧!那為什麼又要有CDN呢? 主要是因為現在的時代,很多事務都開始搬上網際網路,而且參與的對象已經是全世界了,假若因為距離太遠,導致載入時間過久,相信對於使用者體驗
執行一個操作要花費的「時間長度」。 舉例來說,時速100公里的前提下,從台北到高雄大約花費4個小時,而這個花費的耗時就稱為延遲。 以一個時間區間作為單位,單位時間內可以執行「幾次」操作,或運算的「次數」。 舉例來說,時速100公里的前提下,從台北到高雄的路段,每一個小時能夠乘載的量能,以高速公路來說
前一篇的「Authentication、Authorization,傻傻分不清楚?」主要在介紹認證與授權的差異之處,而本章節著重於授權這部分,也使用了經典的RBAC模型進行說明。 RBAC模型(Role-Based Access Control:基於角色的訪問控制), 認為可以抽象的表示: Who是
認證(authentication)跟授權(authorization)這兩個名詞常常被混淆,但本質上是完全不同的兩個概念,在數位化的時代下,為了確保每位使用者的安全性,每個系統幾乎都具備認證(authentication)與授權(authorization)這兩大功能,而這些概念也常常出現在我們生
在進入Message Queue之前我們先來了解一下同步/非同步任務的概念。 菜單稱為訊息(Message), 為工作內容描述。 送出菜單的客人稱為生產者(Producer), 負責建立訊息。 櫃台就相當於Queue, 負責接單並依序處理。 廚師就是消費者的概念, 負責消化Queue裡面的訊息。 採
企業常常有代理人機制, 當我們有重要的事情需要請假時, 就會有代理人幫我們處理公司事務, 相當於「我們授權代理人處理什麼事情」,而這樣的代理機制在軟體世界也是常見的一種機制, 尤其是在分散式運算的架構下。 那代理能為我們帶來什麼好處呢? 又為什麼非用不可? 這也是我們今天著重探討的主題。 其實代理就
CDN全名為 Content Delivery(Distribution) Network,內容傳遞網路,光看名字應該還不知道能夠做什麼吧!那為什麼又要有CDN呢? 主要是因為現在的時代,很多事務都開始搬上網際網路,而且參與的對象已經是全世界了,假若因為距離太遠,導致載入時間過久,相信對於使用者體驗
執行一個操作要花費的「時間長度」。 舉例來說,時速100公里的前提下,從台北到高雄大約花費4個小時,而這個花費的耗時就稱為延遲。 以一個時間區間作為單位,單位時間內可以執行「幾次」操作,或運算的「次數」。 舉例來說,時速100公里的前提下,從台北到高雄的路段,每一個小時能夠乘載的量能,以高速公路來說
前一篇的「Authentication、Authorization,傻傻分不清楚?」主要在介紹認證與授權的差異之處,而本章節著重於授權這部分,也使用了經典的RBAC模型進行說明。 RBAC模型(Role-Based Access Control:基於角色的訪問控制), 認為可以抽象的表示: Who是
認證(authentication)跟授權(authorization)這兩個名詞常常被混淆,但本質上是完全不同的兩個概念,在數位化的時代下,為了確保每位使用者的安全性,每個系統幾乎都具備認證(authentication)與授權(authorization)這兩大功能,而這些概念也常常出現在我們生
在進入Message Queue之前我們先來了解一下同步/非同步任務的概念。 菜單稱為訊息(Message), 為工作內容描述。 送出菜單的客人稱為生產者(Producer), 負責建立訊息。 櫃台就相當於Queue, 負責接單並依序處理。 廚師就是消費者的概念, 負責消化Queue裡面的訊息。 採
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
資訊瘦身,拎回從指縫中逃走的時間。
在現今數位時代,網路安全已成為企業和個人必須面對的首要挑戰。隨著網路犯罪活動的日益猖獗,如何有效地保護敏感資訊並確保網絡環境的安全,成為每個組織和個人不可忽視的重要課題。本文將帶你了解如何利用先進的監控軟體來提升資訊安全,為您提供全面的解決方案。
Thumbnail
不論你是對未來的職涯、學業感到迷惘無助,或是雖然有了明確方向但還是想要獲得更多、看得更遠,我相信點進這篇文章的你,就是資訊種子的有緣人。我將分享自身經驗,告訴你為何資訊種子是大學生一定要好好把握的大好機會,以及我是如何加入資訊種子、在裡頭學習成長、到現在發芽茁壯。
Thumbnail
發現RPA技術的無限潛力!了解如何透過Robotic Process Automation(RPA)實現自動化,克服企業勞動力短缺的挑戰。我們分享RPA的優勢、限制以及選擇最適合您企業的軟體的關鍵評估指標。結合AI技術,為您的業務帶來效率和質量的提升。不要錯過這個關於RPA未來發展趨勢的深入指南!
PS Photoshop 之外的影像編輯軟體簡介
Thumbnail
pic from pexels 插播一下我最近發生的事,可能有別於之前普遍走勵志和鼓勵的路線,這次要寫的是比較灰暗一點的經驗。 不過我想,這不就是人生的一部分嗎?身為存活在這一個被制定好許多遊戲規則,名為「社會」的環境下,我們究竟該如何保護好自己? 不去為了利益傷害他人,也不要被他人所傷害。 先來
Thumbnail
Lark對很多人來說,可能是完全沒有聽過的東西,這個協作軟體在大陸的名稱是「飛書」,而國際板的名稱則是「Lark」 很久沒寫過這一類的分享文,一腳跌進各種坑裡,真的爬不出來呢(;´༎ຶ
Thumbnail
看盤軟體有相當豐富的資訊 包含常用的技術指標,KD、MACD 等等  還有籌碼指標,包含外資、投信、融資、融券等資訊  還有主力指標,包含主力進出、大戶持股,散戶持股等資訊  還有許許多多的指標   工欲善其事,必先利其器  本集影片就是要來手把手教學,將這些指標設定在頁面上 很 適合新手的一部影片
Thumbnail
延續上一篇的介紹說明,我們接著來看看數位鑑識的處理吧!
Thumbnail
所謂的「資訊法」,可說是只要與網路或數位科技相關的法律,就屬於它的範疇(請參閱本人先前所撰寫的「資訊法律-導論」)。大多是提及實體法的部分,例如著作權法、個資法、民法、消保法、刑法等,但較少有介紹或論及其相關的程序法,也就是如何採集數位證據的
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
資訊瘦身,拎回從指縫中逃走的時間。
在現今數位時代,網路安全已成為企業和個人必須面對的首要挑戰。隨著網路犯罪活動的日益猖獗,如何有效地保護敏感資訊並確保網絡環境的安全,成為每個組織和個人不可忽視的重要課題。本文將帶你了解如何利用先進的監控軟體來提升資訊安全,為您提供全面的解決方案。
Thumbnail
不論你是對未來的職涯、學業感到迷惘無助,或是雖然有了明確方向但還是想要獲得更多、看得更遠,我相信點進這篇文章的你,就是資訊種子的有緣人。我將分享自身經驗,告訴你為何資訊種子是大學生一定要好好把握的大好機會,以及我是如何加入資訊種子、在裡頭學習成長、到現在發芽茁壯。
Thumbnail
發現RPA技術的無限潛力!了解如何透過Robotic Process Automation(RPA)實現自動化,克服企業勞動力短缺的挑戰。我們分享RPA的優勢、限制以及選擇最適合您企業的軟體的關鍵評估指標。結合AI技術,為您的業務帶來效率和質量的提升。不要錯過這個關於RPA未來發展趨勢的深入指南!
PS Photoshop 之外的影像編輯軟體簡介
Thumbnail
pic from pexels 插播一下我最近發生的事,可能有別於之前普遍走勵志和鼓勵的路線,這次要寫的是比較灰暗一點的經驗。 不過我想,這不就是人生的一部分嗎?身為存活在這一個被制定好許多遊戲規則,名為「社會」的環境下,我們究竟該如何保護好自己? 不去為了利益傷害他人,也不要被他人所傷害。 先來
Thumbnail
Lark對很多人來說,可能是完全沒有聽過的東西,這個協作軟體在大陸的名稱是「飛書」,而國際板的名稱則是「Lark」 很久沒寫過這一類的分享文,一腳跌進各種坑裡,真的爬不出來呢(;´༎ຶ
Thumbnail
看盤軟體有相當豐富的資訊 包含常用的技術指標,KD、MACD 等等  還有籌碼指標,包含外資、投信、融資、融券等資訊  還有主力指標,包含主力進出、大戶持股,散戶持股等資訊  還有許許多多的指標   工欲善其事,必先利其器  本集影片就是要來手把手教學,將這些指標設定在頁面上 很 適合新手的一部影片
Thumbnail
延續上一篇的介紹說明,我們接著來看看數位鑑識的處理吧!
Thumbnail
所謂的「資訊法」,可說是只要與網路或數位科技相關的法律,就屬於它的範疇(請參閱本人先前所撰寫的「資訊法律-導論」)。大多是提及實體法的部分,例如著作權法、個資法、民法、消保法、刑法等,但較少有介紹或論及其相關的程序法,也就是如何採集數位證據的