Tiểu Luận Nguyên Lý Và Mô Thức Phát Triển Hệ Phân Tán

22 659 0
Tiểu Luận Nguyên Lý Và Mô Thức Phát Triển Hệ Phân Tán

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Hệ Phân Tán Có Khả Năng Chịu Lỗi Nhóm 16 TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG TIỂU LUẬN Môn: Nguyên lý mô thức phát triển hệ phân tán Tên đề tài: Bài toán Xây dựng hệ phân tán có khả chịu lỗi Giảng viên: TS Nguyễn Thị Hương Giang Nhóm Học viên thực hiện: HÀ NỘI 2013 1 Hoàng Văn Hồng Trần Trung Hiếu Nguyễn Công Trinh Lâm Văn Lợi Hệ Phân Tán Có Khả Năng Chịu Lỗi Nhóm 16 MỤC LỤC MỤC LỤC Định Nghĩa Mục Tiêu Của Hệ Phân Tán a Kết nối người sử dụng tài nguyên .4 b Tính suốt c.Tính mở (Openness) II TÍNH CHỊU LỖI VÀ MỘT SỐ KHÁI NIỆM LIÊN QUAN Các khái niệm Phân loại lỗi III CÁC PHƯƠNG PHÁP CHE DẤU LỖI Che dấu lỗi phương pháp dư thừa Khôi phục tiến trình .9 a Các vấn đề thiết kế b Che giấu lỗi nhân 11 Che dấu lỗi truyền thông Client/Server tin cậy 11 a Truyền thông điểm - điểm .11 b RPC xảy lỗi cách khắc phục .12 Che dấu lỗi truyền thông nhóm tin cậy (dùng Multicasting) .14 a Multicasting tin cậy (Basic Reliable-multicasting) .14 b Multicast tin cậy mở rộng .15 c Multicast nguyên tử (Atomic multicast) 16 IV CAM KẾT PHÂN TÁN 17 Cam kết hai pha 17 Hệ Phân Tán Có Khả Năng Chịu Lỗi Nhóm 16 a Kiến trúc cam kết hai pha 18 b Kiểm soát lỗi 18 Cam kết ba pha 20 V CÁC PHƯƠNG PHÁP PHỤC HỒI LỖI 20 Phục hồi lùi 20 Phục hồi tiến 21 TÀI LIỆU THAM KHẢO 22 I GIỚI THIỆU HỆ PHÂN TÁN Định Nghĩa Có nhiều định nghĩa hệ phân tán Định nghĩa 1: “A system in which hardware or software components located at networked computer communicate and coordinate their actions only by message passing.” [Coulouris] Hệ phân tán hệ thống mà phần cứng phần mềm đặt máy tính nối mạng giao tiếp phối hợp với hành động chúng qua tin nhắn Định nghĩa 2: “A distributed system is a collection of independent computer that appear to the users of the system as a single computer.” [Tanenbaum] Hệ phân tán tập máy tính độc lập giao tiếp với người dùng hệ thống thống nhất, toàn vẹn Định nghĩa 3: “A distributed system is one on which I cannot get work done because some machine I have never heard of has crashed.”[Leslie Lamport] Như vậy, nói: Hệ phân tán = mạng máy tính + phần mềm hệ phân tán Phân loại hệ phân tán: Trước đây, hệ phân tán chia thành ba loại : - Hệ điều hành hệ phân tán - Cơ sở liệu hệ phân tán - Các hệ thống tính toán hệ phân tán Ngày nay, hệ phân tán phân chia sau: Hệ Phân Tán Có Khả Năng Chịu Lỗi Nhóm 16 - Hệ phân tán mang tính hệ thống: hệ điều hành phân tán - Hệ phân tán mang tính ứng dụng: hệ thống truyền tin phân tán Mục Tiêu Của Hệ Phân Tán a Kết nối người sử dụng tài nguyên Giải toán chia sẻ tài nguyên hệ thống (resource sharing) b Tính suốt Ẩn giấu rời rạc nhược điểm có hệ phân tán người sử dụng (end-user) nhà lập trình ứng dụng (application programmer) Theo tiêu chuẩn ISO cho hệ phân tán ISO / IS / 10746 tên “Open distributed processing reference model” 1995 cụ thể hóa tám dạng suốt : - Trong suốt truy cập (Access transparency):che giấu vị trí tài nguyên - Trong suốt vị trí (Location transparency):che giấu vị trí tài nguyên.Hai dạng suốt vừa trình bày gọi chung suốt mạng(network transparency) - Trong suốt di trú (Migration transparency):Che giấu tình trạng sử dụng tài nguyên - Trong suốt việc định vị lại (Relocation transparency):che giấu việc di chuyển tài nguyên sử dụng - Trong suốt nhân bản(Replication transparency ):che giấu tình trạng sử dụng tài nguyen - Che giấu chia sẻ tài nguyên tương tranh(Concurency transparency ) - Trong suốt cố(Failure transparency):che giấu lỗi hệ thống có - Trong suốt khả di chuyển tài nguyên (Persistence transparency):che giấu việc di chuyenr tài nguyên từ nhớ vào nhớ ngược lại c.Tính mở (Openness) - Hệ phân tán mở : có khả tương tác với dịch vụ hệ thống mở khác cung cấp mà không phụ thuộc vào môi trường kết nối : + Hệ thống phù hợp với giao diện định nghĩa rõ ràng + Hệ thống hỗ trợ tính khả chuyển ứng dụng Hệ Phân Tán Có Khả Năng Chịu Lỗi Nhóm 16 + Hệ thống dễ tương thao tác - Để đạt tính mở :Làm cho hệ phân tán độc lập với tính không môi trường kết nối + Phần cứng + Nền tảng + Ngôn ngữ - Phân tác sách kỹ thuật : sử dụng nhớ đệm - Một hệ phân tán gọi có tính co giãn thích nghi với thay đổi quy mô hệ thống.Thể khía cạnh sau : - Dễ bổ sung người sử dụng tài nguyên hệ thống - Khi hệ thống thay đổi quy mô mặt địa lý dẫn đến thay đổi vị trí địa lý người sử dụng tài nguyên - Hệ thống có thay đổi quy mô quản trị - Nếu hệ phân tán có tính co giãn thường ảnh hưởng đến hiệu hệ thống (hiệu hệ thống hiệu lực hoạt động đối tượng) - Có ba giải pháp phổ dụng để giải vấn đề co giãn hệ phân tán : + Ẩn giấu + Phân tán : Phân nhỏ thành phần hệ thống phân bố chúng phạm vi hệ thống (quản lý phân cấp).Ví dụn DNS xác định theo cách phân cấp tên miền lớn thành miền con.Với phương pháp giải vấn đề thêm người dùng hay tài nguyên vào hệ thống + Nhân : nhân thành phần hệ thống.Ví dụ tài nguyên liệu đặt vị trí khác hệ thống II TÍNH CHỊU LỖI VÀ MỘT SỐ KHÁI NIỆM LIÊN QUAN Các khái niệm Tính chịu lỗi liên quan nhiều tới khái niệm hệ tin cậy (dependable system) Thuật ngữ “có thể tin cậy được” bao gồm thuộc tính sau: - Tính sẵn sàng (availability): hệ thống có tính sẵn sàng hệ thống sẵn sàng hoạt động tốt thời điểm - Tính tin cậy (Reliability): hệ thống có tính tin cậy hệ thống có khả hoạt động thời gian dài mà không bị gián đoạn, không xảy lỗi Hệ Phân Tán Có Khả Năng Chịu Lỗi Nhóm 16 - Tính an toàn (Safety): hệ thống có tính an toàn hệ thống mà xảy lỗi không dẫn tới thảm họa Các hệ thống cần phải có độ an toàn cao hệ thống điều khiển - Khả bảo trì (Maintainability):hệ thống có khả bảo trì hệ thống có khả phục hồi lại sau có lỗi Nếu phục hồi diễn tự động nói hệ thống có tính sẵn sàng cao Tính chịu lỗi có liên quan tới khái niệm điều khiển lỗi (Fault control) Điều khiển lỗi bao gồm ngăn ngừa lỗi, loại bỏ lỗi dự báo lỗi với mục tiêu xây dựng thành công khả chịu lỗi cho hệ thống Phân loại lỗi Lỗi phân chia thành loại sau: Theo tần suất xuất : - Lỗi thời (Transient faults): Là loại lỗi xuất lần biến Cách khắc phục: thực lại hoạt động có lỗi - Lỗi lặp (Intermittent faults): Là loại lỗi mà chúng xuất hiện, biến mất, sau lại xuất lại tiếp tục Lỗi thường gây hậu trầm trọng chúng khó xác định Cách khắc phục: sử dụng sửa lỗi cho hệ thống (fault doctor) để khắc phục lỗi - Lỗi lâu dài (Permanent faults):Là loại lỗi tồn thành phần gây lỗi sửa chữa Theo kết đầu : - Lỗi Fail-silent (fail-stop): Thành phần gây lỗi ngừng hoạt động,không trả kết kết trả lỗi - Lỗi Byzatine :Thành phần gây lỗi tiếp tục hoạt động tạo kết sai Các mô hình lỗi - Lỗi sụp đổ (crash failure): server gặp lỗi bị treo, trước server hoạt động tốt ngừng hoạt động Khi server gặp lỗi này, làm Một ví dụ hay gặp lỗi hệ điều hành máy cá nhân Khi hệ điều hành ngừng hoạt động cách khởi động lại - Lỗi bỏ sót (omission failure): lỗi mà server đáp ứng yêu cầu gửi tới Người ta chia thành hai loại: Lỗi nhận thông điệp gửi tới: gặp lỗi này, server không nhận yêu cầu từ client gần kết nối server với client Hệ Phân Tán Có Khả Năng Chịu Lỗi Nhóm 16 thiết lập Lỗi nhận thông điệp làm cho server không nhận biết thông điệp gửi tới mà không ảnh hưởng đến trạng thái server Lỗi gửi thông điệp: server nhận yêu cầu, hoàn thành yêu cầu lý lại gửi kết tới máy yêu cầu Một lý thường gặp nhớ đệm gửi đầy Trong trường hợp gặp lỗi này, server cần chuẩn bị tình clien gửi lại yêu cầu gửi - Lỗi thời gian (timing failure): lỗi xảy server phản ứng lại chậm, sau thời gian cho phép Trong hệ thống có ràng buộc mặt thời gian Nếu bên gửi gửi đến bên nhận nhanh quá, nhớ đệm bên nhận không đủ để chứa gây lỗi Tương tự, server phản ứng lại chậm quá, vượt khoảng timeout quy định sẵn gây lỗi, ảnh hưởng đến hiệu chung hệ thống - Lỗi đáp ứng (Response failure): lỗi server trả lời không Đây kiểu lỗi ngiêm trọng phân chia thành hai loại: Lỗi mặt giá trị: lỗi server trả lời lại yêu cầu client với giá trị không xác Ví dụ sử dụng máy tìm kiếm, kết trả không liên quan tới yêu cầu người sử dụng Lỗi chuyển trạng thái: lỗi server hoạt động trệch hướng khỏi luồng điều khiển Có nghĩa server trả lời yêu cầu gửi tới cách không theo mong đợi - Lỗi (Arbitrary failure): server tạo lỗi thời gian Đây loại lỗi nguy hiểm Có thể có hai khả xảy ra: Thứ nhất: server tạo kết sai mà phát Thứ hai: server bị lỗi có liên kết với server khác tạo kết sai Ta xét vào lỗi hay gặp sau : lỗi fail-stop, lỗi fail-silent lỗi fail-safe Với fail-stop, server bị treo, ngừng hoạt động có thông báo tới tiến trình khác Với fail-silent, server đột ngột hoạt động chậm lại làm cho tiến trình kết thúc được, ảnh hưởng đến hiệu hệ thống Lỗi fail-safe lỗi mà server tạo kết ngẫu nhiên tiến trình nhận dạng kết giá trị III CÁC PHƯƠNG PHÁP CHE DẤU LỖI Che dấu lỗi phương pháp dư thừa Một hệ thống xem có khả chịu lỗi, phải có khả che giấu lỗi xảy với tiến trình khác Kỹ thuật để che giấu lỗi sử dụng dư thừa Có loại thực là: information redundancy, time redundancy, physical redundancy Hệ Phân Tán Có Khả Năng Chịu Lỗi Nhóm 16 Information redundancy: dùng số bit dư thừa thêm vào phép phục hồi lại liệu từ liệu lỗi Chẳng hạn Hamming code thêm vào liệu truyền để bù lại nhiễu đường truyền Time redundancy: hành động thực hiện, sau đó, cần thiết thực lại lần Với giao dịch sử dụng phương pháp này, giao dịch bị bỏ qua, thực lại mà tổn hại Time redundancy tỏ rõ tính hữu ích lỗi tạm thời không liên tục Physical redundancy: tến trình thiết bị dự phòng thêm vào giúp cho hệ thống hoàn thiện để chống lại việc thiếu hoạt động sai chức số thiết bị Do physical redundancy thực dựa theo phần cứng phần mềm Chẳng hạn tiến trình dự phòng thêm vào hệ thống để phòng trường hợp có số nhỏ số chúng gặp vấn đề, hệ thống hoạt động xác Nói theo cách khác, với việc chép tiến trình, hệ thống đạt khả chịu lỗi cao Hình 1: Thiết kế "Triple Modular ređunancy" Minh họa áp dụng physical redundancy hình Theo hình 1-a tín hiệu qua A, B, C theo thứ tự Nếu thiết bị bị lỗi, kết cuối không xác Trong hình 1-b, thiết bị chép lại thành Tín hiệu lúc không qua thiết bị A mà qua thiết bị A1, A2, A3 giống hệt thiết bị A Các tín hiệu output đưa so sánh V1, V2, V3 Mỗi mạch so sánh so sánh tín hiệu A1, A2, A3 output qua thiết bị giống lấy tín hiệu đó, cón tín hiệu khác output không xác định Thiết kế gọi TMR (Triple Modular Redundancy) Giả sử thiết bị Az bị lỗi, thiết bị khác hoạt động hệ thống đáng tin cậy Về chất, việc Az bị lỗi hoàn toàn che đậy, tín hiệu input cho B1, B2, B3 xác trường hợp Az không bị lỗi Hệ Phân Tán Có Khả Năng Chịu Lỗi Nhóm 16 Trường hợp B3 C1 bị lỗi sao? Sự tác động che dấu tốt hệ thống hoạt động bình thường Một điều tại modul phải có đến voter? Các voter thiết bị có khả xảy lỗi Việc thiết kế voter nhằm mục đích thiết bị hỏng không ảnh hưởng đến hoạt động hệ thống Dù tất hệ phân tán có khả chịu lỗi sử dụng TMR kỹ thuật phổ biến để cung cấp nhìn rõ ràng hệ thống có khả chịu lỗi Khôi phục tiến trình a Các vấn đề thiết kế Nguyên tắc: tổ chức tiến trình giống vào nhóm Hoạt động: nhóm nhận thông báo thông báo gửi tới tất thành viên nhóm Nếu có tiến trình nhóm bị lỗi có tiến trình khác thay thể Đặc điểm: nhóm động Tính động thể mặt sau: Số lượng tiến trình nhóm không cố định: tiến trình gia nhập hay rời khỏi nhóm - Số lượng nhóm không cố định: tạo thêm hay hủy bỏ - Một tiến trình thành viên nhiều nhóm thời điểm nhóm Do tính động mà cần phải đưa chế quản lý nhóm: quản lý mối quan hệ nhóm quản lý thành viên nhóm Phân loại nhóm: dựa cấu trúc bên nhóm phân thành hai loại: Nhóm ngang hàng: - Tất tiến trình nhóm ngang hàng - Khi thực công việc phải có trình bầu cử (vote) để xác định xem tiến trình phù hợp để thực công việc - Ưu điểm: tiến trình bị lỗi làm cho kích thước nhóm giảm không ảnh hưởng đến hoạt động nhóm - Nhược điểm: phải có trình bầu cử nên tốn thời gian (delay &overhead) Hệ Phân Tán Có Khả Năng Chịu Lỗi Nhóm 16 Hình 2: Nhóm ngang hàng Nhóm phân cấp: - Trong nhóm có tiến trình giữ vai trò quản lý gọi coordinator, tiến trình khác đóng vai trò thực (worker) Các tiến trình thực chịu điều khiển coordinator - Khi có yêu cầu gửi đến nhóm, yêu cầu gửi tới coordinator Coordinator định xem tiến trình nhóm đảm nhiệm công việc cách phù hợp chuyển yêu cầu nhận đến tiến trình - Ưu điểm: không bị trễ kiến trúc ngang hàng - Nhược điểm: coordinator gặp cố toàn hoạt động nhóm bị dừng lại Hình 3: Nhóm ngang hàng Các phương pháp quản lý thành viên nhóm: Phương pháp 1: dùng server gọi group server 10 Hệ Phân Tán Có Khả Năng Chịu Lỗi Nhóm 16 Server chứa tất thông tin nhóm thành viên nhóm Ưu điểm: hiệu quả, dễ sử dụng Nhược điểm: server bị lỗi quản lý toàn hệ thống nhóm phải xây dựng lại từ đầu công việc thực Phương pháp 2: phương pháp phân tán Khi tiến trình muốn gia nhập hay rời khỏi nhóm phải gửi tin thông báo tới tất tiến trình khác Phương pháp 3: yêu cầu việc gia nhập/ rời khỏi nhóm phải đồng với tin gửi hay nhận Khi tiến trình gia nhập nhóm nhận tất tin từ nhóm đó.Khi tiến trình rời khỏi nhóm không nhận tin từ nhóm không thành viên nhóm cũ nhận tin từ b Che giấu lỗi nhân Có hai phương pháp nhân : giao thức primary-based giao thức replicated-write Bằng giao thức primary-based: Các tiến trình nhóm tổ chức theo mô hình phân cấp Nếu coordinator nhóm dừng hoạt động coordinator nhóm lưu thực giải thuật để lựa chộn nhóm (mặc dù đảm nhiệm công việc đó) Bằng giao thức replicated-write : Các tiến trình nhóm tổ chức theo mô hình nhóm ngang hàng.Vấn đề cần nhân với số lượng Che dấu lỗi truyền thông Client/Server tin cậy Việc che giấu lỗi hệ phân tán tập trung vào trường hợp có tiến trình bị lỗi Nhưng ta phải xét đến trường hợp giao tiếp bị lỗi Thông thường, kênh giao tiếp gặp lỗi: lỗi sụp đổ, lỗi bỏ sót, lỗi thời gian lỗi tùy ý Việc xây dựng kênh truyền thông tập trung vào che giấu lỗi sụp đổ lỗi tùy ý a Truyền thông điểm - điểm Trong hệ phân tán, truyền thông điểm – điểm tin cậy thiết lập cách sử dụng giao thức truyền tin cậy TCP TCP che giấu lỗi bỏ sót cách dùng chế thông báo ACK/NACK việc thực truyền lại TCP không che giấu lỗi sụp đổ Khi xảy lỗi sụp đổ kết nối TCP bị hủy Chỉ có 11 Hệ Phân Tán Có Khả Năng Chịu Lỗi Nhóm 16 cách để che giấu lỗi sụp đổ hệ thống phải có khả tự động tạo kết nối b RPC xảy lỗi cách khắc phục Với hệ thống RPC, năm lớp lỗi xảy là: Client định vị server: Nguyên nhân gây lỗi server client dùng phiên khác server bị lỗi Khắc phục cách sử dụng ngoại lệ (exception) để bắt lỗi ngôn ngữ java điều khiển tín hiệu (signal handle) ngôn ngữ C Hạn chế phương pháp ngôn ngữ hỗ trợ ngoại lệ hay điều khiển tín hiệu Nếu tự viết ngoại lệ hay điều khiển tín hiệu phá hủy tính suốt Bị tin yêu cầu từ client gửi đến server: Đây loại lỗi dễ xử lý nhất: hệ điều hành hay client stub kích hoạt đếm thời gian (timer) gửi yêu cầu Khi timer trở giá trị mà không nhận tin phản hồi từ server gửi lại yêu cầu Nếu bên client nhận thấy có nhiều yêu cầu phải gửi lại xác nhận server không hoạt động quay lại thành kiểu lỗi “không định vị server” Server bị lỗi sau nhận yêu cầu từ client: Lúc lại phân chia thành hai loại: Loại 1: Sau thực xong yêu cầu nhận server bị lỗi Phương pháp khắc phục: sau server gửi thông báo hỏng cho client Loại 2: Vừa nhận yêu cầu từ client server bị lỗi Phương pháp khắc phục: client cần truyền lại yêu cầu cho Vấn đề đặt lúc client nói cho server biết yêu cầu yêu cầu gửi lại Khi gặp lỗi kiểu này, phía máy server thực theo kĩ thuật sau: Kĩ thuật 1: đợi đến server hoạt động trở lại, cố thực yêu cầu nhận trước lỗi Như RPC thực lần 12 Hệ Phân Tán Có Khả Năng Chịu Lỗi Nhóm 16 Kĩ thuật 2: server sau khôi phục không thực yêu cầu nhận trước bị lỗi mà gửi lại thông báo hỏng cho client biết để client gửi lại yêu cầu Với kĩ thuật RPC thực nhiều lần Kĩ thuật 3: không thực để đảm bảo Khi server bị lỗi, client không hay biết Kiểu này, RPC thực nhiều lần không thực lần Còn client thực theo chiến lược sau: Một là: Client không thực gửi lại yêu cầu Vì yêu cầu thực không thực Hai là: Client liên tục gửi lại yêu cầu: dẫn tới trường hợp yêu cầu thực nhiều lần Ba là: Client gửi lại yêu cầu không nhận tin ACK phản hồi từ server thông báo nhận thành công Trường hợp này, server dùng đếm thời gian Sau khoảng thời gian xác định trước mà không nhận ACK client gửi lại yêu cầu Bốn là: Client gửi lại yêu cầu nhận thông báo hỏng từ server - Mất tin phản hồi từ server gửi trả client: Phương pháp khắc phục: thiết kế yêu cầu có đặc tính không thay đổi giá trị (idempotent) Client đánh số thứ tự cho yêu cầu, server nhận đâu yêu cầu gửi lại nhờ số tứ tự Do server không thực lặp lại yêu cầu Tuy nhiên server phải gửi trả tin thông báo yêu cầu bị thất lạc Hoặc ta sử dụng bit phần header yêu cầu để phân biệt yêu cầu yêu cầu gửi lại - Client bị lỗi sau gửi yêu cầu tới server: Client gửi yêu cầu tới server bị lỗi trước nhận trả lới từ server gửi Công việc mà server thực đích đợi để nhận gọi “orphan” Như gây lãng phí chu kì CPU Có giải pháp đưa trường hợp là: Một là: trước gửi yêu cầu đó, client stub tạo ghi xác định công việc cần thực lưu lại Như thế, phục hồi sau lỗi, client lấy lại ghi và việc thực orphan diễn dừng lại Phương pháp có nhiểu nhược điểm: Chi phí để trang bị đĩa để lưu lại ghi cho RPC Orphan tự thực RPC tạo grandorphan nên khó xác định Hai là: chia thời gian hoạt động liên tục client thành số liên tục gọi thời kì Mỗi clietn khôi phục trở lại số thời kì lại tăng lên đơn vị Lúc clietn gửi thông báo đến tất máy khác thông báo số thời kì Khi nhận dược thông báo orphan dừng lại 13 Hệ Phân Tán Có Khả Năng Chịu Lỗi Nhóm 16 Ba là: nhận tin thông báo thời kì mới, máy kiểm tra xem có thực tính toán từ xa không Nếu có, máy cố xác định xem client gửi yêu cầu Nếu không xác định trình tính toán bị hủy bỏ Bốn là: quy định RPC có khoảng thời gian xác định T để thực hiện, sau gặp lỗi, clietn phảo đợi thêm khoảng thời gian T trước khởi động lại để nhận orphan Vấn đế đặt phải lựa chọn giá trị T cho hợp lý Che dấu lỗi truyền thông nhóm tin cậy (dùng Multicasting) a Multicasting tin cậy (Basic Reliable-multicasting) Sau tiến trình phân nhóm tiến trình khác muốn thực multicast tức gửi tin tới tất tiến trình nhóm Multicast tin cậy phải có chế để đảm bảo tin đến tất thành viên nhóm Khi xảy lỗi áp dụng phương pháp sau để che giấu lỗi: Phương pháp: đánh số tin cần gửi Các tin lưu buffer bên gửi lưu nhận tin ACK báo từ bên nhận Nếu bên nhận xác định bị tin gửi tin NACK để yêu cầu gửi lại Và thông thường, bên gửi tự động gửi lại tin sau khoảng thời gian xác định mà không nhận tin ACK báo Hình 4: (a) Truyền tin; (b) Bản tin phản hồi 14 Hệ Phân Tán Có Khả Năng Chịu Lỗi Nhóm 16 b Multicast tin cậy mở rộng Để tăng hiệu công vệc làm việc với số lượng lớn tiến trình đưa mô hình multicast tin cậy mở rộng Với mô hình không gửi trả tin ACK báo nhận thành công mà gửi trả cho tiến trình nhận tin NACK thông báo có lỗi truyền.Việc thực giao thức SRM (Scalable Reliable Multicasting) Để thực multicast tin cậy cho nhóm lớn tiến trình thực tổ chức nhóm theo cấu trúc dạng Cấu trúc : - Gốc nhóm chứa tiến trình gửi - Các nút nhóm có chứa tiến trình nhận Hình 5: Multicast tin cậy dạng Việc thực multicast thực cho nhóm nhỏ Việc chia thành nhóm nhỏ cho phép sử dụng kịch multicast tin cậy cho nhóm nhỏ Trong nhóm nhỏ đề cử tiến trình làm coordinator Coodinator có khả điều khiển việc truyền lại nhận thông báo truyền lỗi Coodinator nhóm có đệm (history buffer) riêng - Nếu Coordinator nhóm không nhận tin m gửi yêu cầu truyền lại tới coordinator nút cha - Trong kịch truyền tin cậy sử dụng tin ACK coordinator nhận thành công tin m gửi tin ACK tới coordinator nút cha 15 Hệ Phân Tán Có Khả Năng Chịu Lỗi Nhóm 16 - Nếu coordinator nhóm nhận tin ACK báo nhận thành công tin m tất tiến trình nhóm gửi xóa tin m khỏi đệm Đánh giá: với phương pháp phân cáp xảy vấn đề cấu trúc Rất nhiều trường hợp yêu cầu phải có cấu trúc động nên phải có chế tìm đường cho c Multicast nguyên tử (Atomic multicast) Tư tưởng chính: tiến trình muốn gửi tin cho tập tiến trình khác theo kiểu multicast, không gửi tin tới tất tiến trình nhóm chứa tiến trình nhận mà gửi đến nhóm nhỏ tiến trình cần nhận tin Vấn đế đặt ra: phải đảm bảo gửi tin tới tất tiến trình nhóm không gửi tới tiến trình tiến trình nhóm bị lỗi sụp đổ Một số thuật ngữ: Group view (khung nhìn nhóm): ý tưởng atomic multicast tiến trình thực multicast tin m thực liên kết tới danh sách tiến trình cần nhận tin m toàn nhóm Danh sách tiến trình tương ứng với khung nhìn nhóm (group view)- tập nhỏ tiến trình nhóm lớn View change (thay đổi khung nhìn): thực multicast tới group view G mà có tiến trình xin gia nhập nhóm hay xin khỏi nhóm thay đổi vc gửi tới tất thành viên lại nhóm Do đó, tiến trình lại G nhận hai tin: m: tin cần nhận vc: tin thông báo có thay đổi G Nếu tất tiến trình G chưa nhận vc thao tác multicast tin m thực Nếu số tiến trình G nhận vc phảo đảm bảo không tiến trình khác G nhận m Đồng ảo (Virtual sychronous) Tư tưởng chính: đảm bảo tin multicast tới tất tiến trình lỗi Nếu tiến trình gửi bị sụp đổ trình multicast trình bị hủy dù tin gửi tới vài tiến trình khác nhóm 16 Hệ Phân Tán Có Khả Năng Chịu Lỗi Nhóm 16 Hình 6: Nguyên lý đồng ảo  P1 tham gia vào nhóm có sẵn ba thành viên: P2,P3, P4  P2 thực multicast tin tới tất tiến trình lại  P1 thực multicast tin tới tất tiến trình lại  P3 multicast tới tiến trình P2 , P4 thành công P1 chưa nhận P3 bị sụp đổ Lúc đồng ảo hủy tất tin gửi trước cho P2, P4, thiết lập trạng thái trước sụp đổ P3 chưa gửi tin dó  nhóm lúc P1, P2, P4 P4 thực multicast tin,  P3 khôi phục xin gia nhập lại nhóm + P3 gia nhập nhóm thành công IV CAM KẾT PHÂN TÁN Mô hình thiết lập cam kết phải mô hình phân cấp coordinator lãnh trách nhiệm thiết lập cam kết phân tán Ở cam kết pha đơn giản, coordinator thông báo với tất thành viên lại thực không thực thao tác Nếu thành viên không thực báo lại cho coordinator biết Do người ta đưa mô hình cam kết hai pha cam kết ba pha Cam kết hai pha Xét giao dịch phân tán với thành viên tập tiến trình chạy máy khác với giả thiết lỗi xảy 17 Hệ Phân Tán Có Khả Năng Chịu Lỗi Nhóm 16 a Kiến trúc cam kết hai pha Cam kết hai pha gồm hai: Pha bầu cử (voting phase ) pha định (Decision phase) Với pha bầu cử: bao gồm hai bước thực hiện: - Coordinator gửi tin thông báo yêu cầu bầu cử VOTE_REQUEST tới tất thành viên nhóm - Sau nhận tin VOTE_REQUEST coordinator, thực thành viên gửi lại cho coordinator thông báo chấp nhận bầu cử VOTE_COMMIT, không, gửi lại cho coordinator thông báo từ chối VOTE_ABORT Pha định: gồm hai bước thực hiện: - Coordinator tập hợp tất bầu cử thành viên Nếu tất đồng ý chấp nhận giao dịch coordinator gửi tin GLOBAL_COMMIT tới tất thành viên Tuy nhiên, cần thành viên gửi thông báo từ chối coordinator định hủy giao dịch gửi tin GLOBAL_ABORT cho tất thành viên nhóm - Các thành viên sau gửi thông báo chấp nhận tới coordinator đợi phản hồi từ coordinator Nếu nhận thông báo GLOBAL_COMMIT giao dịch chấp thuận, nhận GLOBAL_ABORT giao dịch bị hủy Các trạng thái coordinator là: INIT, WAIT, ABORT, COMMIT Còn trạng thái thành viên : INIT, READY, ABORT, COMMIT Hình 7: (a) Máy trạng thái hữu hạn cho coordinator cam kết pha (b) Máy trạng thái hữu hạn cho thành viên b Kiểm soát lỗi Để kiểm soát lỗi xảy hệ thống phân tán cần phân định loại lỗi, người ta phân loại lỗi sau: 18 Hệ Phân Tán Có Khả Năng Chịu Lỗi Nhóm 16 - Trạm bị lỗi: Các tiến trình cam kết kiểm tra ghi lại trạng thái trước xảy lỗi - Thời gian tín hiệu: Thời gian tối đa mà tín hiệu phản hồi từ thành viên đến hệ thống cam kết, vượt thời gian quy định hệ thống coi tiến trình bị lỗi - Lỗi đường truyền: Hệ thống hoàn toàn bình thường, tín hiệu gửi không đến tới đích Khả hệ thống kiểm soát dựa thời gian đợi (time out), tùy thuộc vào phía mà phía gửi thông báo lỗi Các trường hợp lỗi giải pháp: -Quá trình thực thi cam kết pha bị ảnh hưởng Server bị cố tin nhắn bị Khi đó, Server khác bị block khoảng thời gian dài để chờ Server gặp cố khôi phục hay tin nhắn gửi lại, điều dẫn tới hạng mục liệu liên quan đến Transaction không giải phóng cho Transaction khác truy cập thời gian dài Kỹ thuật Timeout sử dụng để giải số trường hợp lỗi sau: - Nếu Voting phase, Coordinator không nhận thông báo “Yes”/ “No” từ Participant khoảng thời gian định đưa định cuối Abort toàn Transaction - Nếu Voting phase, Participant sau rơi vào trạng thái Prepared Commit mà không nhận yêu cầu “CanCommit?”từ phía Coordinator khoảng thời gian định tự động Abort gửi thông báo Abort cho Coordinator Đặc biệt Pha kết thúc , Participant không nhận định cuối Commit hay Abort Coordinator gặp cố hay kết nối từ Coordinator Nếu việc khôi phục nhanh Participant gửi thông báo đến Coordinator yêu cầu gửi lại định (getDecision) Tuy nhiên, việc khôi phục bị trì hoãn thời gian dài hệ thống bị block tài nguyên không giải phóng Nhược điểm Nhược điểm cam kết hai pha: Nhược điểm cam kết hai pha tốn nhiều thời gian chờ đợi Cả coordinator thành viên lại phải chờ tin gửi đến cho Nhược điểm thứ hai coordinator bị lỗi hoạt động hệ thống bị ảnh hưởng 19 Hệ Phân Tán Có Khả Năng Chịu Lỗi Nhóm 16 Cam kết ba pha Để khắc phục nhược điểm cam kết hai pha trường hợp coordinator bị lỗi, người ta đưa mô hình cam kết ba pha Các trạng thái giống hai pha thêm trạng thái PRECOMMIT Hình 8: (a) Máy trạng thái hữu hạn cho coordinator cam kết pha (b) Máy trạng thái hữu hạn cho thành viên V CÁC PHƯƠNG PHÁP PHỤC HỒI LỖI Phục hồi phương pháp đưa trạng thái bị lỗi sang trạng thái lành (fault free) Có hai cách tiếp cận cho phục hồi lỗi: phục hồi lùi (back forward) phục hồi tiến (forward recovery) Phục hồi lùi Tư tưởng đưa trạng thái hệ thống thời điểm trạng thái thời điểm trước lỗi xảy Để làm điều đó, buộc ta cần thiết phải ghi lại trạng thái hệ thống thời điểm liên tục (time to time) Để thực giải thuât phục hồi tiến, hệ thống cần có chức lưu hệ thống, thời điểm lưu cần mà người ta gọi “checkpoint” Ví dụ: Hệ thống lưu (backup) tài liệu hệ thống (Hệ điều hành, hệ thống phần mềm,…) Khi xảy lỗi, sử dụng giải thuật lùi tức trước xảy lỗi hệ thống lưu, ta cần phục hồi hệ thống thời điểm muộn trước xảy lỗi Mỗi lưu, hệ thống lưu trữ thời gian lưu, checkpoint Nhược điểm: - Việc phục hồi lại hệ thống trạng thái trước phức tạp tốn - Với phương pháp backward đưa đảm bảo sau trở lại trạng thái trước lỗi, lỗi lại không tiếp tục xảy dẫn tới dễ bị rơi vào tình trạng loop recovery 20 Hệ Phân Tán Có Khả Năng Chịu Lỗi Nhóm 16 - Không phải lúc có trạng thái trước lỗi để ta quay lại (giống rút tiền, máy gặp cố, có hội quay lại trạng thái trước ấn nút rút để tiếp tục rút tiền) - Đưa hệ thống trạng thái trước với trạng thái tốt, song lỗi bị lặp lặp lại Phục hồi tiến Khi hệ thống rơi vào trạng thái lỗi, thay đưa hệ thống trở lại trạng thái trước lỗi phục hồi lùi, cách lại đưa hệ thống nhảy sang trạng thái mà hệ thống lại hoạt động bình thường Vấn đề phương pháp phải dự đoán trước lỗi xảy Chỉ có sẵn sàng chuyển hệ thống sang trạng thái Phương pháp phục hồi tiến áp dụng cho hệ thống có đặc tính riêng biệt, đặc thù 21 Hệ Phân Tán Có Khả Năng Chịu Lỗi Nhóm 16 TÀI LIỆU THAM KHẢO Distributed systems, george coulouris – jean dollimore – tim kindberg, pearson education, 2005 Introduction to Distributed Systems – Sabum.Thampi L.B.S Institute ò Technology for women Trivandrum, Kerala, India-695012 Bản dịch tiếng Việt “Introduction to Distributed Systems”-Nhóm sinh viên Đại Học Bách Khoa HN Fundamentals of Fault-Tolerant Distributed Computing in Asynchronous Environments FELIX C GÄRTNER, Darmstadt University of Technology An Adaptive Dependable Fault-Tolerant Scheme for Distributed Systems Jianhong Zhou- 2011 A Formal Model for Fault-Tolerance in Distributed Systems, Brahim Hamid and Mohamed Mosbah, LaBRI, ENSEIRB - University of Bordeaux-1, F-33405 Talence Cedex, France A Novel Fault-Tolerant Scheme for Distributed Systems, Xiaoqin Zhang, Zhidong Wei, Fenggui Zhang, Guoliang Liu 22

Ngày đăng: 14/04/2017, 10:20

Từ khóa liên quan

Mục lục

  • MỤC LỤC

    • 1 . Định Nghĩa

    • 2. Mục Tiêu Của Hệ Phân Tán

      • a. Kết nối người sử dụng tài nguyên

      • b. Tính trong suốt

      • c.Tính mở (Openness).

      • II. TÍNH CHỊU LỖI VÀ MỘT SỐ KHÁI NIỆM LIÊN QUAN

        • 1. Các khái niệm cơ bản

        • 2. Phân loại lỗi

        • III. CÁC PHƯƠNG PHÁP CHE DẤU LỖI

          • 1. Che dấu lỗi bằng phương pháp dư thừa

          • 2. Khôi phục tiến trình

            • a. Các vấn đề khi thiết kế.

            • b. Che giấu lỗi và nhân bản.

            • 3. Che dấu lỗi trong truyền thông Client/Server tin cậy

              • a. Truyền thông điểm - điểm

              • b. RPC khi xảy ra lỗi và cách khắc phục

              • 4. Che dấu lỗi trong truyền thông nhóm tin cậy (dùng Multicasting)

                • a. Multicasting tin cậy cơ bản (Basic Reliable-multicasting)

                • b. Multicast tin cậy mở rộng

                • c. Multicast nguyên tử (Atomic multicast)

                • IV. CAM KẾT PHÂN TÁN

                  • 1. Cam kết hai pha

                    • a. Kiến trúc cam kết hai pha

                    • b. Kiểm soát lỗi

                    • 2. Cam kết ba pha

                    • V. CÁC PHƯƠNG PHÁP PHỤC HỒI LỖI

                      • 1. Phục hồi lùi

                      • 2. Phục hồi tiến

                      • TÀI LIỆU THAM KHẢO

Tài liệu cùng người dùng

Tài liệu liên quan