分布式和集群的概念

2021-09-23 18:42:00 字數 2753 閱讀 1081

1.分布式入門:

分布式中涉及到的技術模組

2.3. 分布式鎖的三種實現方式

(1)redis的set方法,setnx的話還要設定過期時間,不能原子執行,在redis基礎中記錄

(2)基於資料庫的鎖

i.設計的表有唯一鍵

create

table

`distributed_lock`

(`thread_name`

varchar

(300

)not

null

,`method_name`

varchar

(300

)not

null

comment

'被鎖定的方法名,唯一'

,`id`

int(11)

notnull

auto_increment

,primary

key(

`id`),

unique

key`index_method_name`

(`method_name`

)using

btree

)engine

=innodb

auto_increment

=21562

default

charset

=gbk;

ii.對於死鎖的問題,可以設定定時任務,自動清理鎖記錄,此處沒有記錄

eg:

/**

* 加鎖

** @param method,方法為ip+埠+全路徑名+方法名

* @param thread

* @return

*/public

boolean

lock

(string method, string thread)

/** * 加鎖的資料庫操作

* @param method

* @param thread

* @return

*/public

boolean

trylock

(string method, string thread)

加鎖成功**********"

,thread);}

catch

(exception e)

被其他執行緒占用,當前執行緒{}無法獲取"

,method,thread)

; isfailure =

true;}

}return

true;}

/** * 釋放鎖

* @param method

* @param thread

* @return

*/public

boolean

releaslock

(string method,string thread)

鎖釋放成功**********="

,thread);}

catch

(exception e)

釋放失敗,釋放鎖的執行緒為{}"

,method,thread)

; isfailure =

true;}

}return

true;}

/** * 判斷當前執行緒是否已經擁有了當前方法的鎖,解決重入的問題

* @param method

* @param thread

* @return

*/private

boolean

currentthreadisowner

(string method,string thread)

使用示例:

sqllock.

lock

(util.

getmethodname

(request)

,util.

getthreadname

(request));

//重入鎖

sqllock.

lock

(util.

getmethodname

(request)

,util.

getthreadname

(request));

operations.

update()

;//執行業務操作

sqllock.

releaslock

(util.

getmethodname

(request)

,util.

getthreadname

(request)

);

(3)zookeeper,待研究

(4)參考分布式鎖的基本要求

鎖的本質,只要能被多程序共享,且互斥就可以用於鎖

1.排他性,(redis的setnx)排他

2.不會發生死鎖(redis 的expire可以設定鎖的過期時間,一段時間不釋放則過期)

手寫的分布式鎖以及用多執行緒測試

3.容錯性(暫不理解)

4.加鎖和釋放鎖為統一程序(設定執行緒的名稱為value,判斷value跟當前執行緒是否相同)

5.可重入性

分布式和集群

1 小飯店原來只有乙個廚師,切菜洗菜備料炒菜全乾。後來客人多了,廚房乙個廚師忙不過來,又請了個廚師,兩個廚師都能炒一樣的菜,這兩個廚師的關係是集群。為了讓廚師專心炒菜,把菜做到極致,又請了個配菜師負責切菜,備菜,備料,廚師和配菜師的關係是分布式,乙個配菜師也忙不過來了,又請了個配菜師,兩個配菜師關係...

分布式和集群

集群可以理解為分布式的子集。不管是分布式還是集群,有以下幾點需要注意 高效能 指可以充分利用系統的所提供的能力。高可用 即相當於乙個節點宕機,有其他節點可以提供相同的服務,給予外界的感覺為系統或者應用一直可用的感覺。需要著重理解 共享磁碟 概念。我們可以想象下,我們的系統是乙個集群或者分布式的,那麼...

分布式和集群

小飯店原來只有乙個廚師,切菜洗菜備料炒菜全乾。後來客人多了,廚房乙個廚師忙不過來,又請了個廚師,兩個廚師都能炒一樣的菜,兩個廚師的關係是集群。為了讓廚師專心炒菜,把菜做到極致,再請了個配菜師負責切菜,備菜,備料 廚師和配菜師的關係是分布式。乙個配菜師也忙不過來了,又請了個配菜師,兩個配菜師關係是集群...