Các mô hình nhất quán lấy client làm trung tâm

Phần 1: Cỏc nguyờn lý của hệ phõn tỏn 1

Chương 1 : Giới thiệu chung 1

Chương 2: Comunication 1

2.1 Giao thức trờn cỏc tầng 1

2.1.1 Cỏc giao thức ở tầng thấp 2

2.1.2 Giao thức tầng giao vận 2

2.1.3 Giao thức cỏc tầng cao hơn 2

2.2 Remote Procedure Call (RPC) 3

2.2.1 Các thao tác RPC cơ bản 3

2.2.2 Truyền tham số 3

2.3 Remote Object Invoce 4

2.3.1 Đối tượng phân tán 4

2.3.2 Kết nối một client với một object 5

2.3.3 RMI tĩnh và động 5

2.3.4 Truyền tham số 5

2.4 Message Oriented Communication 6

2.4.1 Liên tục và đồng bộ 6

Chương 3: Process 7

3.1. Thread. 7

3.1.1 Một số khái niệm cơ bản 7

3.1.2.Thực thi cỏc Thread. 7

3.1.3. Threads in Distributed System. 7

3.2 Clients 8

3.2.1 User Interfaces 8

3.2.2 Client-Side Software 9

3.3. Server 9

3.3.1 Những đặc điểm thiết kế chung: 9

3.3.2. Object Sever 9

3.4. Di trỳ mó 9

3.4.1 Các phương pháp tiếp cận di trú mó: 9

3.4.2 Di trỳ và quản lý cỏc tài nguyờn cục bộ : 10

3.4.3. Di trú trên các hệ thống không đồng nhất 10

3.5 Software agent 11

3.5.1 Khỏi niệm tỏc tử phần mềm 11

3.5.2 Kỹ thuật tỏc tử. 11

Chương 4: Naming 11

4.1 Các thực thể định danh (Naming Entities) 12

4.1.1 Một số khỏi niệm 12

4.1.2. Khụng gian tờn 12

4.1.3 Phõn giải tờn (name resolution) 13

4.1.4. Thực thi một khụng gian tờn 13

4.2 Định vị các thực thể di động (Locating Mobile Entities) 14

4.2.1 Định danh và định vị các thực thể di động. 14

4.2.2. Các giải pháp đơn giản 14

4.2.3 Cỏc cỏch tiếp cận dựa trờn gốc (Home-Based Approachs) 14

4.2.4 Cỏc cỏch tiếp cận phõn cấp 15

4.3 Xóa bỏ các thực thể không được tham chiếu 15

4.3.1 Vấn đề với những thực thể không được tham chiếu 15

4.3.2 Đếm các tham chiếu 15

4.3.3 Ghi danh sỏch cỏc tham chiếu 16

Chương 5. Đồng bộ hóa 16

5.1 Đồng bộ đồng hồ 16

5.1.1 Đồng hồ vật lý 16

5.1.2 Các giải thuật đồng bộ theo đồng hồ vật lý 16

5.2 Đồng hồ lôgic 17

5.2.1 Lamport timestamps 17

5.2.2 Vector timestamps 18

5.3 Giải thuật lựa chọn 18

5.4 Loại trừ lẫn nhau 19

5.4.1 Thuật toỏn tập trung 19

5.4.2 Thuật toỏn phõn tỏn 19

5.4.3 Thuật toỏn dựng token-ring 20

5.5 Giao tỏc phõn tỏn 20

5.5.1 Mụ hỡnh giao tỏc 20

5.5.2 Phõn loại cỏc giao tỏc 20

5.5.3 Thực hiện 20

5.5.4 Điều khiển đồng thời 20

Chương 6: Nhất quán và nhân bản 21

6.1. Cỏc lớ do tạo bản sao 21

6.2. Cỏc mụ hỡnh nhất quỏn lấy dữ liệu làm trung tõm 21

6.2.1. Nhất quỏn chặt (Strict consistency) 21

6.2.3. Nhất quỏn nhõn quả (Causal consistency) 22

6.2.4. Nhất quỏn FIFO (FIFO consistency) 22

6.2.5. Nhất quỏn yếu (Weak consistency) 23

6.3. Cỏc mụ hỡnh nhất quỏn lấy client làm trung tõm 23

6.3.1. Nhất quỏn cuối cựng (Eventual consistency) 23

6.3.2. Nhất quán đọc đều (Monotonic Reads consistency) 24

6.3.3. Nhất quán ghi đều (Monotonic Writes consistency) 24

6.3.4. Nhất quán đọc thao tác ghi (Read your writes consistency) 24

6.3.5. Nhất quán ghi theo sau đọc (Writes follow reads consistency) 24

6.4. Cỏc giao thức phõn phối 25

6.4.1 Đặt các bản sao (replica placement) 25

6.4.2 Lan truyền cập nhật 25

6.4.3 Cỏc giao thức bệnh dịch 25

6.5 Cỏc giao thức nhất quỏn 25

6.5.1. Primary-based protocols 25

Chương 7: Chịu lỗi 26

7.1 Giới thiệu dung lỗi 26

7.1.1 Các khái niệm cơ bản 26

7.1.2 Cỏc mụ hỡnh lỗi 27

7.1.3 Che lỗi bằng dư thừa 27

7.2 Độ hồi phục tiến trỡnh 27

7.2.1 Vấn đề thiết kế 27

7.2.2 Che lỗi và nhõn bản 27

7.2.3 Thỏa thuận trong cỏc hệ thống lỗi 28

7.3 Giao tiếp khỏch - chủ tin cậy 28

7.3.1 Giao tiếp điểm – điểm 28

7.3.2 Ngữ nghĩa RPC trong việc xuất hiện lỗi 28

7.4.1 Lược đồ multicast tin cậy cơ bản 29

7.4.2 Tớnh mở rộng trong multicast tin cậy 29

7.4.3 Multicast nguyờn tố 29

7.5 Cam kết phõn tỏn 30

7.5.1 Cam kết hai pha 30

7.5.2 Cam kết ba pha 30

7.6 Phục hồi 30

7.6.1Checkpointing 30

7.6.2 Ghi nhật ký các thông điệp 31

Chương 8: An toàn – An ninh (Security) 31

8.1 Đặt vấn đề 31

8.1.1 Các mối đe dọa, chính sách và cơ chế an toàn , an ninh 31

8.1.2 Các vấn đề khi thiết kế 32

8.1.3 Mật mó (Cryptography) 32

8.2 Kờnh an toàn (Secure channels) 33

8.2.1 Xỏc thực (Authentication) 33

8.2.2 Tính toàn vẹn và tính mật của thông điệp. 34

8.2.3 Truyền thụng nhúm an toàn 34

8.3 Kiểm soỏt truy nhập (Access Control) 34

8.3.1 Cỏc khớa cạnh tổng quỏt trong kiểm soỏt truy cập 34

8.3.2 Tường lửa (Firewall) 35

8.4 Quản trị an toàn – an ninh (Security management ) 35

8.4.1 Quản trị khúa 35

8.4.2 Quản trị nhúm an toàn 36

8.4.3 Quản trị phõn quyền (Authorization management ) 36

Phần 2: Tỡm hiểu về cỏc hệ thống file phõn tỏn 37

Chương 10: Các hệ thống file phân tán 37

10.1 Sun Network File System (NFS). 37

10.1.1 Tổng quan về NFS 37

10.1.2 Giao tiếp (Communication) 39

10.1.3 Tờn (Naming) 40

10.1.4 Đồng bộ hóa 42

10.1.5 Lưu trữ và nhân bản 43

10.1.6 Chịu lỗi 44

10.2 Hệ thống file Coda 45

10.2.1 Tổng quan về Coda 45

10.2.2 Truyền thụng 46

10.2.3 Tiến trỡnh 46

10.2.4 Định danh 46

10.2.5 Đồng bộ 47

10.2.6 Đệm và nhân bản 47

10.2.7 Chịu lỗi 47

10.2.8 An toàn – An ninh 48

10.3 Cỏc hệ thống file phõn tỏn khỏc. 48

10.3.1 Plan 9: Hợp nhất cỏc nguồn tài nguyờn thành file 48

10.3.2 XFS Hệ thống file khụng server 50

10.3.3 SFS 51

10.4 So sỏnh cỏc hệ file phõn tỏn 52

10.5 KẾT LUẬN 54

doc58 trang | Chia sẻ: huong.duong | Lượt xem: 1960 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Các mô hình nhất quán lấy client làm trung tâm, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
, vì nếu bản gốc bị hỏng ta có thể thay thế bằng một bản sao của nó. Khi hệ thống mở rộng về số lượng hoặc trải ra trên một phạm vi địa lý rộng, việc tạo bản sao dữ liệu giúp cải thiện hiệu năng. Tạo bản sao đem lại nhiều lợi ích nhưng có một nhược điểm là việc giữ nhiều bản sao sẽ rất khó đảm bảo được nhất quán. Mặc dù tạo bản sao và cache là các phương pháp hữu hiệu để tăng hiệu năng nhưng nó yêu cầu băng thông lớn cho đồng bộ hoá các bản sao. 6.2. Các mô hình nhất quán lấy dữ liệu làm trung tâm Các mô hình nhất quán loại này đặt ngữ cảnh là có một bản sao dữ liệu được truy nhập đồng thời bởi nhiều tiến trình khác nhau, làm sao để kết quả cuối cùng của các thao tác của tất cả các tiến trình là nhất quán cho tất cả các tiến trình. 6.2.1. Nhất quán chặt (Strict consistency) Mô hình thoả mãn điều kiện sau: Mọi thao tác đọc trên khoản mục dữ liệu x đều trả về kết quả của thao tác ghi gần nhất trên x. Hình 9 (a) Kho dữ liệu nhất quán chặt (b) Kho dữ liệu không nhất quán chặt. Trong đó :Wi(x)a: Tiến trình Pi ghi giá trị a vào khoản mục dữ liệu x. Ri(x)b: Tiến trình Pi đọc giá trị khoản mục dữ liệu x thu được kết quả b. 6.2.2. Nhất quán tuần tự và nhất quán tuyến tính Mô hình nhất quán tuần tự yếu hơn mô hình nhất quán chặt. Nó thoả mãn điều kiện sau: Kết quả của bất kì sự thực hiện nào cũng giống nhau nếu các thao tác (đọc, ghi) bởi tất cả tiến trình trong kho dữ liệu được thực hiện theo một thứ tự tuần tự nào đó và các thao tác của một tiến trình riêng biệt xuất hiện theo đúng thứ tự được chỉ rõ bởi chương trình. Điều này có nghĩa là có nhiều thứ tự thực hiện thao tác được chấp nhận nhưng các tiền trình phải có thứ tự thực hiện thao tác giống nhau. Hình 10 (a) Kho dữ liệu nhất quán tuần tự (b) Kho dữ liệu không nhất quán tuần tự. Mô hình nhất quán tuyến tính yếu hơn mô hình nhất quán chặt nhưng mạnh hơn mô hình nhất quán tuần tự. Ngoài thoả mãn các điều kiện của nhất quán tuần tự, nó bổ sung thêm điều kiện: Nếu tsop1(x) < tsop2(y) thì thao tác op1(x) phải được thực hiện trước op2(y) trong chuỗi thao tác (tsop1(x) là nhãn thời gian của thao tác op1(x)). 6.2.3. Nhất quán nhân quả (Causal consistency) Mô hình này lỏng lẻo hơn mô hình nhất quán tuần tự. Nó đòi hỏi thứ tự thực hiện của các thao tác nhân quả phải giống nhau đối với tất cả các tiến trình. Khái niệm nhân quả được hiểu như sau: Nếu sự kiện b được gây ra hoặc bị tác động bởi một sự kiện a xảy ra sớm hơn thì quan hệ nhân quả đòi hỏi mọi thực thể khác phải “nhìn” thấy a trước rồi thấy b. Điều kiện của nhất quán nhân quả: Các thao tác ghi có quan hệ nhân quả phải được nhìn thấy bởi tất cả các tiến trình khác theo một thứ tự. Các thao tác ghi đồng thời có thể nhìn thấy theo thứ tự khác nhau trên các máy khác nhau. Hình 11. (a) Kho dữ liệu nhất quán nhân quả (b) Kho dữ liệu không nhất quán nhân quả. 6.2.4. Nhất quán FIFO (FIFO consistency) Nhất quán FIFO lỏng lẻo hơn các mô hình kể trên. Nó chỉ đòi hỏi đảm bảo thứ tự thực hiện các thao tác của một tiến trình đơn. Nó thoả mãn điều kiện sau: Các thao tác ghi của một tiến trình đơn phải được tất cả các tiến trình khác nhìn thấy theo cùng một trật tự mà nó đề ra. Nhưng các thao tác ghi bởi nhiều tiến trình khác nhau có thể được nhìn thấy theo những trật tự khác nhau bởi các tiến trình khác nhau. Hình 12. Một chuỗi sự kiện của nhất quán FIFO. 6.2.5. Nhất quán yếu (Weak consistency) Mô hình nhất quán yếu chỉ đảm bảo tính nhất quán tại thời điểm ngay sau các điểm đồng bộ hoá. Mô hình này có ba đặc điểm sau: Việc truy cập đến một biến đồng bộ hóa được liên kết với kho dữ liệu nhất quán tuần tự. Không có thao tác nào trên các biến đồng bộ hóa được phép thực hiện cho đến khi tất cả các thao tác ghi trước đó được hoàn thành ở mọi nơi. Không có thao tác đọc hay ghi dữ liệu lên các mục dữ liệu nào được phép thực hiện cho đến khi tất cả các thao tác trước đó trên các biến đồng bộ hóa được thực hiện. Hình 13 (a)Chuỗi sự kiện nhất quán yếu (b) Chuỗi sự kiện không nhất quán yếu. 6.2.6. Nhất quán đi ra (Release consistency) Bổ sung thêm hai lệnh: lệnh acquire để khai báo muốn vào vùng găng (critial region) và lệnh release để khai báo muốn đi ra khỏi vùng găng. Hai lệnh này có hai cách thực thi khác nhau như: bằng biến hoặc bằng lệnh đặc biệt. Hai thao tác này chỉ thực hiện với các dữ liệu dùng chung chứ không áp dụng cho tất cả các dữ liệu. Mô hình nhất quán đi ra thỏa mãn các điều kiện sau: Trước khi thực hiện một thao tác đọc hay ghi lên dữ liệu chia sẻ thì tất cả các thao tác acquire do tiến trình này thực hiện trước đó phải hoàn tất. Trước khi một thao tác release được phép thực hiện thì tất cả các thao tác đọc và ghi do tiến trình này thực hiện trước đó phải được hoàn tất. Truy cập vào các biến đồng bộ hóa là nhất quán FIFO (Không yêu cầu nhất quán tuần tự). Hình 14: Trình tự sự kiện theo mô hình nhất quán đi ra. 6.3. Các mô hình nhất quán lấy client làm trung tâm Các mô hình nhất quán loại này đặt ngữ cảnh là một tiến trình cần phải thao tác trên nhiều bản sao khác nhau của kho dữ liệu, khi đó cần phải làm gì để đảm bảo được tính nhất quán của các bản sao này. 6.3.1. Nhất quán cuối cùng (Eventual consistency) Trong phần này, ta giả định rằng kho dữ liệu không có các cập nhật đồng thời, hoặc nếu có thì cũng có thể dễ dàng giải quyết, đồng thời các tiến trình chủ yếu chỉ thực hiện thao tác đọc dữ liệu. Khi đó, nếu trong một khoảng thời gian dài không có cập nhật, các kho dữ liệu sẽ tiến tới trạng thái nhất quán nhờ việc lan truyền cập nhật giữa các bản sao. Loại nhất quán này gọi là nhất quán cuối cùng (eventual consistency). Loại nhất quán này chỉ đảm bảo được cho từng client riêng biệt, nghĩa là trong các thời điểm khác nhau, client sẽ truy cập vào các bản sao khác nhau của kho dữ liệu, nhất quán cuối cùng đảm bảo client thấy được sự nhất quán giữa các bản sao đó. Không thể đảm bảo được các truy cập đồng thời của các client khác nhau cũng nhất quán. 6.3.2. Nhất quán đọc đều (Monotonic Reads consistency) Nhất quán đọc đều phải đảm bảo điều kiện sau: Một tiến trình thực hiện thao tác đọc trên một khoản mục dữ liệu x thì phải đảm bảo bất kì thao tác đọc nào trên x của tiến trình đó cũng đều cho cùng một kết quả hay kết quả mới hơn. Nhất quán đọc đều đảm bảo rằng một client sẽ luôn nhìn thấy những dữ liệu hiện hành hoặc mới hơn và không phải nhìn thấy những dữ liệu cũ hơn những gì mà họ đã đọc trước đó. Điều đó có nghĩa là khi một client thực hiện một thao tác đọc trên một bản sao rồi sau đó lại đọc trên một bản sao khác 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. Mô hình này chính là nhất quán FIFO nhưng giới hạn chỉ áp dụng đối với một client. Hình 15. (a) Kho dữ liệu nhất quán đọc đều (b) Kho dữ liệu không nhất quán đọc đều. 6.3.3. Nhất quán ghi đều (Monotonic Writes consistency) Nhất quán ghi đều phải đảm bảo điều kiện sau: Thao tác ghi trên mục dữ liệu x của một tiến trình phải được hoàn thành trước bất kỳ một thao tác ghi nào khác trên x cũng bởi tiến trình đó. 6.3.4. Nhất quán đọc thao tác ghi (Read your writes consistency) Trong mô hình này, người dùng được đảm bảo luôn nhìn thấy những kết quả ghi mới nhất: Tác động của một thao tác ghi của một tiến trình lên khoản mục dữ liệu x sẽ luôn được nhìn thấy bởi một thao tác đọc tiếp theo trên x cũng của tiến trình đó. Hình 16. (a) Kho dữ liệu nhất quán đọc kết quả ghi (b) Kho dữ liệu không nhất quán đọc kết quả ghi. 6.3.5. Nhất quán ghi theo sau đọc (Writes follow reads consistency) Mô hình này thoả mãn điều kiện: Một thao tác ghi của một tiến trình trên khoản mục dữ liệu x theo sau một thao tác đọc x của tiến trình đó, được đảm bảo là xảy ra trên giá trị bằng hoặc mới hơn giá trị của x đã đọc. 6.4. Các giao thức phân phối 6.4.1 Đặt các bản sao (replica placement) Phân loại theo phương pháp xếp đặt, có 3 loại bản sao: Các bản sao thường trực. Bản sao khởi đầu từ server: Các bản sao khởi đầu từ client: 6.4.2 Lan truyền cập nhật Cập nhật đẩy (Push-based approach):Trong giao thức này server là chủ động, mỗi khi có cập nhật, server sẽ đẩy các dữ liệu cập nhật về cho client. Nhược điểm của phương pháp này là server cần phải giữ danh sách các client để lan truyền khi có cập nhật. Cập nhật kéo (Pull-based approach):Giao thức này thường được sử dụng kết hợp với client caches. Client luôn luôn chủ động hỏi server có cập nhật nào hay không. Khi có cập nhật, client sẽ lấy dữ liệu cập nhật về và bổ sung vào client caches. Truyền thông điểm - điểm (unicast) và điểm - nhiều điểm (multicast):Truyền thông điểm – điểm phù hợp với lan truyền cập nhật kéo, khi đó client là phía chủ động tạo kết nối. Truyền thông điểm – nhiều điểm phù hợp với lan truyền cập nhật kéo, nhờ có cơ chế broadcast của phần cứng, tốc độ lan truyền cập nhật nhanh không kém truyền thông điểm – điểm. 6.4.3 Các giao thức bệnh dịch Ý tưởng cơ bản của giao thức bệnh dịch là: Giả sử rằng không xảy ra xung đột giữa các thao tác ghi – ghi. Các thao tác cập nhật ban đầu được thực hiện chỉ trên một hay một vài bản sao (càng ít càng tốt). Một bản sao chỉ gửi các cập nhật của nó tới một số hữu hạn các hàng xóm. Việc lan truyền các cập nhật xảy ra chậm chạp và không phải ngay lập tức. Cuối cùng thì mỗi cập nhật cũng đến được từng bản sao. 6.5 Các giao thức nhất quán 6.5.1. Primary-based protocols a. Các giao thức ghi từ xa Trong giao thức này, tất cả các thao tác ghi được thực hiện chỉ trên một server từ xa. Nhược điểm của giao thức này là vấn đề hiệu năng, tất cả các thao tác ghi trong giao thức đều chiếm khá nhiều thời gian. Ưu điểm của giao thức này là tất cả các thao tác ghi có thể được gửi đến các bản sao dự phòng theo cùng một thứ tự, điều này tạo điều kiện thuận lợi khi thực thi mô hình nhất quán tuần tự. b. Các giao thức ghi cục bộ Trong giao thức này một bản sao của khoản mục dữ liệu được duy trì. Khi có yêu cầu thao tác ghi, khoản mục dữ liệu được nhân bản từ server từ xa chuyển đến server cục bộ. Một vấn đề đặt ra cho các tiến trình sử dụng giao thức này là: thời gian để thật sự định vị được một mục dữ liệu có thể còn lớn hơn cả thời gian tiến trình sử dụng nó. Một dạng của giao thức ghi cục bộ là là giao thức Primary-backup. Trong giao thức này bản chính được di trú đến tiến trình đang muốn thực hiện việc cập nhật, rồi sau đó bản dự phòng sẽ được cập nhật. 6.5. 2. Các giao thức Replicated-write. a. Giao thức nhân bản chủ động Trong giao thức này, các thao tác ghi được truyền đến tất cả các bản sao, trong khi các thao tác đọc được thực hiện cục bộ. Giao thức ghi có thể được truyền sử dụng truyền thông điểm – điểm hay điểm – nhiều điểm. Ưu điểm của giao thức này là tất cả các bản sao đều nhận được các thao tác cùng lúc và theo cùng một trật tự, và nó cũng không cần đánh dấu một bản chính hay phải gửi tất cả các thao tác tới một server. Trong giao thức này có một vấn đề cần quan tâm là “triệu gọi bản sao”. Để tránh cho một bản sao bị gọi nhiều lần, một bộ điều phối được gắn ở mỗi bên (client và server), điều này đảm bảo chỉ có một yêu cầu và một phản hồi được gửi đi. b. Giao thức Quorum­based Trong giao thức này, các thao tác ghi được thực hiện trên một tập nhỏ nhất các bản sao. Khi thực hiện một thao tác đọc, người dùng cũng phải liên hệ với một tập các bản sao để tìm ra phiên bản mới nhất của dữ liệu. Tất cả các khoản mục dữ liệu được kết hợp với một số hiệu phiên bản (version number). Mỗi lần một mục bị sửa đổi thì số hiệu phiên bản của nó cũng được tăng lên. Giao thức này định nghĩa ra số đại diện đọc và số đại diện ghi, hai số đại diện này sẽ xác định số lượng bản sao phải được liên hệ trước khi thực hiện thao tác đọc và ghi. Số đại diện đọc phải lớn hơn ½ tổng số bản sao, vì thế tổng của số đại diện đọc và ghi phải lớn hơn tổng số bản sao. 6.5.3. Cache-coherence protocols Cache là một dạng đặc biệt của nhân bản, nó được điều khiển bởi client thay vì được điều khiển bởi server. Với chiến lược phát hiện sự cố kết, có 2 giải pháp khác nhau. Chương 7: Chịu lỗi Một trong các đặc điểm của các hệ thống phân tán phân biệt so với các hệ thống máy đơn là khái niệm lỗi một phần. Lỗi một phần xảy ra khi một thành phần của hệ thống bị lỗi, nhưng lỗi này có thể tác động đến việc vận hành của hệ thống, thậm chí là toàn bộ các ứng dụng. Do đó mục tiêu của hệ thống phân tán là có thể phục hồi hệ thống từ các lỗi một phần mà không tác động nghiêm trọng đến hiệu năng chung. Phần này sẽ giới thiệu các kỹ thuật dung lỗi cho hệ thống phân tán. 7.1 Giới thiệu dung lỗi Kỹ thuật chủ chốt để kiểm soát lỗi là tính dư thừa. 7.1.1 Các khái niệm cơ bản Dung lỗi nghĩa là một hệ thống có thể cung cấp các dịch vụ của nó ngay cả khi có sự hiện diện của lỗi. Phân loại lỗi: Lỗi tạm thời: xảy ra một lần rồi biến mất Lỗi không thường xuyên: thi thoảng xuất hiện, biến mất rồi sau đó lại xuất hiện lại. Lỗi cố định: tiếp tục tồn tại cho đến khi thành phần lỗi được sửa. 7.1.2 Các mô hình lỗi Để đánh giá mức độ nghiêm trọng của lỗi, một số cách phân loại lỗi được phát triển. Một trong số đó như bảng sau Kiểu lỗi Mô tả Lỗi sụp đổ Máy chủ dừng hoạt động nhưng trước đó vẫn làm việc đúng đắn Lỗi bỏ sót Bỏ sót nhận Bỏ sót gửi Máy chủ không trả lời yêu cầu gửi đến Máy chủ không nhận được thống điệp gửi đến Máy chủ không gửi thông điệp Lỗi thời gian Phản hồi của máy chủ nằm ngoài khoảng thời gian được chỉ ra Lỗi phản hồi Lỗi giá trị Lỗi chuyển trạng thái Phản hồi của máy chủ không đúng Giá trị phản hồi sai Máy chủ chệch khỏi luồng điều khiển đúng Lỗi tùy tiện (Byzantine) Máy chủ có thể tự ý phản hồi vào thời điểm tùy ý Hình 17: Các kiểu lỗi khác nhau 7.1.3 Che lỗi bằng dư thừa Có ba kiểu dư thừa: Dư thừa dữ liệu: thêm các bit vào để phục hồi các bit lỗi Dư thừa thời gian: thực hiện lại một hành động khi có lỗi, hữu ích trong giao dịch Dư thừa vật lý:thêm thiết bị và tiến trình khi một số thành phần hoạt động sai hệ thống vẫn hoạt động tốt 7.2 Độ hồi phục tiến trình Để khắc phục lỗi tiến trình, các tiến trình được nhân bản thành các nhóm. 7.2.1 Vấn đề thiết kế Một vài tiến trình giống nhau được tổ chức thành các nhóm. Khi thông điệp được gửi tớ, tất cả các thành viên đều nhận được để khi một tiến trình bị lỗi, tiến trình khác có thể khôi phục lại. Một tập các nhóm như là một trừu tượng hóa đơn và các nhóm tiến trình có thể là động, được sinh ra và hủy đi. Cấu trúc nhóm: Nhóm ngang hàng Nhóm phân cấp 7.2.2 Che lỗi và nhân bản Tùy thuộc loại lỗi và mức độ che lỗi để xác định số nhân bản cần thiết. Che lỗi xảy ra bởi k thành phần thì cần k+1 bản sao.Với lỗi Byzantine thì cần 2k+1 bản sao. 7.2.3 Thỏa thuận trong các hệ thống lỗi Khi có lỗi xảy ra các tiến trình cần trao đổi với nhau để đi đến một thỏa thuận vì lúc đó các tiến trình không nhất quán.. Với lỗi Byzantine, Lamport đề xuất thuật toán đệ quy để giải quyết. Hình 18: Lỗi Byzantine với 3 tướng trung thành, 1 tướng lừa dối. (a) Các tướng công bố sức mạnh quân đội. (b) các vector thu thập dựa trên (a). (c) Vector mà mỗi tướng nhận được 7.3 Giao tiếp khách - chủ tin cậy 7.3.1 Giao tiếp điểm – điểm Dùng các giao thức tin cậy như TCP. Khi xảy ra đứt đường truyền, trình khách được thông báo 7.3.2 Ngữ nghĩa RPC trong việc xuất hiện lỗi Năm loại lỗi khác nhau trong các hệ thống RPC: Máy khách không thể xác định vị trí của máy chủ Thông điệp từ máy khách đến máy chủ bị mất Máy chủ hỏng sau khi nhận thông điệp Thông điệp phản hồi từ máy chủ đến máy khách bị mất Máy khách bị hỏng sau khi gửi thông điệp 7.4 Giao tiếp nhóm tin cậy Hình 19: Một giải pháp đơn giản cho việc multicast tin cậy khi tất cả các bên nhận đều được biết và giả thiết là không bị lỗi. (a) Truyền thông điệp. (b) Thông báo phản hồi 7.4.1 Lược đồ multicast tin cậy cơ bản 7.4.2 Tính mở rộng trong multicast tin cậy Vấn đề chính trong việc multicast tin cậy là tính mở rộng, cần hỗ trợ nhiều bên nhận. Sau đây là 2 cách tiếp cận: Điều khiển phản hồi không phân cấp Hình 26: Một vài bên nhận lập lịch cho một yêu cầu truyền lại nhưng việc truyền lại đầu tiên lấn át những cái còn lại Điều khiển phản hồi phân cấp: Dùng cho việc mở rộng các nhóm rất lớn các bên nhận Hình 20. Mỗi bộ điều phối cục bộ chuyển thông điệp cho các con của nó và sau đó điều khiển các yêu cầu truyền lại 7.4.3 Multicast nguyên tố Multicast nguyên tố: thông điệp hoặc được truyền đến tất cả các tiến trình hoặc là không đến tiến trình nào cả. Đồng bộ ảo Thông điệp hoặc là được gửi tới tất cả các tiến trình không lỗi hoặc là không đến cái nào gọi là đồng bộ hóa ảo. Hình 21: Nguyên lý của multicast đồng bộ hóa ảo 7.5 Cam kết phân tán 7.5.1 Cam kết hai pha Hình 22: (a) Trạng thái điều phối viên. (b) Trạng thái bên tham gia 7.5.2 Cam kết ba pha Hình 23 (a) Trạng thái của điều phối viên (b) Trạng thái các bên tham gia 7.6 Phục hồi Có 3 kiểu phục đó là: Phục hồi quay lui : quay về trạng thái trước lỗi đã được lưu lại Phục hối tiến: đưa hệ thống tới trạng thái không lỗi gần nhất Lưu trữ bảng: lưu trữ các thông tin để phục hồi hệ thống 7.6.1Checkpointing Ảnh chụp hệ thống: trạng thái nhất quán toàn cục Hình 24: một đường phục hồi Hai cách checkpointing: Checkpointing độc lập Checkpointing hợp tác 7.6.2 Ghi nhật ký các thông điệp Lưu lại nhật ký các thông điệp dùng để phục hồi hệ thống tới trạng thái nhất quán. Hình 25: Tua sai các thông điệp khi phục hồi dẫn đến tiến trình mồ côi Chương 8: An toàn – An ninh (Security) 8.1 Đặt vấn đề 8.1.1 Các mối đe dọa, chính sách và cơ chế an toàn , an ninh a. Các mối đe dọa Hệ thống máy tính luôn bị đe dọa bởi các nguy cơ mất an toàn. Một trong những công việc để bảo vệ hệ thống là làm sao giúp hệ thống tránh khỏi các nguy cơ đó. Có 4 loại các mối đe dọa an toàn: Interception (chặn bắt): chỉ thành phần không được phép cũng có thể truy cập đến các dịch vụ hay các dữ liệu, “nghe trộm” thông tin đang được truyền đi. Interruption (đứt đoạn): là mối đe dọa mà làm cho dịch vụ hay dữ liệu bị mất mát, bị hỏng, không thể dùng được nữa… Modification (thay đổi): là hiện tượng thay đổi dữ liệu hay can thiệp vào các dịch vụ làm cho chúng không còn giữ được các đặc tính ban đầu. Fabrication (giả mạo): là hiện tượng thêm vào dữ liệu ban đầu các dữ liệu hay hoạt động đặc biệt mà không thể nhận biết được để ăn cắp dữ liệu của hệ thống. b. Các cơ chế an toàn, an ninh Có 4 cơ chế an toàn, an ninh được đưa ra: Mật mã (Cryptography): là việc thực hiện chuyển đổi dữ liệu theo một quy tắc nào đó thành dạng mới mà kẻ tấn công không nhận biết được. Xác thực (Authentication): là các thao tác để nhận dạng người dùng, nhận dạng client hay server… Ủy quyền (Authorization).: chính là việc phân định quyền hạn cho mỗi thành phần đã đăng nhập thành công vào hệ thống. Quyền hạn này là các quyền sử dụng dịch vị, truy cập dữ liệu… Kiểm toán (Auditing): là các phương pháp để xác đinh được client đã truy cập đến dữ liệu nào và bằng cách nào. 8.1.2 Các vấn đề khi thiết kế a. Điều khiển (focus of control) Có ba cách tiếp cận: Chống các thao tác bất hợp lệ: việc này thực hiện bằng cách bảo đảm toàn vẹn chính các dữ liệu đó mà không quan tâm đến việc phân tích sự hợp lệ của thao tác. Chống các triệu gọi thao tác không được ủy quyền: không bảo đảm toàn vẹn dữ liệu mà tập trung vào các thao tác. Thao tác nào là bất hợp lệ sẽ bị hủy bỏ ngay. Chống người sử dụng không được ủy quyền: ở cách tiếp cận này lại tập trung vào quản lý người dùng. Xác định người dùng và các vai trò của họ trong hệ thống cứ không quan tâm đến đảm bảo dữ liệu hay quản lý các thao tác của người dùng. b. Phân tầng các cơ chế an toàn (Layer of security mechanism) Một vấn đề quan trọng trong việc thiết kế một hệ thống an toàn là quyết định xem cơ chế an toàn an ninh được đặt ở tầng nào. Việc xác định vị trí đặt đó phụ thuộc rất nhiều vào yêu cầu của client về các dịch vụ an toàn, an ninh của từng tầng. Trong một hệ phân tán, cơ chế an toàn, an ninh được đặt ở tầng middleware. Phân tán các cơ chế an toàn (Distribution of security mechanism) Xét khái niệm TCB (Trusted Computing Base): là tập hợp tất cả các cơ chế an toàn, an ninh trong hệ phân tán, các cơ chế này phải tuân theo một ràng buộc an toàn nào đó. 8.1.3 Mật mã (Cryptography) Một cơ chế an toàn, an ninh cơ bản trong hệ phân tán đó là mã mật. Tư tưởng cơ bản là: bên gửi mã hóa bản tin cần truyền, truyền bản tin đã mã hóa đi, bên nhận sẽ giải mã bản tin nhận được thành bản tin ban đầu. Bản tin ban đầu là P. Khóa mã hóa là Ek. Bản tin được mã hóa theo khóa Ek là C: C=Ek(P). Khóa giải mã là Dk. Bản tin được giải mã theo khóa giải mã: P=Dk(C). Có hai loại hệ thống mật mã: mật mã đối xứng (symmetric cryptosystem) và mật mã bất đối xứng (asymmetric cryptosystem). Mật mã đối xứng: dùng khóa bí mật.. Với mật mã đối xứng: khóa mã hóa và khóa giải mã là giống nhau. Mật mã bất đối xứng: dùng khóa công khai. Mật mã bất đối xứng: khóa mã hóa và khóa giải mã là khác nhau. Ta có: 8.2 Kênh an toàn (Secure channels) 8.2.1 Xác thực (Authentication) a. Xác thực dựa trên khóa bí mật. Nguyên lý chung: bên gửi muốn giao tiếp với bên nhận sẽ gửi một yêu cầu A tới bên nhận. Bên nhận trả lời bằng một yêu cầu RB . Bên gửi sẽ mã hóa yêu cầu RB bằng khóa bí mật KA,B và gửi về cho bên nhận. Bên nhận xác thực được bên gửi nhờ nhận biết được yêu cầu RB mình đã gửi trong gói tin vừa nhận. Lúc này bên gửi muốn xác thực bên nhận sẽ tiếp tục gửi yêu cầu RA tới bên nhận. Bên nhận sẽ lại mã hóa RA bằng khóa bí mật KA,B đó và gửi về cho bên nhận. Và như thế bên nhận đã xác định được bên gửi, sau đó quá trình trao đổi sẽ được thực hiện. Hình 26 Xác thực dựa trên khóa bí mật Một mô hình cải tiến hơn là thu gọn số lượng bản tin chỉ còn lại 3 bản tin giữa bên nhận và bên gửi. b. Xác thực dựa trên trung tâm phân phối khóa Nếu hệ thống gồm N host, mỗi host phải chia sẻ một khóa mật với N-1 host khác thì hệ thống cần quản lý N.(N-1)/2 khóa, và mỗi host phải quản lý N-1 khóa. Như vậy nếu N lớn sẽ rất khó khăn trong việc quản lý. Do đó, để khắc phục hiện tượng trên ta sử dụng trung tâm phân phối khóa KDC (Key Distribution Center). Tư tưởng chính: bên gửi sẽ gửi bản tin tới trung tâm phân phối khóa thông báo mình muốn giao tiếp với bên nhận. KDC sẽ gửi cho cả bên gửi và bên nhận một bản tin có chứa khóa bí mật KA,B . Bản tin gửi cho bên nhận sẽ được mã hóa bằng KA,KDC . Bản tin gửi cho bên gửi sẽ được mã hóa bằng KB,KDC . Cách tiếp cận thứ hai là KDC sẽ gửi cả hai bản tin chứa khóa bí mật KA,KDC (KA,B ) và KB,KDC (KA,B ) cho bên gửi và bên gửi có nhiệm vụ gửi cho bên nhận khóa đã được KDC mã hóa KB,KDC (KA,B ) đó. c. Xác thực dựa trên khóa công khai. Hình 27. Xác thực dựa trên khóa công khai. Bên gửi mã hóa yêu cầu bằng khóa công khai K+B của bên nhận. Bên nhận này là nơi duy nhất có thể giải mã bản tin đó bằng K-B. Bên nhận sẽ mã hóa yêu cầu của bên gửi cùng với yêu cầu của chính mình và khóa KA,B vừa tạo ra bằng khóa công khai K+A của bên gửi nhằm xác thực bên gửi. Cuối cùng, bên gửi sẽ gửi lại cho bên nhận yêu cầu RB của bên nhận đã gửi đi để xác thực. 8.2.2 Tính toàn vẹn và tính mật của thông điệp. a. Chữ kí số Chữ kí số để đảm bảo tính toàn vẹn của thông điệp.Có nhiều cách thiết lập chữ kí số cho thông điệp: Cách 1: dùng hệ mật mã khóa công khai là RSA. Cách 2: dùng hàm băm. b. Khóa phiên Trong một kênh trao đổi an toàn, sau pha xác thực sẽ tiến hành truyền thông. Mỗi kênh truyền thông đó được xác định bởi một khóa phiên tương ứng. Khi phiên truyền kết thúc thì khóa phiên tương ứng cũng bị hủy bỏ. 8.2.3 Truyền thông nhóm an toàn a. Truyền thông nhóm bí mật Mô hình đơn giản là tất cả các thành viên trong nhóm sẽ cùng có một khóa bí mật để mã hóa và giải mã các bản tin. Điều kiện tiên quyết cho mô hình này là phải đảm bảo rằng tất cả các thành viên trong nhóm phỉa giữ bia mật khóa đó. Mô hình thứ hai là dùng một khóa bí mật cho từng cặp thành viên trong nhóm. Khi một trong hai thành viên kết thúc phiên truyền thì thành viên còn lại vẫn sẽ dùng khóa đó để giao tiếp với thành viên khác trong nhóm. Với mô hình này phải duy trì tới N (N-1)/2 khóa. Mô hình thứ ba là dùng khóa công khai. Mỗi một thành viên trong nhóm sẽ phải duy trì một cặp khóa công khai và khóa riêng, trong đó khóa công khai được dùng bởi tất cả thành viên trong nhóm. b. Server nhân bản an toàn Việc nhân bản các server thường dùng trong việc chịu lỗi cho hệ phân tán nhưng đôi khi cũng được dùng để đảm bảo tính tin cậy cho hệ thống. 8.3 Kiểm soát truy nhập (Access Control) 8.3.1 Các khía cạnh tổng quát trong kiểm soát truy cập a. Ma trận kiểm soát truy cập (Access Control Matrix) Trong ma trận điều khiển truy cập, một hàng biểu diễn cho một chủ thể (subject), một cột biểu diễn cho một đối tượng (object). Gọi ma trận kiểm soát truy nhập là M. M[s,o]: đưa ra danh sách các phép toán mà chủ thể s có thể yêu cầu trên đối tượng o. Khi một chủ thể s gọi một phương thức m của đối tượng o thì monitor sẽ kiểm tra trong danh sách M[s,o], nếu m không có trong danh sách này thì lời triệu gọi bị hủy bỏ. b. Danh sách kiểm soát truy cập (Access Control List) Mỗi một đối tượng sẽ duy trì một danh sách các truy cập hợp lệ của các chủ thể muốn truy cập nó gọi là ACL nhờ đó tránh được sự tồn

Các file đính kèm theo tài liệu này:

  • docDAN268.doc