TRƯỜNG ĐẠI HỌC THỦY LỢl KHOA CÔNG NGHỆ THÔNG TIN TS LÊ NGUYỄN TUẤN THÀNH TS LÝ ANH TUẤN BÀI GIẢNG LẬP TRÌNH PHÂN TÁN NHÀ XUẤT BẢN BÁCH KHOA HÀ NỘI TRƯỜNG ĐẠI HỌC THỦY LỢI KHOA CÔNG NGHỆ THÔNG TIN TS L[.]
TRƯỜNG ĐẠI HỌC THỦY LỢl KHOA CÔNG NGHỆ THÔNG TIN TS LÊ NGUYỄN TUẤN THÀNH-TS LÝ ANH TUẤN BÀI GIẢNG LẬP TRÌNH PHÂN TÁN NHÀ XUẤT BẢN BÁCH KHOA HÀ NỘI TRƯỜNG ĐẠI HỌC THỦY LỢI KHOA CÔNG NGHỆ THÔNG TIN TS LÊ NGUYỄN TUẤN THÀNH - TS LÝ ANH TUẤN BÀI GIẢNG LẬP TRÌNH PHÂN TÁN NHÀ XUẤT BẢN BÁCH KHOA HÀ NỘI Biên mục xuất phẩm Thư viện Quốc gia Việt Nam Lê Nguyễn Tuấn Thành Bài giảng Lập trình phân tán / Lê Nguyễn Tuấn Thành, Lý Anh Tuấn - H : Bách khoa Hà Nội, 2022 - 184 tr : hình vẽ, bảng ; 27 cm ĐTTS ghi: Trường Đại học Thuỷ lợi Khoa Cơng nghệ thơng tin Lập trình phân tán Bài giảng 005.2760711 - dc23 BKH0129p-CIP LỜI NÓI ĐÀU Sự phổ biến xử lý đa nhân mang lại ảnh hường lan tôa, thay đổi cách tư phát triển hệ thống phần mềm Trước đây, tiến công nghệ thường mang ý nghĩa ám tiến phần cứng, tốc độ xung nhịp đồng hồ Từ đó, phần mềm tự nhiên “tăng tốc” hiệu theo thời gian Tuy nhiên, quan điểm dần thay đối Giờ đây, tiến cơng nghệ mang ý nghĩa việc tăng tính song song chương trình, mà khơng cịn đơn tăng tốc độ xung nhịp đồng hồ Khai thác tính song song thách thức bật ngành Khoa học Máy tính đại Các ứng dụng đa luồng đem lại nhiều lợi ích, giúp tận dụng xử lý đa nhân nhằm tăng tốc độ tính tốn chương trình Một số ứng dụng tận dụng thêm xử lý đồ họa (GPU) để tính tốn hiệu cao dựa vào số lượng nhân lớn GPU Phát triến hệ thống có tính song song phân tán yêu cầu sử dụng công cụ kỹ thuật khác với việc phát triển phần mềm truyền thống Bài gỉảng Lập trình Phân tán hướng tới trang bị cho sinh viên kiến thức tảng, tốn kỹ lập trình đồng thời phân tán Bài giảng sử dụng làm tài liệu giảng dạy thức cho mơn “Lập trình Phân tán”, ngành học thuộc Khoa Cơng nghệ Thông tin, Trường Đại học Thủy lợi Bài giảng biên soạn phần lớn dựa sách “Concurrent and Distributed Computing in Java” tác giả Vijay K Garg [1], xuất năm 2004, kết hợp với kiến thức trình giảng dạy nhiều năm Nội dung giảng bố cục sau: Chương Cung cấp kiến thức tổng quan, thuật ngữ liên quan đến hệ thống đồng thời phân tán Dựa đặc điểm hệ thống đồng thời phân tán, chương đưa khó khăn tảng thiết kế thuật toán cho hệ thống Cuối cùng, tìm hiểu cấu trúc để làm việc với Luồng ngơn ngữ lập trình Chương Thảo luận toán loại trừ lẫn ứng dụng đồng thời, sử dụng chế chia sẻ nhớ Tiếp theo, số giải pháp phần mềm, tức là, thuật tốn sử dụng vịng lặp, cho tốn loại trừ lẫn trình bày phân tích Chương cung cấp thúc đẩy cho nhiều thành phần đồng hóa thảo luận chương 3 Chương Giới thiệu hai số nhiều cấu trúc đồng hóa, Semaphore Monitor, giúp giải vấn đề bận chờ giải pháp cho toán loại trừ lẫn đề cập chương Các cấu trúc sử dụng để giải số toán đồng khác Chương Thảo luận số kỹ thuật lập trình phân tán, để phát triển ứng dụng phân tán, Socket, RMI, RPC MOM Chương điều kiện tiên để hiểu toán miêu tả chương sau Chương Giới thiệu toán tảng hệ thống phân tán: toán xác định thứ tự kiện trạng thái xảy tính tốn phân tán Các chế đồng hồ, phát triển dựa mơ hình - xảy - - trước, sử dụng để gắn dấu thời gian cho kiện trạng thái tính tốn phân tán Chương Thảo luận toán quan tâm hệ thống phân tán: toán truy cập tài nguyên chia sẻ hay toán loại trừ lẫn tiến trình Chương cung cấp giao diện Lock thảo luận số thuật toán để triển khai giao diện Chương Trình bày tốn thứ tự thơng điệp hệ thống phân tán Trong chương này, thảo luận thứ tự FIFO, thứ tự nhân quả, thứ tự đồng cho thông điệp đơn hướng thứ tự tồn cho thơng điệp đa hướng Các thuật toán tương ứng để đảm bảo thứ tự đề xuất phân tích Chương Thảo luận toán đồng thuận hệ thống phân tán Neu chương trước giả định khơng có lỗi hệ thống phân tán, chương phân tích tính khả thi (hoặc tính bất khả thi) việc giải toán với xuất nhiều kiểu lỗi khác Chương đề cập đến kết bất khả thi Fischer, Lynch, Paterson Chương tốn đồng thuận giải môi trường đồng với lỗi Byzantine lỗi sụp đổ Nó thảo luận khả giải toán trường hợp thiếu giao tiếp tin cậy Trong trình biên soạn sách, cố gắng tránh thiếu sót, tác giả mong nhận ý kiến đống góp bạn đọc để sách hoàn thiện Xin trân trọng cảm ơn! Các tác giả MỤC LỤC LỜI NÓI ĐẦU Danh mục hình vẽ Danh mục bảng biếu 11 Danh mục định nghĩa 12 Danh mục chương trình 13 Bảng giải thuật ngữ 15 Chương NHỮNG KIÉN THỨC NÈN TẢNG 17 1.1 Giới thiệu tính tốn đồng thịi phân tán 18 1.2 Đặc điểm hệ thống đồng thòi phân tán 20 1.3 Sự tăng tốc ứng dụng đồng thòi 22 1.4 Các thách thức chương trình đồng thời phân tán 24 1.5 So sánh hệ thống đồng thòi hệ thống phân tán 24 1.6 Các mục tiêu thiết kế 26 1.7 Các thuật ngũ’ 27 1.7.1 Chương trình, tiến trình luồng 27 1.7.2 Sự đan xen 29 1.7.3 Trạng thái đua tranh 30 1.7.4 Đồng bất đồng 32 1.7.5 Bị chặn không bị chận 32 1.7.6 Sự bế tắc, chết đói khóa sống 32 1.8 Lập trình đa luồng 34 1.8.1 Lập trình đa luồng Java 34 1.8.2 Lập trình đa luồng ngơn ngữ khác 43 Bài tập 45 Chương BÀI TOÁN LOẠI TRỪ LẪN NHAU .48 2.1 Giới thiệu 48 2.2 Giải pháp cho toán mutex trường họp hai luồng 52 2.2.1 Giải pháp 52 2.2.2 Giải pháp 53 2.2.3 Giải pháp 55 2.2.4 Thuật toán Peterson 56 2.3 Giải pháp cho toán mutex trường họp n luồng 59 Bài tập .62 Chương NHỮNG CẤU TRÚC ĐỒNG BỘ HÓA 65 3.1 Semaphore 65 3.1.1 Khái niệm semaphore 65 3.1.2 Semaphore Java 67 3.1.3 Giải số toán đồng với semaphore 70 3.2 Monitor 80 3.2.1 Khái niệm monitor 80 3.2.2 Giải số toán đồng với monitor Java 83 Bài tập .87 Chương MỘT SỐ KỸ THUẬT ĐẾ XÂY DƯNG HỆ THỐNG PHÂN TÁN 90 4.1 Lóp InetAddress 90 4.2 Socket 91 4.2.1 Socket với ƯDP 91 4.2.2 Socket với TCP 96 4.3 RMI 102 4.3.1 Cài đặt RMI 103 4.3.2 Khai báo đối tượng xa 104 4.3.3 Cài đặt tiến trình khách 107 4.4 MOM 109 4.4.1 Hai mơ hình hệ thống messaging Ill 4.4.2 JMS Ill Bài tập 115 Chương MƠ HÌNH VÀ CHÉ ĐÒNG HÒ 116 5.1 Đặc điểm hệ thống phân tán nghiên cứu 117 5.2 Mơ hình - xảy - - trước tính tốn phân tán 119 5.3 Những chế đồng hồ .120 5.3.1 Đồng hồ logic 120 5.3.2 Đồng hồ vector 123 5.3.3 Đồng hồ phụ - thuộc - trực - tiếp 126 5.3.4 Đồng hồ ma trận 128 Bài tập 131 Chương BÀI TOÁN TRUY CẬP TÀI NGUYÊN CHIA SẺ 132 6.1 Đặc tả toán loại trừ lẫn hệ thống phân tán 132 6.2 Các thuật toán dựa timestamp 136 6.2.1 Thuật toán Lamport 136 6.2.2 Thuật toán Ricart Agrawala 139 6.3 Các thuật toán dựa token 142 6.3.1 Thuật toán tập trung 142 6.3.2 Thuật tốn vịng trịn token 144 6.4 Các thuật toán dựa số đại biểu 146 Bài tập 148 Chương BÀI TOÁN SẮP THỦ TỤ THỒNG ĐIỆP 150 7.1 Thứ tự FIFO 150 7.2 Thứ tự nhân 152 7.3 Thứ tự đồng 154 7.4 Thứ tự toàn cho thông điệp đa hướng 159 7.4.1 Thuật toán tập trung 159 7.4.2 Thuật toán Lamport cho thứ tự toàn 160 7.4.3 Thuật toán Skeen 160 Bài tập 162 Chương BÀI TỐN ĐỊNG THUẬN 164 8.1 Giói thiệu tốn 164 8.2 Sự đồng thuận hệ thống bất đồng 165 8.3 ứng dụng 1: chấm dứt quảng bá tin cậy .169 8.4 Sự đồng thuận hệ thống đồng 170 8.4.1 Sự đồng thuận với lỗi sụp đổ 170 8.4.2 Sự đồng thuận với lỗi Byzantine 174 8.5 Độ hiểu biết độ hiểu biết chung 178 8.6 ứng dụng 2: toán hai tướng quân 180 Bài tập 181 TÀI LIỆU THAM KHẢO 183 DANH MỤC HÌNH VẼ Hình 1.1 Minh họa hệ thống song song 18 Hình 1.2 Minh họa hệ thống phân tán 19 Hình 1.3 Minh họa tính độc lập tiến trình .28 Hình 1.4 Minh họa tiến trình với năm luồng 28 Hình 1.5 Minh họa đan xen luồng .29 Hình 1.6 Minh họa chưong trình đồng thời dẫn đến trạng thái đua tranh 30 Hình 1.7 Các kịch chạy chng trình minh họa hình 1.6 31 Hình 1.8 Minh họa trạng thái bế tắc 33 Hình 1.9 Các trạng thái vòng đời luồng 39 Hình 2.1 Cấu trúc chưong trình đồng thời cho toán mutex 50 Hình 3.1 Minh họa cấu trúc semaphore 66 Hình 3.2 Quá trình chuyến trạng thái semaphore nhị phân 68 Hình 3.3 Quá trình chuyến trạng thái semaphore đếm 69 Hình 3.4 Bộ đệm chia sẻ cài đặt sử dụng mảng quay vòng 70 Hình 3.5 Giải pháp cho tốn người đọc - người ghi 75 Hình 3.6 Minh họa toán bữa tối triết gia với năm triết gia 77 Hình 3.7 Minh họa cấu trúc monitor 81 Hình 3.8 Minh họa cài đặt cấu trúc monitor Java 83 Hình 4.1 Kiến trúc RMI 103 Hình 4.2 Các bước co chế vận hànhcủaRMI 104 Hình 4.3 Minh họa hệ thống phân tán dựa trênMOM 110 Hình 4.4 Kiến trúc JMS 112 Hình 4.5 Mơ hình P2P JMS 113 Hình 4.6 Mơ hình Pub/Sub JMS 114 8.4 Sự ĐỒNG THUẬN TRONG NHỮNG HỆ THỐNG ĐỒNG Bộ Chúng ta thấy toán đồng thuận giải hệ thống bất đồng bộ, với xuất sụp đổ Chúng ta khó khăn việc giải toán đồng thuận nằm giả thiết bất đồng Do đó, tồn giao thức để giải toán đồng thuận hệ thống đồng Một hệ thống đồng có cận cho độ trễ thơng điệp cận cho khoảng thời gian hành động đuợc thực thi bời tiến trình Chúng ta điều kiện thích họp, không lồi gây sụp đổ mà lỗi ác ý, tiến trình lồi gửi thơng điệp bất kỳ, chấp nhận thuật tốn đồng thuận Nhìn chung, phân loại lỗi hệ thống phân tán sau: - Loi sụp đố (crash): Trong mơ hình sụp đố hồn tồn, lỗi tương ứng với việc xử lý ngừng lại Khi xử lý ngừng, khơng thực thi hành động khác nguyên trạng thái ngừng mãi Bộ xử lý không thực hành động sai nào, gửi thông điệp bị hỏng Như thấy trước, sụp đồ khơng phát bời tiến trình khác hệ thống bất đồng bộ, chúng có thê phát hệ thống phân tán đồng - Lỗi sụp đổ + liên kết (crash + link): Trong mơ hình này, xử lỷ sụp đổ, liên kết bị hỏng Neu liên kết bị hỏng, giữ trạng thái hỏng Khi xem xét cố liên kết, điều quan trọng phân biệt hai trường họp: 1) hệ thống mạng bị phân chia 2) đồ thị giao tiếp phía giữ kết nối Khi hệ thống mạng bị phân chia, vài cặp nút khơng giao tiếp với - Loi bỏ sót (omission): Trong mơ hình này, xử lý thất bại gửi tập thích hợp thông điệp yêu cầu gửi thuật tốn, nhận tập thích họp thơng điệp gửi tới Kiểu lỗi gọi Gửi sót kiểu lỗi thứ hai gọi Nhận sót - Loi Byzantine' Trong mơ hình này, xử lý thất bại biếu cách hành xử tùy ý Đây hình thức cực đoan thất bại Một hệ thống chấp nhận thất bại Byzantine chấp nhận thất bại khác Trong phần này, xét kiểu lỗi sụp đổ lỗi Byzantine Chúng ta giả sử liên kết tin cậy với lồi sụp đổ Một xử lý không lồi gọi xử lý 8.4.1 Sự đồng thuận với lỗi sụp đổ Trong phần này, tìm hiếu thuật tốn cho hệ thống đồng Nhìn chung, thuận lợi chứng minh kết bất khả thi với đặc tả toán yếu tốt chứng minh tương tự sử dụng cho đặc tả mạnh Tuy nhiên, thiết kế thuật toán, tốt thuật toán thỏa mãn đặc tả mạnh thuật tốn cho tất đặc tả yếu 170 Trước tiên, khái quát hóa tập họp giá trị cần có cho tốn đồng thuận Thay bit đơn lẻ, tập giá trị tập thứ tự hồn tồn Giả sử tiến trình Pị có giá trị đầu vào Vị từ tập họp Mục đích giao thức đặt giá trị y mồi tiến trình cho ràng buộc sau thỏa mãn Giá trị y có thê đặt nhiều lần gọi giá trị định bời tiến trình Những yêu cầu giao thức bao gồm: - 7m/i đồng thuận’ Hai tiến trình khơng lỗi khơng định giá trị khác - Tính hiệu lực: Neu tất tiến trình đề xuất giá trị, giá trị định nên giá trị đề xuất - Tính chấm dứt: Một tiến trình khơng lỗi phải định khoảng thời gian hữu hạn Một thuật toán đế đạt đồng thuận với xuất lỗi sụp đố đơn giản Trong thuật toán bảng 8.1, sử dụng tham số f để biểu thị số lượng lớn xử lý gặp cố Thuật toán hoạt động dựa vịng lặp Mỗi tiến trình lưu giữ tập V, chứa tập giá trị mà biết đề xuất bời xử lý hệ thống Khởi đầu, tiến trình biết giá trị đề xuất Thuật tốn cần f + vịng để hồn thiện; thuật tốn giả định giá trị f biết trước Trong vịng, tiến trình gửi giá trị V, mà chưa gửi trước đây, tới tất tiến trình khác Do vậy, ban đầu, tiến trình gửi giá trị vịng sau, gửi giá trị mà học lần đầu vòng trước Ớ vòng, tiến trình Pị nhận giá trị gửi từ tiến trình Pj khác Trong bước này, sử dụng giả thiết tính đồng thời Tiến trình Pị đợi thơng điệp từ tiến trình Pj khoảng thời gian cố định xác định trước, sau giả sử Pj sụp đổ Sau f + vịng, mồi tiến trình định dựa giá trị nhỏ tập V Bảng 8.1 Thuật tốn cho đồng thuận thất bại kiểu sụp đổ Pi^ var V: tập giá trị ban đầu {vj; for k:= tof+l Gửi [v e V\Pị chưa gửi v} tới tất tiến trình khác; Nhận Sj từ tất tiến trình khác Pj,j ¥= í; V = vu Sjỉ endfor; y := min(V); 171 Thuật toán thỏa mãn thuộc tính chấm dứt, tiến trinh kết thúc sau f + vòng Thuật tốn thỏa mãn tính hiệu lực, giá trị định chọn từ tập V, bao gồm giá trị đề xuất Chúng ta thuật toán thỏa mãn thuộc tính đồng thuận, tức tất tiến trinh định giá trị Thật vậy, đặt Vị tập giá trị tiến trình Pị sau vòng f + Chúng ta giá tri X tập Vị cho vài xử lý Pị, tập Vj cho xử lý Pj khác Đầu tiên giả sử giá trị X thêm vào Vị vòng k < f + Do Pị Pj tiến trình đúng, Pj nhận giá trị vịng k + sau diện Vj sau vòng f + Bây giả sử giá trị X thêm vào Vị vịng cuối (vịng có số hiệu f + 1) Điều ám tồn chuỗi / + xử lý riêng biệt đế chuyến giá trị từ số xử lý có giá trị X giá trị đầu vào tới Pị Neu tất xừ lý chuỗi bị lồi, mâu thuẫn với giả thiết có nhiều f xử lý bị lỗi Nếu xử lý chuỗi không bị lỗi, thành cơng việc gửi X tới tất xử lý vịng Do đó, X thêm vào Vj sau nhiều f + vịng Thuật tốn u cầu O((f + l)/v2) thơng điệp bỡi mồi vịng u cầu tiến trình gửi thơng điệp tới tất tiến trình khác Neu giá trị yêu cầu b bit, tống số bit truyền thơng ơ(h/v3) xử lý chuyển tiếp lên đến N giá trị tới tất xử lý khác Cài đặt thuật tốn sử dụng ngơn ngữ Java Chương trình 8.1 Trong cài đặt này, yêu cầu mồi tiến trình đơn giản lưu giữ giá trị nhỏ mà biết biến myValue Bien changed dùng để kiểm tra liệu giá trị nhỏ mà biết có thay đổi vịng cuối hay khơng Tiến trình quảng bá giá trị biến changed Chương trình 8.1: Cài đặt thuật tốn đồng thuận môi trường đồng importjava.util *; public class Consensus extends Process { int my Value; intf; // số lỗi lớn boolean changed = true; 172 boolean hasProposed = false; public Consensus(Linker initComm, intf) { super(initComm); this.f=f; } public synchronized void propose(int value) { myValue = value; hasProposed = true; notijyO; } public int decideQ { for (int k = 0; k 4/ Mỗi xir lý có ưu ticn (preference) cho moi vòng, giá trị đâu vào khởi đau Thuật tốn chi Chương trình 8.3 Thuật tốn dược dưa ý tương cùa đicu phôi viên luân phiên Giá sứ ticn trình p, người điêu phơi cho vịng thứ k Trong pha cùa vòng, mồi xứ lý trao đối giá trị cùa nỏ với lất cá xư lý khác Dựa vector V cứa xư lý định ước lượng cùa biến myValue Trong pha thứ hai, xử lý nhận giá trị từ người điêu phơi Nêu khơng nhận giá trị (bời người điều phối đà gập cố), giâ sử giá trị cùa người điều phối vx (một giá trị mặc đinh) Bày giở, nỏ định liệu sè sứ dụng giá trị riêng cùa hay giá trị cua người đièu phoi kingValue Quyct định dưa trẽn bội so cùa myl'o/ưe vector V Neu V có nhiều N/2 + f bán cùa myValue, giá trị myVaỉue dược chọn cho v(i] ngược lại, giá trị kingValue dược sư dụng Chương trình 8.3: Cài đật thuật toán cho hài toán BGA importịavaMtil.*; public class KingBGA extends Process { final static int defaultvalue = 0; intf; // sỗ lượng lỏi lớn nhát int V[];//tộp hợp giá trị dã biẽt int kingValue, myValue; public KingRGAfl.inker inilComm, intIJ { 175 super(initComm); this.f=f; V = new int[N]; } public synchronized void propose(int vol) { for (int i = 0; i < N; i++) V[i] = defaultvalue; V[myld] = val; } public int decidef) { for (int k = 0; k N/2 +f) V[myld] = my Value; else V[myld] = kingValue; } } return V[myld]; } public synchronized void handleMsg(Msg m, intsrc, String tag) { if (tag.equalsf’phasel")) { V[src] = m.getMessagelntQ; } else if (tag.equalsf'king1)) { 176 kingValue = m.getMessagelnt(); } } IntgetMajorityfint v/l) { if(numCopies(V, 0) >N/2) return 0; else if(nuinCopiesfV, 1)>N /2) return 1; else return defaultvalue; ) int numCopiesfint v/l, int v) { int count = 0; for (int i = 0; i < v.length; I**) if(VHÌ -= v) count**; return count; } ) Đâu liên, chi rang dông thuận van tôn tại, túc là, ncu tât ca xu lý uu liên giá trị V phàn đâu cùa vịng, chúng sc tiềp lục làn» phân sau cua vỏng Thuộc tinh giừ do: N > 4f = N-N/2>2f = N — f > N/2 + f Do số lượng xử lỷ N - /■, mỏi xù lý SC nhận nhiều iV/2 + / bàn cùa V dược chọn phần sau cùa pha hai Bây thuật tốn Chương trình 8.3 giai tốn đông thuận Thuộc linh hiệu lực đạt lừ tôn cùa thỏa thuận Nêu lâl cá xử lý bắt đầu với giá trị V, V giá trị định Tính kết thúc lù hiên nhiên thuật tốn càn xác f + vùng Bây chúng la chứng minh thuộc tính đồng thuận Dơ có r + vòng cỏ nhiều f xử lý lỗi nèn có vịng có người diêu phơi dũng Moi xư lý dúng quyêt định giá tri dược gih bơi người điêu phôi vông dó giá trị cua riêng Bộ xir lý chọn giá tri cùa riêng chi 177 bội số w V làN/2+/ + l.Do đó, người điều phối vịng phải có N/2 + bội số w vector Do vậy, giá trị chọn người điều phối IV Vì vậy, xử lý định giá trị phần sau vịng người điều phối không lỗi Từ tồn thỏa thuận, thuộc tính đồng thuận thỏa mãn phần cuối thuật toán 8.5 Độ HIẾU BIÉT VÀ ĐỘ HIÉU BIÉT CHUNG Nhiều toán hệ thống phân tán phát sinh từ thiếu kiến thức toàn cục Bằng cách gửi nhận thơng điệp, tiến trình tăng hiểu biết chúng hệ thống Tuy nhiên, có giới hạn cho mức độ hiểu biết đạt tới Chúng ta sử dụng khái niệm độ hiểu biết (knowledge) đế chứng minh vài kết tảng hệ thống phân tán Đặc biệt, đồng thuận đạt hệ thống bất đồng mà thiếu giao tiếp tin cậy Khái niệm độ hiểu biết hữu ích chứng minh cận độ phức tạp thơng điệp thuật tốn phân tán Đặc biệt, độ hiểu biết tiến trình xa đạt hệ thống phân tán bất đồng cách truyền thông điệp Ví dụ, xét tốn loại trù’ lẫn Điều rõ ràng tiến trình P[ vào khu vực quan trọng sau tiến trình Pj vào khu vực quan trọng phải có vài hiểu biết mà tiến trình Pj thu trước bắt đầu thực thi Việc đạt độ hiểu biết xảy thông qua truyền thông điệp Nhận thấy giả thiết tính bất đồng quan trọng yêu cầu truyền thông điệp Trong hệ thống đồng với đồng hồ toàn cục, độ hiểu biết đạt theo thời gian Do đó, với thuật tốn loại trừ lẫn nhau, có dồn kênh (multiplexing) phân chia thời gian, tiến trình vào khu vực quan trọng khung thời gian quy định chúng Do đó, loại trừ lẫn đạt mà khơng cần truyền thơng điệp Đặt G nhóm tiến trình hệ thống phân tán Chúng ta sử dụng ký hiệu Kị(ỉf) để biểu thị tiến trình i nhóm G biết tính chất (predicate) b Chúng ta giả sử tiến trình biết tính chất đúng: /Q(ị) => b Điều ngược lại khơng Một tính chất b đúng, khơng biết với tiến trình i Ví dụ, đặt b tính chất “sự tồn trạng thái bế tắc (deadlock) hệ thống” Một khả b tiến trình i khơng biết Bây giờ, định nghĩa ý nghĩa mệnh đề “một nhóm biết h”, biếu thị S(ị), sau: sw * y Kí (ồ) ÍGG 178 Tương tự, định nghĩa mệnh đề “mọi người nhóm biết h”, biểu thị bời E(b), sau: iEG Điều quan trọng để nhận E(ồ) tính chất - trạng thái hệ thống nào, chúng đánh giá sai Do đó, điều hồn hảo sử dụng S(ồ) E(ồ) cho tính chất Đặc biệt, E(E(h)) có nghĩa người nhóm biết người nhóm biết b Một cách quy nạp, quan sát cho phép định nghĩa £*^(0) với k > sau: E°(ồ) = b Ek+1(b) = E(Ek(by) Nhận thấy rằng, v/c: Ek+1(h) => Ek(b), nói chung điều ngược lại chưa Để hiểu rõ thực tế này, xem xét kịch sau Giả sử có n > trẻ ngồi chơi Những đứa trẻ dặn, trước chúng ngồi chơi, chúng khơng nên đê lấm bẩn Tuy nhiên, trẻ con, k > đứa trẻ đế trán bấn Bây giả sử đứa trẻ đứng vòng tròn cho đứa trẻ nhìn thấy đứa trẻ khác khơng thể nhìn thấy trán Bây xem xét tính chất b sau: b = Có nhât đứa trẻ bị băn trán Trong trường họp này, £’/c_1(b) đúng, Ek(tf) không Đe rõ ràng, đặt n = 10 k = Điều rõ ràng k nên b Hơn nữa, đứa trẻ nhìn thấy đứa trẻ khác bị bấn trán, nên E(b) Nhưng liệu E2(ị) có không? Hãy xét đứa trẻ, giả sử, đứa trẻ i có trán bị bẩn Đứa trẻ nhìn thấy xác đứa trẻ khác, giả sử, đứa trẻ j có trán bị bẩn Vì vậy, từ góc nhìn đứa trẻ í, vịng trịn có người bị bẩn trán, đứa trẻ j Do đó, trường hợp này, đứa trẻ j b Tức là, không đúng; E2(ồ) sai Mức độ hiểu biết cao tiếp theo, gọi độ hiểu biết chung, biểu thị C(ò), định nghĩa sau: C(h) ỀẾ Vk-.Ek(b) Rõ ràng với giá trị k nào, có: C(h) Trong ví dụ đứa trẻ có trán bị bẩn, giả sử phụ huynh bước tới thơng báo “ít nhắt so bị băn trán" Mọi đứa trẻ nghe thơng báo Khơng có vậy, chúng biết đứa trẻ khác nghe thông báo Hơn nữa, đứa trẻ biết đứa trẻ khác biết điều Chúng 179 ta tiếp tục giống Tóm lại, cách thơng báo b, mức độ hiểu biết trở thành c(h) Bây giờ, giả sử phụ huynh hỏi liên tiếp câu hỏi sau: “Liệu số chứng minh trán bị bân khơng?” Giả sử tất đứa trẻ đưa kết luận logic chúng trả lời cách đồng thời Bằng cách sử dụng quy nạp, dễ dàng đứa trẻ trả lời “Không” cho k — lần hỏi tất đứa trẻ bị bẩn trán trả lời “Có” cho lần hởi thứ k phụ huynh Đẻ hiểu vai trò độ hiểu biết chung, xét kịch k > Đầu tiên, dường thông báo phụ huynh “ít số bị bấn trán” không đưa thêm hiểu biết đứa trẻ nhìn thấy đứa trẻ khác bị bẩn trán biết b Tuy nhiên, điều khơng Đe rõ điều này, nên xem xét biến thể, phụ huynh liên tục lặp lại câu hỏi: “Liệu sổ chứng minh trán bị bấn khơng?” mà trước phụ huynh khơng thơng báo b Trong trường hợp này, đứa trẻ không trả lời “Có” Do vậy, cách thơng báo b, phụ huynh đưa hiểu biết chung b đó, Efc(h) Ek{b>) cần thiết để đứa trẻ trả lời “Có” vịng thứ k 8.6 ỨNG DỤNG 2: BÀI TOÁN HAI TƯỚNG QUÂN Bây giờ, chứng minh kết tảng độ hiểu biết chung - khơng đạt hệ thống phân tán với thông điệp khơng tin cậy Chúng ta giải thích tầm quan trọng kết ngữ cảnh toán phối họp tướng quân điều kiện giao tiếp khơng tin cậy Giả sử có hai tướng qn cần phối hợp công quân đội kẻ địch Quân đội tướng quân cắm trại đồi bao quanh thung lũng, nơi có quân đội kẻ địch Cả hai tướng quân muốn công quân địch đồng thời quân đội tướng qn có số lượng qn đội kẻ địch Hai tướng qn khơng có kế hoạch chung chuẩn bị trước vài buổi tối, họ muốn phối hợp với để công kẻ địch vào ngày hôm sau Hai tướng quân giả sử hành động đúng, giao tiếp họ không tin cậy Bất kỳ thông điệp gửi từ tướng quân tới người bị bắt bời kẻ địch Câu hỏi liệu có tồn giao thức cho phép tướng quân đồng ý phương án chung, biểu thị công rút lui Điều rõ ràng với xuất thông điệp không tin cậy, không giao thức đảm bảo tính đồng thuận cho tất lần hoạt động, không thông điệp gửi tướng qn tới phía đối diện Câu hỏi thực liệu có vài giao thức đảm bảo tính đồng thuận cho vài lần hoạt động, ví dụ vài thơng điệp tới đích Khơng may là, chí hệ thống phân tán đơn giản với hai 180 xử lý p ọ, giao tiếp với thơng điệp khơng tin cậy, khơng có giao thức cho phép đạt hiểu biết chung lần hoạt động Nếu không, đặt r lần hoạt động với số lượng thông điệp để đạt độ hiểu biết chung Đặt m thông điệp cuối lần hoạt động Khơng tính tổng qt, giả sử thông điệp cuối gửi từ xử lý p tới xử lý ọ Do thông điệp không tin cậy, xử lý p liệu Q nhận thơng điệp chưa Do đó, p xác nhận C(ị) sau m thơng điệp, làm sau m — thông điệp Tuy nhiên, C(ồ) p ám C(h) ọ Do đó, C(b) sau m — thơng điệp, vi phạm tính tối thiểu lần hoạt động r Trái lại, mức độ thấp độ hiểu biết đạt Thực vậy, để từ s (h) tới E (b), điều kiện đủ xử lý với hiểu biết b gửi thông điệp tới tất xử lý khác biết tính đắn b Trong lần chạy mà thông điệp đến đích, E(ị) thỏa mãn Chúng ta nên xác minh F2(h) không thỏa mãn với lần chạy theo giao thức BÀI TẬP 8.1 Tại thuật tốn sau khơng hoạt động cho toán đồng thuận giả thiết FLP? Hãy đưa kịch thuật tốn thất bại Có độ hiểu biết chung có sáu tiến trình hệ thống, đánh số từ Po tới P5 Thuật tốn sau: tiến trình gửi bit đầu vào tới tất tiến trình (bao gồm nó) đợi năm thơng điệp Mỗi tiến trình định dựa đa số năm bit nhận 8.2 Chỉ tất toán sau bất khả thi để giải hệ thống bất đồng với xuất thất bại đơn a) Lựa chọn lãnh đạo' Chỉ trường họp đặc biệt người lãnh đạo chọn từ tập {Po, Pỵị tương đương với toán đồng thuận b) Tính tốn hàm tồn cục: Chỉ hàm tồn cục khơng tầm thường tất định (deterministic), min, max phép cộng sử dụng để giải toán đồng thuận 8.3 Việc quảng bá nguyên tử (atomic broadcast) yêu cầu thuộc tính sau: - Tính hiệu lực (validity): người gửi loan truyền thơng điệp m, tất tiến trình cuối phân phối m - Tính đồng thuận (agreement): Neu tiến trình phân phối thơng điệp m, tất tiến trình phân phối m 181 - Tính tồn vẹn (integrity): Với thơng điệp m, tiến trình q nhận m từ tiến trình p nhiều lần p gửi m tới q - Tính thứ tự (order): Tất tiến trình nhận nhận tất thông điệp quảng bá theo thứ tự Chỉ giải việc quảng bá nguyên tử bất khả thi hệ thống bất đồng 8.4 Hãy biết tiến trinh không chết suốt giao thức, đồng thuận đạt (mặc dù ban đầu vài tiến trình chết) 8.5 Hãy đưa thuật toán ngẫu nhiên mà đạt tới đồng thuận hệ thống phân tán bất đồng với xuất f thất bại sụp đố với giả thiết N>2f + 8.6 Hãy ví dụ thuật toán đồng thuận định giá trị cuối sau f vịng thay f + vịng, vi phạm thuộc tính đồng thuận 8.7 Hãy đưa ví dụ thực thi hệ thống với sáu tiến trình, hai số chúng có lỗi thuật tốn đồng thuận tướng qn Byzatine không hoạt động 8.8 Hãy đưa thuật toán để giải toán BGA N > 3f + 8.9 Trong mơ hình thất bại Byzantine, tiến trình có lỗi chun tiếp thông tin không thông điệp nhận từ tiến trình khác Một mơ hình ác ý gọi Thất bại Byzatine với xác thực tương ho Trong mơ hình này, giả sử thơng điệp ký xác thực số hóa Tồn nhiều thuật tốn mã hóa cho chữ ký số Hãy đưa thuật toán cho toán BGA, giả sử xác thực f — resilient với f < N, yêu cầu f + vòng sử dụng số lượng đa thức thông điệp 8.10 Hãy số vòng yêu cầu để giải đồng thuận mơ hình sụp đố f + trường họp tồi f < N — 8.11 Hãy cách sử dụng phương pháp quy nạp k phụ huynh hỏi lặp lại câu hòi tất đứa trẻ trả lời “Không” tới câu hỏi thứ k — tất đứa trẻ bị bẩn trán trả lời “Có” cho câu hỏi thứ k 8.12 Hãy thiết kế giao thức đảm bảo E2 (h) từ S(h) lần chạy 8.13 182 Hãy xét trị chơi hai người yêu cầu đoán số người Họ nói họ có số tự nhiên liên tiếp Ví dụ, người có số 50 suy người có số 51 49 Bây họ hỏi lặp lại theo lượt câu hỏi “Liệu bạn nói so người không?" Liệu số họ cuối khẳng định trả lời câu hởi? Neu có, cách nào? Neu không, không? TÀI LIỆU THAM KHẢO A Sách tham khảo Garg, Vijay K Concurrent and Distributed Computing in Java IEEE Press, 2004 Ben-Ari, M Principles of Concurrent and Distributed Programming Pearson Education, 2nd edition, 2006 Herlihy, Maurice & Shavit, Nir The Art of Multiprocessor Programming Morgan Kaufmann, 2012 Ghosh, Sukumar Distributed Systems - An Algorithmic Approach CRC Press, Second edition, 2014 Pierfederici, Francesco Distributed Computing with Python Packt Publishing Ltd., 2016 Gonzalez, Javier Fernandez Mastering Concurrency Programming with Java Packt Publishing Ltd., 2017 Peleg, D., & Wool, A Crumbling walls: a class of practical and efficient quorum systems Distributed Computing, 10(2), 87 - 97, 1997 B Liên kết tham khảo Messaging Systems: An Introduction, Sun, truy cập vào 09/2021 Akka Documentation: Terminology, Concepts, truy cập vào 09/2021 183 BÀI GIÁNG LAP TR1NH PHĂN TÁN NHÀ XUẤT BẢN BÁCH KHOA HÀ NỘI Số - Đại Cồ Việt - Hai Bà Trưng - Hà Nội VPGD: Ngõ 17 - Tạ Quang Bửu - Hai Bà Trưng - Hà Nội ĐT: 024 38684569; Fax: 024 38684570 https://nxbbachkhoa.vn Chịu trách nhiệm xuất bản: Giám đốc - Tổng biên tập: TS BÙI ĐỨC HÙNG Biên tập: NGUYỄN THỊ THU Sửa in: vũ THỊ HẰNG Trình bày bìa: DƯƠNG HỒNG ANH In 100 khổ (19 X 27) cm Xường in NXB Xây dựng, số 10 Hoa Lư, phường Lê Đại Hành, quận Hai Bà Trưng, Hà Nội Số xuất bản: 2584-2022/CXBIPH/05-53/BKHN; ISBN: 978-604-316-856-3 Số QĐXB: 191/QĐ-ĐHBK-BKHN ngày 30/10/2022 In xong nộp lưu chiểu năm 2022