You are on page 1of 32

Hệ thống Phân tán

Distributed Systems
II. Các vấn đề cơ bản
1. Giới thiệu
 Trong hệ phân tán, hay áp dụng
 Phân tán dữ liệu ở nhiều nút
 Nhân bản - quản lý các bản sao của dữ liệu (trên nhiều nút/máy tính)
 Tại sao nhân bản dữ liệu
 Nhân bản dữ liệu đem lại nhiều ưu điểm cho hệ phân tán. Một số động lực:
 cải thiện hiệu năng
 tính sẵn sàng
p - xác suất 1 nút gặp sự cố => n nút: tính sẵn sàng 1-p^n
 chịu lỗi fault tolerance
1. Giới thiệu

 Mô hình hệ thống
 Client: yc dịch vụ, dữ liệu
 Front-end (FE): giao tiếp
• tiếp nhận yc và trả kết quả
• giao tiếp với server/replica => client kh cần biết bên trong phía server - đảm bảo
tính trong suốt
 Server:
• phân hệ quản lý nhân bản Replica manager (RM)
• giả định replica manager duy trì bản sao có thể phục hồi (đảm bảo tính toàn vẹn) và
đầy đủ dữ liệu/đối tượng
1. Nhân bản và nhất quán - Giới thiệu
 Có thể phân thành 5 bước xử lý 1 yc
0/ client gửi yc => tới font end
1/ FE gửi yc tới 1 hay nhiều RM
+ có thể giao tiếp với 1 RM =>
đến lượt RM giao tiếp với các RM khác
+ có thể gửi thông điệp multicast tới nhiều RM
2/ Điều phối: RM chuẩn bị xử lý yêu cầu đảm bảo toàn vẹn
xem xét xử lý hay từ chối phục vụ yc
xem xét thứ tự yc so với các yc khác (FIFO, nhân quả-causal ordering, total ordering)
3/ Xử lý yc, đảm bảo khả năng kết thúc commit hoặc hủy abort
4/ Đồng thuận: đồng thuận về ảnh hưởng-kết quả của yc
5/ Trả kết quả: trả kết quả cho FE để trả lại client
2. Nhất quán lấy dữ liệu làm trung tâm
 Nhất quán lấy dữ liệu làm trung tâm
 kho dữ liệu: có thể đc lưu phân tán
 tiến trình truy cập kho dữ liệu, đọc và ghi
 khi đọc => mong muốn nhận đc giá trị phản ánh tác vụ ghi cuối cùng trên obj đó
 mô hình nhất quán: thỏa thuận giữa tiến trình và kho
 nếu tuân thủ các quy tắc => kho dữ liệu sẽ làm việc đúng
2. Nhất quán
 Nhất quán theo thứ tự thao tác
 biến x:
• Wi(x)a - tiến trình pi ghi giá trị a vào biến x
• Ri(x)b - tiến trình pi đọc x nhận được giá trị b
1. Nhất quán chặt
 Đọc x nhận được giá trị tương ứng giá trị tác vụ ghi gần nhất
 Sử dụng thời gian tuyệt đối thống nhất trên toàn hệ thống => để xác định tác vụ ghi
gần nhất => khó đáp ứng
2. Nhất quán
 Nhất quán theo thứ tự thao tác
 biến x:
• Wi(x)a - tiến trình pi ghi giá trị a vào biến x
• Ri(x)b - tiến trình pi đọc x nhận được giá trị b
2. Nhất quán tuần tự
 Tác vụ ghi trên x không nhất thiết được "thấy" ngay.
Nhưng nhiều tác vụ ghi (tuần tự) trên x đc thực hiện bởi các process sẽ được mọi
process "thấy" theo cùng thứ tự nào đó

 bảo toàn: không bảo toàn:


2. Nhất quán
 Nhất quán theo thứ tự thao tác
3. Nhất quán nhân quả
 Các tác vụ (ghi) có quan hệ nhân quả phải được bảo toàn - các tiến trình khác đều
"thấy" theo cùng thứ tự nhân quả. Tuy nhiên các sự kiện khác thì có thể không - các
tác vụ (ghi) của các tiến trình song song có thể được thấy theo thứ tự khác nhau

 bảo toàn: không bảo toàn:

đọc được a trc b, c a đọc đc trc b, nhưng ở P3: đọc được b trc a
2. Nhất quán
 Nhất quán theo thứ tự thao tác
4. Nhất quán FIFO
 Chỉ yêu cầu các tác vụ (ghi) bởi 1 tiến trình - được nhìn thấy nhất quán bởi các tiến
trình khác.
 Nhưng tác vụ bởi các tiến trình song song - được nhìn thấy theo thứ tự tùy ý

các cập nhật sau phải thấy b được cập


nhật trc c
* chú ý: xét trên cùng 1 tiến trình, nên a ko
có tác động
2. Nhất quán
 Nhất quán theo thứ tự thao tác
Nhất quán với dữ liệu truy cập chung - shared data được lưu chung ở 1 nơi, các tiến trình cùng
thao tác ghi
Giả định: trong vùng loại trừ - tiến trình chỉ thao tác với 1 replica
Cần quan tâm các khía cạnh:
Thời điểm đảm bảo nhất quán - đồng bộ cập nhật: có entry, release
Kiểm soát loại trừ , biến đồng bộ/lock
Tác vụ gốc: yêu cầu (acquire) lock, trả lại (release) lock
2. Nhất quán
 Nhất quán theo thứ tự thao tác
Nhất quán với dữ liệu truy cập chung - shared data
5. Nhất quán vào (entry consistency)
 Kiểm soát nhất quán có sử dụng loại trừ nhau
 Thời điểm đảm bảo nhất quán - khi bắt đầu vào vùng loại trừ
 Mỗi dữ liệu chia sẻ gắn với biến đồng bộ S semaphore
• S: có thông tin current owner - tiến trình nào đang độc chiếm (exclusive) S
 Tiến trình p:
• khi bắt đầu vào vùng loại trừ: phải chiếm được S - lệnh Acq(s) - acquire
tác vụ ghi: exclusive acquired, tác vụ đọc: shared acquire
• các tác vụ xử lý, ghi - được nhất quán ghi tại 1 td chỉ có 1 tác vụ cập nhật
• khi thực hiện xong: trả lại S - lệnh Rel(S) - release
 Các cập nhật được lan truyền
2. Nhất quán
 Nhất quán theo thứ tự thao tác
Nhất quán với dữ liệu truy cập chung - shared data
5. Nhất quán vào (entry consistency)
 Tiến trình P' muốn truy cập S => phải chờ S được giải phóng ~ tất cả các tác vụ cập
nhật/ghi kết thúc
2. Nhất quán
 Nhất quán theo thứ tự thao tác
Nhất quán với dữ liệu truy cập chung - shared data
6. Nhất quán ra (release consistency)
 Khác với nhất quán vào (mỗi đối tượng dữ liệu - acq(s) riêng), tiến trình P trước khi
vào vùng tới hạn => cần thông báo - lệnh acquire lock
và khi kết thúc => thông báo bằng lệnh release
 Trước khi thực hiện bất kỳ tác vụ đọc/ghi dữ liệu chung => phải kết thúc tất cả các
lệnh acquire trước đó
 Trước khi release: các tác vụ đọc ghi phải thực hiện xong
2. Nhất quán client làm trung tâm
 Nhất quán client làm trung tâm
 Môi trường
 thường là tác vụ đọc
 không có cập nhật đồng thời
 nói chung chấp nhận mức độ không nhất quán khá cao
 Mong muốn:
 eventualy consistency - nhất quán sau cùng
 với từng client - luôn nhất quán
2. Nhất quán client làm trung tâm
 Nhất quán sau cùng - eventualy
 Khi một dữ liệu có nhiều bản sao thì yêu cầu là
sau các thao tác cập nhật thì tất cả các
bản sao cuối cùng phải giống nhau
(có thể kh ngay lập tức)
 Cập nhật các bản sao
 thực hiện ngay=> trans duration dài
 thực hiện sau
2. Nhất quán client làm trung tâm
 Nhất quán đọc tăng dần (monotonic read)
 Đảm bảo nếu một tiến trình Pi thực hiện thao tác đọc trên một mục dữ liệu x thì
phải đảm bảo các thao tác đọc x sau đó (cùng bởi Pi) phải có cùng một kết quả
hay kết quả mới hơn.
=> khi một máy trạm thực hiện một thao tác đọc trên một bản sao (L1) rồi tiếp theo lại
đọc trên một bản sao khác (L2) thì bản sao thứ hai kia ít nhất cũng phải được ghi giống
với bản sao đầu tiên, hoặc mới hơn

L1: local copy 1
L2: local copy 2

WS: write set


2. Nhất quán client làm trung tâm
 Nhất quán ghi tăng dần (monotonic write)
 Nếu một tiến trình Pi ghi trên một mục dữ liệu x thì phải đảm bảo tác vụ ghi này
phải kết thúc trước khi có các tác vụ ghi x sau đó (cùng bởi Pi)
=> dẫn đến: tác vụ ghi trên các bản sao của x - chỉ đc thực thi nếu dữ liệu là mới
nhất - có nghĩa các tác vụ ghi trước đó trên x phải được phản ánh ở bản sao bất kỳ

2. Nhất quán client làm trung tâm
 Nhất quán đọc kết quả ghi (read your writes)
 Đảm bảo tiến trình P luôn đọc đúng giá trị mới nhất của dữ liệu x (giá trị này là
kết quả của các tác vụ ghi lên x bởi chính P)

3. Quản lý bản sao
 Vị trí bản sao - nhân bản
 Các loại tiến trình nhân bản
 Bản sao thường trực - permanent replica: tiến trình/máy luôn giữ bản sao
 Bản sao khởi tạo động từ máy chủ - server initiated replica :
• Tiến trình/máy có thể lưu bản sao theo yêu cầu động (dynamic) khởi tạo từ máy
chủ khác. Thường để tăng hiệu năng. VD: Web hosting
 Bản sao khởi tạo động từ máy trạm - client initiated replica
• Tiến trình/máy lưu bản sao
theo yêu cầu động từ máy khách
VD: web browser caching
3. Quản lý bản sao
 VD: server init - cache file trong web hosting
dựa trên giả định số yc đọc nhiều hơn cập nhật
 Mục tiêu của giải thuật:
• replicate => tăng hiệu năng
• file được migrate,replicate tới server gần client
 Server: có biến đếm count/file và tt client yc
• Với client C: mỗi server luôn xác định đc server nào "gần" C nhất
• Với 2 client C1, C2: nếu có chung server (P) gần nhất => các yc đọc file F đến Q (lưu
file F) từ C1 và C2 được tính gộp thành 1 số đếm cntQ (P, F)
Từ đó: thực hiện
• Remove f from S: khi SL yc file f tại server S dưới ngưỡng del(S,f)
• Replicate f to S: khi SL yc vượt ngưỡng rep(S,f)
• Migrate f tới S: khi SL yc nằm giữa del() và rep()
3. Quản lý bản sao
 Lan truyền tt cập nhật
 Trong nhân bản - cần quản lý việc lan truyền các cập nhật từ replica này tới
replica khác
 Một số tiếp cận thực hiện
 Chỉ thông báo có cập nhật; thường cho tình huống cache
 Truyền dữ liệu cập nhật - dữ liệu được cập nhật; hiệu quả khi chủ yếu là tác vụ đọc
 Truyền tt thao tác - chỉ tt mô tả tác vụ; tiết kiệm băng thông
3. Quản lý bản sao
 Lan truyền tt cập nhật
 Giao thức lan truyền: đẩy (push) >< kéo (pull)
 đẩy: server nơi có cập nhật => chủ động đẩy tt tới các nút khác
 kéo: client hỏi server về tt cập nhật => thụ động
3. Quản lý bản sao
 Lan truyền tt cập nhật
 VD: giao thức gossip
 thuật ngữ
• nút có thay đổi: infective node
• nút chưa đc cập nhật tt: susceptible
• nút kh muốn quảng bá tiếp: removed
 Vận hành:
• nút P bắt đầu lan truyền:
• P chọn ngẫu nhiên k nút khác {Q1, Q2, ..., Qk}
• P gửi tt cập nhật tới Qi
• P trở thành remove
• nút Qi nhận tt cập nhật:
• nếu Qi chưa có cập nhật này => tiếp tục lan truyền
• ngược lại: Qi không xử lý cập nhật
3. Quản lý bản sao
 Giao thức nhất quán
 Giao thức dựa trên bản chính
 Giao thức ghi phân tán
 Giao thức gắn với cache
3. Quản lý bản sao
 Giao thức dựa trên bản chính
 Một replica vai trò bản chính - primary:
 cập nhật dữ liệu xảy ra ở primary trước, sau đó được lan tuyền đến các replica khác
 Giao thức ghi từ xa remote write
 tác vụ write thực hiện ở 1 server
(ở xa)
 tác vụ read thực hiện ở các local
 nhược điểm: hiệu năng
 ưu: cập nhật chỉ ở 1 server =>
kiểm soát nhất quán
3. Quản lý bản sao
 Giao thức dựa trên bản chính
 Giao thức ghi cục bộ local-write
 Lưu trữ của dữ liệu x được di trú (migrate) từ server này tới server khác
 vấn đề: tìm nơi lưu bản chính x
và di trú => tốn kém
3. Quản lý bản sao
 Giao thức ghi phân tán
 Đặc điểm
 tác vụ write - có thể đc thực hiện trên replica bất kỳ
 sau đó lan truyền tới các replica khác
 Có 2 cách thực hiện chính
 active replication - giao thức nhân bản chủ động
 majority voting (quorum) - giao thức dựa trên đại biểu
3. Quản lý bản sao
 Giao thức ghi phân tán
 Active replication - giao thức nhân bản chủ động
 tác vụ ghi có thể xảy ra ở replica bất kỳ
 Lan truyền cập nhật tới các replica khác
 Sử dụng tiến trình đặc biệt lan truyền cập nhật tới các replica khác:
• có thể gán nhãn thời gian Lamport => sắp xếp thứ tự tác vụ
• có thể dùng bộ đếm tăng (sequence) => gán ID duy nhất tăng dần cho tác vụ
• có thể dùng truyền thông multicast
3. Quản lý bản sao
 Giao thức ghi phân tán
 Majority voting (quorum) - giao thức dựa trên đại biểu
 Client: cần lấy (acquire) được chấp thuận từ số lượng đủ các replica khi thực hiện tác
vụ ghi, cũng như đọc
• Mỗi mục dữ liệu được gắn phiên bản => tăng mỗi khi cập nhật
• Khi đọc: client liên hệ tập các replica để xác định phiên bản mới nhất
 Với hệ N server
• Đọc: cần thu thập tối thiểu Nr đại biểu
• Ghi: cần thu thập tối thiểu Nw đại biểu
• Nr + Nw > N
• Nw > N/2
3. Quản lý bản sao
 Giao thức ghi phân tán
 Majority voting (quorum) - giao thức dựa trên đại biểu
 Với hệ N server
• Đọc: cần thu thập tối thiểu Nr đại biểu
• Ghi: cần thu thập tối thiểu Nw đại biểu
• Nr + Nw > N
• Nw > N/2
• VD bên
• (a): chọn đúng
• (b): sai - write-write
• (c): đúng, giải pháp ROWA
read one write all
3. Quản lý bản sao
 Giao thức gắn với cache
 Đặc điểm: điều khiển bởi client
 Để đảm bảo sự gắn kết - phản ánh đúng:
 khi có cập nhật: server gửi thông điệp về sự thay đổi
 lan truyền cập nhật
 Ghi vào cache:
 Cache chỉ đọc (read only cache): cập nhật chỉ ở server; sau đó push (from server)
hoặc pull (clien request)
 Cache ghi thẳng (write through): client cập nhật ở cache và gửi cập nhật tới server
 Cache ghi sau (write back): client cập nhật ở cache nhưng trì hoãn lan truyền, tập hợp
nhiều cập nhật thành gói => báo cho server

You might also like