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

更新 發佈閱讀 5 分鐘
vocus|新世代的創作平台

這次會分享關於「鎖」的主題除了工作上遇到這樣的情境之外,也發現到其實軟體技術大部分跟我們生活情境息息相關,覺得非常有趣,因此嘗試將艱澀難懂的技術化為淺顯易懂的圖文知識來幫助大家快速理解,除了應用在工作上,或許對於生活過程中遇到的一些問題也能得到一些啟發。

此篇章主要著重於觀念的分享,並不會深入探討實作的細節,相信只要觀念通了,對於技術實作的道路上一定會非常順暢,好吧!廢話不多說,趕快來介紹一下樂觀鎖與悲觀鎖的基本觀念。

情境

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

- 併發問題就應該用樂觀鎖啊!
- 最安全的併發正確性應該用悲觀鎖吧!
- Scale Out的服務怎麼保證正確呢?
- 啊!雙十節要到了,如何確保客戶的訂單與商品數量是正確的又能兼顧效能?

以上的問題都圍繞在效能、正確性, 而其中最關鍵的就是「鎖」, 雖然「鎖」難免會造成效能的下降, 但這點不足之處對於現階段的群集架構之下, 已經能夠透過橫向擴展的方式進行補足, 因此「鎖」的技術值得我們好好認識一番!

悲觀鎖(Pessimistic Lock) 😭

vocus|新世代的創作平台

就如同字面上的意思, 對任何的事物都很悲觀, 而這種情緒之下的處理方式就是盡量鎖住整個資源, 保證整體一致性之後再釋放, 雖然安全但效能下降程度非常的高。

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

優點

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

缺點

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

樂觀鎖(Optimistic Lock) 😀

vocus|新世代的創作平台

先做就對了, 有衝突再解決…。

一樣以餐廳為例, 這次就變成現場候位的狀況, 不採取預訂方式, 有位置再吃, 大不了下個時段再來, 這樣對於餐廳端來說, 資源閒置的狀況減少了, 每一桌吃完就服務下一桌, 以軟體技術語言的角度來說就是,先提交若「⚔️衝突」則下次提交。

上面有三個關鍵字分別是「先提交」、「衝突」、「下次提交」, 很暴力簡單的作法卻很有效, 最關鍵的就是「⚔️衝突」的偵測, 如何識別「⚔️衝突」就是相當重要的一環了。

其實偵測「⚔️衝突」的原理非常簡單, 通常最簡易的作法就是壓上一個版本號, 假若針對目標進行異動時, 發現版本號已經被異動了, 就視為「⚔️衝突」, 再更新資料到記憶體並重新進行一次操作即可。

優點

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

缺點

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

結語

「🔑 鎖」的概念非常的有趣, 結合到現實面也能夠藉此改善流程及效率, 大幅減少資源的浪費, 降低成本, 在雲端時代中, 軟體也漸趨複雜, 隨著無國界的發展, 一套優質的軟體勢必會服務來自世界各地的使用者, 然而當使用量倍增時, 也勢必面臨到橫向擴展與平行處理的技術, 但在這之間如何維持正確性與兼顧效能, 就取決於我們怎麼使用這把「🔑 鎖」囉。

除非有非常強烈的一致性需求才使用悲觀鎖, 否則一般的情境下樂觀鎖基本上都能夠通用。

每一項技術的背後都有其優缺點, 並非單一項就能通吃, 因此若我們能夠多認識一些技術背後的原理與優缺點, 相信遇到狀況時就能夠隨時因應變化, 端出最適用的技術應對, 如此一來才能夠打造出穩定可靠的系統軟體。

喜歡撰寫文章的你,不妨來了解一下:

Web3.0時代下為創作者、閱讀者打造的專屬共贏平台 — 為什麼要加入?

歡迎加入一起練習寫作,賺取知識,累積財富!

留言
avatar-img
阿Han的沙龍
319會員
334內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
阿Han的沙龍的其他內容
2024/09/25
使用docker compose來編排容器化程式非常的方便, 但隨著應用越來越複雜, 我們每個Service會有許多共同掛載的目錄、環境變數, 那這些在傳統的程式語言都能藉由繼承、覆寫的技巧來簡化程式碼, 但在YAML呢? 有沒有這樣的功能呢? 答案是有的, 也就是 anchors & ali
Thumbnail
2024/09/25
使用docker compose來編排容器化程式非常的方便, 但隨著應用越來越複雜, 我們每個Service會有許多共同掛載的目錄、環境變數, 那這些在傳統的程式語言都能藉由繼承、覆寫的技巧來簡化程式碼, 但在YAML呢? 有沒有這樣的功能呢? 答案是有的, 也就是 anchors & ali
Thumbnail
2023/09/07
上一篇我們為您帶來了「【資料交換格式 - YAML】YAML真的有比較好嗎? 與JSON相比又如何?應用場景…」,相信對於YAML與JSON這兩種資料交換格式已經相對的熟悉了吧,那這次我們介紹一個更新的資料交換格式TOML,從上一篇我們可以知道YAML相較於JSON之下帶來了許多的好處,也越來越多的
Thumbnail
2023/09/07
上一篇我們為您帶來了「【資料交換格式 - YAML】YAML真的有比較好嗎? 與JSON相比又如何?應用場景…」,相信對於YAML與JSON這兩種資料交換格式已經相對的熟悉了吧,那這次我們介紹一個更新的資料交換格式TOML,從上一篇我們可以知道YAML相較於JSON之下帶來了許多的好處,也越來越多的
Thumbnail
2023/08/27
我們在「」有稍微介紹了JSON格式, 也知曉JSON格式非常簡單暴力, 只要一對<key>與<value>就能成行, 對於工程人員來說已經比XML、文字檔…等傳統格式更加容易理解, 而且也具備一定的資料型態基礎, 但使用這麼久以來常常發現到想要對某個欄位註解時好像不太容易, 頂多就是多一個欄位叫做「
Thumbnail
2023/08/27
我們在「」有稍微介紹了JSON格式, 也知曉JSON格式非常簡單暴力, 只要一對<key>與<value>就能成行, 對於工程人員來說已經比XML、文字檔…等傳統格式更加容易理解, 而且也具備一定的資料型態基礎, 但使用這麼久以來常常發現到想要對某個欄位註解時好像不太容易, 頂多就是多一個欄位叫做「
Thumbnail
看更多
你可能也想看
Thumbnail
給人更多關心,關注他人的情緒和心理變化,才能夠懂得人心,贏得更多情誼、信任、認同和尊重,最終才能成就自我。
Thumbnail
給人更多關心,關注他人的情緒和心理變化,才能夠懂得人心,贏得更多情誼、信任、認同和尊重,最終才能成就自我。
Thumbnail
當時間變少之後,看戲反而變得更加重要——這是在成為母親之後,我第一次誠實地面對這一件事:我沒有那麼多的晚上,可以任性地留給自己了。看戲不再只是「今天有沒有空」,而是牽動整個週末的結構,誰應該照顧孩子,我該在什麼時間回到家,隔天還有沒有精神帶小孩⋯⋯於是,我不得不學會一件以前並不擅長的事:挑選。
Thumbnail
當時間變少之後,看戲反而變得更加重要——這是在成為母親之後,我第一次誠實地面對這一件事:我沒有那麼多的晚上,可以任性地留給自己了。看戲不再只是「今天有沒有空」,而是牽動整個週末的結構,誰應該照顧孩子,我該在什麼時間回到家,隔天還有沒有精神帶小孩⋯⋯於是,我不得不學會一件以前並不擅長的事:挑選。
Thumbnail
近幾年看到蠻多光怪陸離的開發鬼故事,也見識過各種奇醜無比的失事原因
Thumbnail
近幾年看到蠻多光怪陸離的開發鬼故事,也見識過各種奇醜無比的失事原因
Thumbnail
5 月,方格創作島正式開島。這是一趟 28 天的創作旅程。活動期間,每週都會有新的任務地圖與陪跑計畫,從最簡單的帳號使用、沙龍建立,到帶著你從一句話、一張照片開始,一步一步找到屬於自己的創作節奏。不需要長篇大論,不需要完美的文筆,只需要帶上你今天的日常,就可以出發。征服創作島,抱回靈感與大獎!
Thumbnail
5 月,方格創作島正式開島。這是一趟 28 天的創作旅程。活動期間,每週都會有新的任務地圖與陪跑計畫,從最簡單的帳號使用、沙龍建立,到帶著你從一句話、一張照片開始,一步一步找到屬於自己的創作節奏。不需要長篇大論,不需要完美的文筆,只需要帶上你今天的日常,就可以出發。征服創作島,抱回靈感與大獎!
Thumbnail
你好,歡迎閱讀《紫式書摘》。 我是王啟樺,目前在加州大學洛杉磯分校(UCLA)擔任統計機器學習方向的博士後研究員。 這篇文章是《紫式書摘》的第001篇文章,紀錄了我閱讀《李松蔚·心理學通識(年度日更)》中〈080|慢系統:哪些自動化的反應不靠譜?〉後,產生對「成功的關鍵因素:理性思考、持續學習與尋找
Thumbnail
你好,歡迎閱讀《紫式書摘》。 我是王啟樺,目前在加州大學洛杉磯分校(UCLA)擔任統計機器學習方向的博士後研究員。 這篇文章是《紫式書摘》的第001篇文章,紀錄了我閱讀《李松蔚·心理學通識(年度日更)》中〈080|慢系統:哪些自動化的反應不靠譜?〉後,產生對「成功的關鍵因素:理性思考、持續學習與尋找
Thumbnail
來一個振奮人心的,就是今天終於回復二級啦!​ ​ 我腦中迅速跳出所有想吃的餐廳,在我腦海中排排隊站好。​ ​也該安排實體課程場次,讓我見見那些疫情前就報名的許多學員。​ ​不過,可以預想得到的是,今天解封一定會有「報復性」行為出現。​
Thumbnail
來一個振奮人心的,就是今天終於回復二級啦!​ ​ 我腦中迅速跳出所有想吃的餐廳,在我腦海中排排隊站好。​ ​也該安排實體課程場次,讓我見見那些疫情前就報名的許多學員。​ ​不過,可以預想得到的是,今天解封一定會有「報復性」行為出現。​
Thumbnail
規則就是:考試的時候不要談戀愛、每堂課都要出席、我們要做個正向的人,諸如此類換個環境,就會變體的東西。
Thumbnail
規則就是:考試的時候不要談戀愛、每堂課都要出席、我們要做個正向的人,諸如此類換個環境,就會變體的東西。
Thumbnail
這次會分享關於「鎖」的主題除了工作上遇到這樣的情境之外,也發現到其實軟體技術大部分跟我們生活情境息息相關,覺得非常有趣,因此嘗試將艱澀難懂的技術化為淺顯易懂的圖文知識來幫助大家快速理解,除了應用在工作上,或許對於生活過程中遇到的一些問題也能得到一些啟發。 此篇章主要著重於觀念的分享,並不會深入探討實
Thumbnail
這次會分享關於「鎖」的主題除了工作上遇到這樣的情境之外,也發現到其實軟體技術大部分跟我們生活情境息息相關,覺得非常有趣,因此嘗試將艱澀難懂的技術化為淺顯易懂的圖文知識來幫助大家快速理解,除了應用在工作上,或許對於生活過程中遇到的一些問題也能得到一些啟發。 此篇章主要著重於觀念的分享,並不會深入探討實
Thumbnail
人與人之間,舒適的距離到底該怎麼界定或者維持? 交會之後,錯身朝迥異的方向前進頭也不回?或者並行一段時間、爾後各赴前程就好? 最穩定的,是平行線嗎? 但,有沒有可能,在看不見的方向、角度、維度,根本早就漸行漸遠,甚至,從來沒有靠近過?所有交會與平行,都只是單一介面的表象,或者想像? 俗稱的,冷了。
Thumbnail
人與人之間,舒適的距離到底該怎麼界定或者維持? 交會之後,錯身朝迥異的方向前進頭也不回?或者並行一段時間、爾後各赴前程就好? 最穩定的,是平行線嗎? 但,有沒有可能,在看不見的方向、角度、維度,根本早就漸行漸遠,甚至,從來沒有靠近過?所有交會與平行,都只是單一介面的表象,或者想像? 俗稱的,冷了。
Thumbnail
你內心的小劇場是怎麼來的?有6個演員聯手演出,你都認識嗎?
Thumbnail
你內心的小劇場是怎麼來的?有6個演員聯手演出,你都認識嗎?
Thumbnail
見諸參與鄧伯宸口述,鄧湘庭於〈那個大霧的時代〉記述父親回憶,鄧伯宸因故遭受牽連,而案件核心的三人,在鄧伯宸記憶裡:「成立了成大共產黨,他們製作了五星徽章,印刷共產黨宣言——刻鋼板的——他們收集中共空飄的傳單,以及中國共產黨中央委員會有關文化大革命決議文的英文打字稿,另外還有手槍子彈十發。」
Thumbnail
見諸參與鄧伯宸口述,鄧湘庭於〈那個大霧的時代〉記述父親回憶,鄧伯宸因故遭受牽連,而案件核心的三人,在鄧伯宸記憶裡:「成立了成大共產黨,他們製作了五星徽章,印刷共產黨宣言——刻鋼板的——他們收集中共空飄的傳單,以及中國共產黨中央委員會有關文化大革命決議文的英文打字稿,另外還有手槍子彈十發。」
Thumbnail
當代名導基里爾.賽勒布倫尼科夫身兼電影、劇場與歌劇導演,其作品流動著強烈的反叛與詩意。在俄烏戰爭爆發後,他持續以創作回應專制體制的壓迫。《傳奇:帕拉贊諾夫的十段殘篇》致敬蘇聯電影大師帕拉贊諾夫。本文作者透過媒介本質的分析,解構賽勒布倫尼科夫如何利用影劇雙棲的特質,在荒謬世道中尋找藝術的「生存之道」。
Thumbnail
當代名導基里爾.賽勒布倫尼科夫身兼電影、劇場與歌劇導演,其作品流動著強烈的反叛與詩意。在俄烏戰爭爆發後,他持續以創作回應專制體制的壓迫。《傳奇:帕拉贊諾夫的十段殘篇》致敬蘇聯電影大師帕拉贊諾夫。本文作者透過媒介本質的分析,解構賽勒布倫尼科夫如何利用影劇雙棲的特質,在荒謬世道中尋找藝術的「生存之道」。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News