Allahu Akbar - Marhaban Salahhudin -
DO NOT COPY - GOD WILLS IT
NGÂN HÀNG
CÁC HỆ THỐNG PHÂN TÁNPTIT
1. Giải thuật Cristian
Giả sử trong hệ phân tán có một máy chủ thời gian gọi là Time server
và chúng ta sẽ tiến hành đồng bộ các máy khác với máy này như hình
sau:
 Client A gửi yêu cầu đến Time Server và thời gian đánh dấu đồng hồ cục bộ của A
là T1.
 Server B nhận được yêu cầu đồng bộ của A tại thời điểm T2, và ghi lại thời điểm
nhận là T2 theo đồng hồ của B.
 Đến thời điểm T3 theo đồng hồ của B, nó gửi cho A nhãn thời gian là T3 để A đặt
lại thời gian là T3 và sẽ giử kèm theo cả T1 và T2.
 Nhưng do độ trễ của mạng khi trả lời nên tại thời điểm T4 tính theo đồng hồ của
A nó mới nhận được phản hồi của B.
Allahu Akbar - Marhaban Salahhudin -
DO NOT COPY - GOD WILLS IT
 Bây giờ A có thông tin cả T1, T2, T3 và T4.
Trong hình vẽ mọi người sẽ thấy có 1 công thức. Đó là công thức
tính độ lệnh thời gian θ. Giá trị này có thể âm hoặc dương
 Nếu θ > 0: thời gian Client tăng lên θ giây.
 Nếu θ < 0: thời gian Client chậm hơn θ giây.
2. Nhãn thời gian Lamport
Xét định nghĩa mối quan hệ “xảy ra trước” (→)
Khi có a→ b :
 a xảy ra trước b thì tất cả các tiến trình trong hệ phân tán thỏa thuận sự kiện a
xảy ra trước rồi đến sự kiện b.
 Trong đó a và b là hai sự kiện của cùng một tiến trình.
 Nếu a xảy ra trước b thì a→b là đúng.
 Nếu a là sự kiện bản tin được gửi bởi một tiến trình nào đó và b là sự kiện bản tin
đó được nhận bởi một tiến trình khác thì quan hệ a→ b là đúng.
 Quan hệ xảy ra trước có tính bắc cầu: a→ b, b→c thì a→c.
Nhãn thời gian
Cập nhật bộ đếm Ci cho tiến trình Pi
 (1) Trước khi thực thi sự kiên Pi thực thi Ci ←Ci+1
 (2) Khi tiến trình Pi gửi 1 thông điệp m cho Pj, nó sẽ set timestamp ts(m) băng Ci
sau khi đã thực hiện ở bước trước
 (3) Khi nhận được thông điệp m, tiến trình Pj điều chỉnh bộ đếm cục bộ của chính
nó là Cj ← max {Cj, ts(m)}. Sau đó nó sẽ thực hiện bước (1) và gửi thông điệp đến
ứng dụng.
3. Đồng hồ vector
 Giải thuật đưa ra một vetor clocks VC(a) gán cho sự kiện a có thuộc tính là
o nếu VC(a) < VC(b) thì sự kiện a là nguyên nhân của b.
 Trong vector clock mỗi tiến trình Pi lưu giữ một VCi với giá trị N (các tiến trình
khác nhau thì N khác nhau)
Allahu Akbar - Marhaban Salahhudin -
DO NOT COPY - GOD WILLS IT
 VCi[i] là số các sự kiện đã xảy ra tại Pi
o Nếu VCi[j] = k nghĩa là Pi biết đã có k sự kiện đã xẩy ra tại Pj
 Yêu cầu là mỗi khi có sự kiện mới xảy ra ở tiến trình Pi thì phải tăng VCi[i] và phải
đảm bảo vector này được gửi cùng thông điệp suốt trong quá trình.
 Từ đó bên nhận sẽ biết được đã có bao nhiêu sự kiện xảy ra tại Pi .
 Quan trọng hơn phía nhận sẽ báo cho biết là đã có bao nhiều sự kiện ở các tiến
trình khác đã xảy ra trước khi Pi gửi thông điệp m.
Cách cập nhật vector:
 Thiết lập VCi[j] =0 với mọi j,i
 Sự kiện xảy ra ở Pi là nguyên nhân tăng VCi[i]
 Pi gắn một timestamp ts(m)=VCi vào mọi thông điệp gửi đi
 Khi Pi nhân được một thông điệp có ts(m) nó sẽ thiết lập VCi[j]=Max{Vi[j] ,ts(m)[j]}
và tăng VCi[i]
4. GIẢI THUẬT TẬP TRUNG
Giả sử mỗi tiến trình có một số ID duy nhất. Tiến trình được bầu chọn
làm điều phối (Coordinator) là tiến trình có số ID cao nhất.
 Khi một tiến trình nào đó cần vào vùng giới hạn nó sẽ gửi một thông điệp xin cấp
quyền .
 Nếu không có một tiến trình nào đang trong vùng giới hạn thì tiến trình điều
phối sẽ gửi phản hồi cho phép.
 Còn nếu có một tiến trình khác đang ở trong vùn tới hạn rồi thì tiến trình điều
phối sẽ gửi thông điệp từ chối và đưa tiến trình này vào hàng đợi cho đến khi
không có tiến trình nào trong vùng tới hạn nữa.
 Khi một tiến trình rời khỏi vùng giới hạn nó sẽ gửi một thông điệp đến tiến trình
điều phối thông báo trả lại quyền truy cập.
Allahu Akbar - Marhaban Salahhudin -
DO NOT COPY - GOD WILLS IT
 Lúc này tiến trình điều phối sẽ gửi quyền truy cập cho tiến trình đầu tiên trong
hàng đợi truy cập.
Ưu điểm:
 Giải thuật đảm bảo sự loại trừ lẫn nhau: bộ điều phối chỉ để một tiến trình truy
cập tài nguyên trong 1 thời điểm.
 Không có tiến trình nào phải đượi vô thời hạn.
 Sự sắp xếp này dễ thực thi và chỉ yêu cầu 3 thông điệp cho mỗi lần sử dụng tài
nguyên gồm: yêu cầu truy nhập tài nguyên, sự cho phép và giải phóng tài nguyên.
Nhược điểm:
 Nếu tiến trình điều phối bị hỏng thì hệ thống sẽ sụp đổ .Vì nếu một tiến trình
đang trong trạng thái Block nó sẽ không thể biết được tiến trình điều phối có bị
DEAD hay không .
 Trong một hệ thống lớn nếu chỉ có một tiến trình điều phối sẽ xuất hiện hiện
tượng thắt cổ chai
5. GIẢI THUẬT PHÂN TÁN
 Khi một tiến trình muốn truy cập vào một tài nguyên chia sẻ, nó tạo một thông
điệp bao gồm tên của tài nguyên, số xử lý của nó và thời gian (theo logic) hiện tại.
 Sau đó nó gửi thông điệp này tới các tiến trình khác và chính nó.
 Việc gửi các thông điệp đi là đáng tin cậy.
 Các tiến trình khác sau khi nhận được thông điệp này sẽ xảy ra ba tình huống:
 (a) : Nếu bên nhận không ở trong tài nguyên chia sẻ và cũng không muốn vào
vùng tài nguyên chia sẻ thì nó sẽ gửi thông điệp OK cho bên gửi.
 (b): Nếu bên nhận đang ở trong tài nguyên chia sẻ thay vì trả lời nó sẽ cho vào
hàng đợi yêu cầu này.
 (c): Nếu bên nhận cũng muốn truy cập tài nguyên chia sẻ nhưng chưa được phép,
nó sẽ so sánh nhãn thời gian (timestamp) của thông điệp gửi đến với timestamp
Allahu Akbar - Marhaban Salahhudin -
DO NOT COPY - GOD WILLS IT
chứa trong thông điệp mà nó gửi đi cho những tiến trình khác. Nếu thông điệp
đến có timestamp thấp hơn, bên nhận sẽ gửi thông điệp OK, nếu không thì nó
không gửi gì cả.
Sau khi gửi các gói tin yêu cầu cho phép, một tiến trình đợi đến khi
các tiến trình khác cho phép. Ngay sau khi các tiến trình cho phép,
tiến trình này được truy cập tài nguyên. Khi nó kết thúc, nó gửi 1
thông điệp OK đến tất cả các tiến trình khác ở trong hàng đợi của nó
và xóa nội dung hàng đợi đó.
Ví dụ: Ở hình vẽ trên:
 Tiến trình 0 gửi 1 yêu cầu với timestamp = 8 đến tất cả các tiến trình.
 Trong cùng thời điểm đó, tiến trình 2 cũng làm tương tự với timestamp = 12.
 Tiến trình 1 không muốn truy cập tài nguyên, vì thế nó gửi OK đến cả 2 bên gửi.
 Cả tiến trình 0 và 2 nhận ra sự xung đột và cùng so sánh timestamp.
 Tiến trình 2 thua do có timestamp lớn hơn và nó phải gửi thông điệp OK đi.
 Tiến trình 0 truy cập vào tài nguyên và xếp tiến trình 2 vào hàng đợi của nó để xử
lý và truy cập tài nguyên.
 Sau khi kết thúc, nó loại bỏ yêu cầu từ tiến trình 2 khỏi queue của nó và gửi
thông điệp OK đến tiến trình 2 và cho phép nó thực hiện.
Nhược điểm:
 Khi tổng số lượng tiến trình trong hệ thống là n thì yêu cầu 2(n-1) thông điệp cho
mỗi thực thể .
 Nếu bất cứ 1 tiến trình nào lỗi, nó sẽ gây lỗi thông điệp phản hồi yêu cầu và
khiến toàn bộ các tiến trình tiến vào vùng giới hạn
 Thuật toán này chậm, phức tạp và chi phí đắt và ít mạnh mẽ như thuật toán tập
trung
6. GIẢI THUẬT MẠCH VÒNG
Giả sử tất cả các tiến trình được sắp xếp trên một vòng tròn logic, các
tiến trình đều được đánh số và đều biết đến các tiến trình cạnh nó.
Allahu Akbar - Marhaban Salahhudin -
DO NOT COPY - GOD WILLS IT
 Bắt đầu quá trình truyền, tiến trình 0 sẽ được trao một thẻ bài.
 Thẻ bài này có thể lưu hành xung quanh vòng tròn logic.
 Nó được chuyển từ tiến trình k đến tiến trình (k+1) bằng cách truyền thông điệp
điểm – điểm.
 Khi một tiến trình giành được thẻ bài từ tiến trình bên cạnh, nó sẽ kiểm tra xem
có thể vào vùng tới hạn hay không. Nếu không có tiến trình khác trong vùng tới
hạn nó sẽ vào vùng tới hạn.
 Sau khi hoàn thành phần việc của mình nó sẽ nhả thẻ bài ra và thẻ bài có thể di
chuyển tự do trong vòng tròn.
 Nếu 1 tiến trình muốn vào vùng tới hạn thì nó sẽ giữ lấy thẻ bài, nếu không nó sẽ
để cho thẻ bài truyền qua.
Nhược điểm:
 Vấn đề lớn nhất trong thuật toán này là thẻ bài có thẻ bị mất. Khi đó chúng ta
phải sinh lại thẻ bài vì việc dò tìm lại thẻ bài là rất khó.
7. GIẢI THUẬT BẦU CHỌN
 Khi tiến trình điều phối gặp lỗi thì sẽ phải có quá trình bầu chọn để chọn ra một
tiến trình khác làm điều phối thay cho nó.
 Có hai giải thuật bầu chọn hay được sử dụng là:
o Giải thuật áp đảo (Bully Algorithm)
o Giải thuật vòng (Ring Algorithm)
4.1. BẦU CHỌN ÉP BUỘC
Giả sử:
 Mỗi một tiến trình đều có một ID duy nhất.
Allahu Akbar - Marhaban Salahhudin -
DO NOT COPY - GOD WILLS IT
 Tất cả các tiến trình khác đều có thể biết được số ID và địa chỉ của mỗi tiến trình
trong hệ thống.
 Chọn một tiến trình có ID cao nhất làm khóa.
 Tiến trình sẽ khởi động việc bầu chọn nếu như nó khôi phục lại sau quá trình xảy
ra lỗi hoặc tiến trình điều phối bị trục trặc.
Các bước của giải thuật:
 P gửi thông điệp Election đến tất cả các tiến trình có ID cao hơn
 Nếu không có tiến trình nào phản hồi thì P sẽ trở thành tiến trình điều phối
 Nếu có một tiến trình có ID cao hơn phản hồi thì nó sẽ đảm nhiệm vai trò điều
phối.
8 GIẢI THUẬT
Giả sử:
 Các tiến trình có một ID duy nhất và được sắp xếp trên 1 vòng tròn Logic.
Allahu Akbar - Marhaban Salahhudin -
DO NOT COPY - GOD WILLS IT
 Mỗi một tiến trình có thể nhận biết được tiến trình bên cạnh mình.
Các bước của giải thuật:
 Một tiến trình bắt đầu gửi thông điệp Election tới các nút còn tồn tại gần nhất,
quá trình gửi theo 1 hướng nhất định.
 Nó sẽ thăm dò liên tiếp trên vòng cho đến khi tìm được 1 nút còn tồn tại.
 Mỗi một tiến trình sẽ gắn ID của mình vào thông điệp gửi.
 Cuối cùng sẽ chọn ra 1 tiến trình có ID cao nhất trong số các tiến trình còn hoạt
động và gửi thông điệp điều phối cho tiến trình đó.
Allahu Akbar - Marhaban Salahhudin -
DO NOT COPY - GOD WILLS IT
Allahu Akbar - Marhaban Salahhudin -
DO NOT COPY - GOD WILLS IT
Allahu Akbar - Marhaban Salahhudin -
DO NOT COPY - GOD WILLS IT
Allahu Akbar - Marhaban Salahhudin -
DO NOT COPY - GOD WILLS IT
Allahu Akbar - Marhaban Salahhudin -
DO NOT COPY - GOD WILLS IT
DO NOT COPY - GOD WILLS IT

Ngân hàng hệ thống phân tán PTIT

  • 1.
    Allahu Akbar -Marhaban Salahhudin - DO NOT COPY - GOD WILLS IT NGÂN HÀNG CÁC HỆ THỐNG PHÂN TÁNPTIT 1. Giải thuật Cristian Giả sử trong hệ phân tán có một máy chủ thời gian gọi là Time server và chúng ta sẽ tiến hành đồng bộ các máy khác với máy này như hình sau:  Client A gửi yêu cầu đến Time Server và thời gian đánh dấu đồng hồ cục bộ của A là T1.  Server B nhận được yêu cầu đồng bộ của A tại thời điểm T2, và ghi lại thời điểm nhận là T2 theo đồng hồ của B.  Đến thời điểm T3 theo đồng hồ của B, nó gửi cho A nhãn thời gian là T3 để A đặt lại thời gian là T3 và sẽ giử kèm theo cả T1 và T2.  Nhưng do độ trễ của mạng khi trả lời nên tại thời điểm T4 tính theo đồng hồ của A nó mới nhận được phản hồi của B.
  • 2.
    Allahu Akbar -Marhaban Salahhudin - DO NOT COPY - GOD WILLS IT  Bây giờ A có thông tin cả T1, T2, T3 và T4. Trong hình vẽ mọi người sẽ thấy có 1 công thức. Đó là công thức tính độ lệnh thời gian θ. Giá trị này có thể âm hoặc dương  Nếu θ > 0: thời gian Client tăng lên θ giây.  Nếu θ < 0: thời gian Client chậm hơn θ giây. 2. Nhãn thời gian Lamport Xét định nghĩa mối quan hệ “xảy ra trước” (→) Khi có a→ b :  a xảy ra trước b thì tất cả các tiến trình trong hệ phân tán thỏa thuận sự kiện a xảy ra trước rồi đến sự kiện b.  Trong đó a và b là hai sự kiện của cùng một tiến trình.  Nếu a xảy ra trước b thì a→b là đúng.  Nếu a là sự kiện bản tin được gửi bởi một tiến trình nào đó và b là sự kiện bản tin đó được nhận bởi một tiến trình khác thì quan hệ a→ b là đúng.  Quan hệ xảy ra trước có tính bắc cầu: a→ b, b→c thì a→c. Nhãn thời gian Cập nhật bộ đếm Ci cho tiến trình Pi  (1) Trước khi thực thi sự kiên Pi thực thi Ci ←Ci+1  (2) Khi tiến trình Pi gửi 1 thông điệp m cho Pj, nó sẽ set timestamp ts(m) băng Ci sau khi đã thực hiện ở bước trước  (3) Khi nhận được thông điệp m, tiến trình Pj điều chỉnh bộ đếm cục bộ của chính nó là Cj ← max {Cj, ts(m)}. Sau đó nó sẽ thực hiện bước (1) và gửi thông điệp đến ứng dụng. 3. Đồng hồ vector  Giải thuật đưa ra một vetor clocks VC(a) gán cho sự kiện a có thuộc tính là o nếu VC(a) < VC(b) thì sự kiện a là nguyên nhân của b.  Trong vector clock mỗi tiến trình Pi lưu giữ một VCi với giá trị N (các tiến trình khác nhau thì N khác nhau)
  • 3.
    Allahu Akbar -Marhaban Salahhudin - DO NOT COPY - GOD WILLS IT  VCi[i] là số các sự kiện đã xảy ra tại Pi o Nếu VCi[j] = k nghĩa là Pi biết đã có k sự kiện đã xẩy ra tại Pj  Yêu cầu là mỗi khi có sự kiện mới xảy ra ở tiến trình Pi thì phải tăng VCi[i] và phải đảm bảo vector này được gửi cùng thông điệp suốt trong quá trình.  Từ đó bên nhận sẽ biết được đã có bao nhiêu sự kiện xảy ra tại Pi .  Quan trọng hơn phía nhận sẽ báo cho biết là đã có bao nhiều sự kiện ở các tiến trình khác đã xảy ra trước khi Pi gửi thông điệp m. Cách cập nhật vector:  Thiết lập VCi[j] =0 với mọi j,i  Sự kiện xảy ra ở Pi là nguyên nhân tăng VCi[i]  Pi gắn một timestamp ts(m)=VCi vào mọi thông điệp gửi đi  Khi Pi nhân được một thông điệp có ts(m) nó sẽ thiết lập VCi[j]=Max{Vi[j] ,ts(m)[j]} và tăng VCi[i] 4. GIẢI THUẬT TẬP TRUNG Giả sử mỗi tiến trình có một số ID duy nhất. Tiến trình được bầu chọn làm điều phối (Coordinator) là tiến trình có số ID cao nhất.  Khi một tiến trình nào đó cần vào vùng giới hạn nó sẽ gửi một thông điệp xin cấp quyền .  Nếu không có một tiến trình nào đang trong vùng giới hạn thì tiến trình điều phối sẽ gửi phản hồi cho phép.  Còn nếu có một tiến trình khác đang ở trong vùn tới hạn rồi thì tiến trình điều phối sẽ gửi thông điệp từ chối và đưa tiến trình này vào hàng đợi cho đến khi không có tiến trình nào trong vùng tới hạn nữa.  Khi một tiến trình rời khỏi vùng giới hạn nó sẽ gửi một thông điệp đến tiến trình điều phối thông báo trả lại quyền truy cập.
  • 4.
    Allahu Akbar -Marhaban Salahhudin - DO NOT COPY - GOD WILLS IT  Lúc này tiến trình điều phối sẽ gửi quyền truy cập cho tiến trình đầu tiên trong hàng đợi truy cập. Ưu điểm:  Giải thuật đảm bảo sự loại trừ lẫn nhau: bộ điều phối chỉ để một tiến trình truy cập tài nguyên trong 1 thời điểm.  Không có tiến trình nào phải đượi vô thời hạn.  Sự sắp xếp này dễ thực thi và chỉ yêu cầu 3 thông điệp cho mỗi lần sử dụng tài nguyên gồm: yêu cầu truy nhập tài nguyên, sự cho phép và giải phóng tài nguyên. Nhược điểm:  Nếu tiến trình điều phối bị hỏng thì hệ thống sẽ sụp đổ .Vì nếu một tiến trình đang trong trạng thái Block nó sẽ không thể biết được tiến trình điều phối có bị DEAD hay không .  Trong một hệ thống lớn nếu chỉ có một tiến trình điều phối sẽ xuất hiện hiện tượng thắt cổ chai 5. GIẢI THUẬT PHÂN TÁN  Khi một tiến trình muốn truy cập vào một tài nguyên chia sẻ, nó tạo một thông điệp bao gồm tên của tài nguyên, số xử lý của nó và thời gian (theo logic) hiện tại.  Sau đó nó gửi thông điệp này tới các tiến trình khác và chính nó.  Việc gửi các thông điệp đi là đáng tin cậy.  Các tiến trình khác sau khi nhận được thông điệp này sẽ xảy ra ba tình huống:  (a) : Nếu bên nhận không ở trong tài nguyên chia sẻ và cũng không muốn vào vùng tài nguyên chia sẻ thì nó sẽ gửi thông điệp OK cho bên gửi.  (b): Nếu bên nhận đang ở trong tài nguyên chia sẻ thay vì trả lời nó sẽ cho vào hàng đợi yêu cầu này.  (c): Nếu bên nhận cũng muốn truy cập tài nguyên chia sẻ nhưng chưa được phép, nó sẽ so sánh nhãn thời gian (timestamp) của thông điệp gửi đến với timestamp
  • 5.
    Allahu Akbar -Marhaban Salahhudin - DO NOT COPY - GOD WILLS IT chứa trong thông điệp mà nó gửi đi cho những tiến trình khác. Nếu thông điệp đến có timestamp thấp hơn, bên nhận sẽ gửi thông điệp OK, nếu không thì nó không gửi gì cả. Sau khi gửi các gói tin yêu cầu cho phép, một tiến trình đợi đến khi các tiến trình khác cho phép. Ngay sau khi các tiến trình cho phép, tiến trình này được truy cập tài nguyên. Khi nó kết thúc, nó gửi 1 thông điệp OK đến tất cả các tiến trình khác ở trong hàng đợi của nó và xóa nội dung hàng đợi đó. Ví dụ: Ở hình vẽ trên:  Tiến trình 0 gửi 1 yêu cầu với timestamp = 8 đến tất cả các tiến trình.  Trong cùng thời điểm đó, tiến trình 2 cũng làm tương tự với timestamp = 12.  Tiến trình 1 không muốn truy cập tài nguyên, vì thế nó gửi OK đến cả 2 bên gửi.  Cả tiến trình 0 và 2 nhận ra sự xung đột và cùng so sánh timestamp.  Tiến trình 2 thua do có timestamp lớn hơn và nó phải gửi thông điệp OK đi.  Tiến trình 0 truy cập vào tài nguyên và xếp tiến trình 2 vào hàng đợi của nó để xử lý và truy cập tài nguyên.  Sau khi kết thúc, nó loại bỏ yêu cầu từ tiến trình 2 khỏi queue của nó và gửi thông điệp OK đến tiến trình 2 và cho phép nó thực hiện. Nhược điểm:  Khi tổng số lượng tiến trình trong hệ thống là n thì yêu cầu 2(n-1) thông điệp cho mỗi thực thể .  Nếu bất cứ 1 tiến trình nào lỗi, nó sẽ gây lỗi thông điệp phản hồi yêu cầu và khiến toàn bộ các tiến trình tiến vào vùng giới hạn  Thuật toán này chậm, phức tạp và chi phí đắt và ít mạnh mẽ như thuật toán tập trung 6. GIẢI THUẬT MẠCH VÒNG Giả sử tất cả các tiến trình được sắp xếp trên một vòng tròn logic, các tiến trình đều được đánh số và đều biết đến các tiến trình cạnh nó.
  • 6.
    Allahu Akbar -Marhaban Salahhudin - DO NOT COPY - GOD WILLS IT  Bắt đầu quá trình truyền, tiến trình 0 sẽ được trao một thẻ bài.  Thẻ bài này có thể lưu hành xung quanh vòng tròn logic.  Nó được chuyển từ tiến trình k đến tiến trình (k+1) bằng cách truyền thông điệp điểm – điểm.  Khi một tiến trình giành được thẻ bài từ tiến trình bên cạnh, nó sẽ kiểm tra xem có thể vào vùng tới hạn hay không. Nếu không có tiến trình khác trong vùng tới hạn nó sẽ vào vùng tới hạn.  Sau khi hoàn thành phần việc của mình nó sẽ nhả thẻ bài ra và thẻ bài có thể di chuyển tự do trong vòng tròn.  Nếu 1 tiến trình muốn vào vùng tới hạn thì nó sẽ giữ lấy thẻ bài, nếu không nó sẽ để cho thẻ bài truyền qua. Nhược điểm:  Vấn đề lớn nhất trong thuật toán này là thẻ bài có thẻ bị mất. Khi đó chúng ta phải sinh lại thẻ bài vì việc dò tìm lại thẻ bài là rất khó. 7. GIẢI THUẬT BẦU CHỌN  Khi tiến trình điều phối gặp lỗi thì sẽ phải có quá trình bầu chọn để chọn ra một tiến trình khác làm điều phối thay cho nó.  Có hai giải thuật bầu chọn hay được sử dụng là: o Giải thuật áp đảo (Bully Algorithm) o Giải thuật vòng (Ring Algorithm) 4.1. BẦU CHỌN ÉP BUỘC Giả sử:  Mỗi một tiến trình đều có một ID duy nhất.
  • 7.
    Allahu Akbar -Marhaban Salahhudin - DO NOT COPY - GOD WILLS IT  Tất cả các tiến trình khác đều có thể biết được số ID và địa chỉ của mỗi tiến trình trong hệ thống.  Chọn một tiến trình có ID cao nhất làm khóa.  Tiến trình sẽ khởi động việc bầu chọn nếu như nó khôi phục lại sau quá trình xảy ra lỗi hoặc tiến trình điều phối bị trục trặc. Các bước của giải thuật:  P gửi thông điệp Election đến tất cả các tiến trình có ID cao hơn  Nếu không có tiến trình nào phản hồi thì P sẽ trở thành tiến trình điều phối  Nếu có một tiến trình có ID cao hơn phản hồi thì nó sẽ đảm nhiệm vai trò điều phối. 8 GIẢI THUẬT Giả sử:  Các tiến trình có một ID duy nhất và được sắp xếp trên 1 vòng tròn Logic.
  • 8.
    Allahu Akbar -Marhaban Salahhudin - DO NOT COPY - GOD WILLS IT  Mỗi một tiến trình có thể nhận biết được tiến trình bên cạnh mình. Các bước của giải thuật:  Một tiến trình bắt đầu gửi thông điệp Election tới các nút còn tồn tại gần nhất, quá trình gửi theo 1 hướng nhất định.  Nó sẽ thăm dò liên tiếp trên vòng cho đến khi tìm được 1 nút còn tồn tại.  Mỗi một tiến trình sẽ gắn ID của mình vào thông điệp gửi.  Cuối cùng sẽ chọn ra 1 tiến trình có ID cao nhất trong số các tiến trình còn hoạt động và gửi thông điệp điều phối cho tiến trình đó.
  • 9.
    Allahu Akbar -Marhaban Salahhudin - DO NOT COPY - GOD WILLS IT
  • 10.
    Allahu Akbar -Marhaban Salahhudin - DO NOT COPY - GOD WILLS IT
  • 11.
    Allahu Akbar -Marhaban Salahhudin - DO NOT COPY - GOD WILLS IT
  • 12.
    Allahu Akbar -Marhaban Salahhudin - DO NOT COPY - GOD WILLS IT
  • 13.
    Allahu Akbar -Marhaban Salahhudin - DO NOT COPY - GOD WILLS IT DO NOT COPY - GOD WILLS IT