Truyền thông nhóm và phân phát bội (multicast)

Một phần của tài liệu Cơ bản về hệ điều hành (Trang 92 - 97)

Mô hình TT CTĐ đ−ợc trình bày trên đây dùng cho TT điểm-điểm. Mục này mô tả nhu cầu và thi hành TT nhóm đa điểm. Cần l−u ý là nhóm là bản chất để phát triển phần mềm cộng tác trong hệ phân tán hay tự trị. Quản trị nhóm các QT hoặc đối t−ợng cần có cơ chế TT phân phát bội để gửi TĐ tới các thành viên trong nhóm. Tồn tại hai kịch

Finished SERVER

ServerKeyExchange CLIENT

Finished

server public key

hashed message and secret ChangeCipherSpec randomS,CipherSuite, sesion id ClientHello randomC,CipherSuites ServerHello Socket Message Hình 4.6. Giao thức Handshake Socket Message ClientKeyExchange encrypted pre-mastersecret

ChangeCipherSpec

bản ứng dụng TT phân phát bội. Đầu tiên là một khách mong muốn cố níu kéo một dịch vụ từ bất kỳ phục vụ nào miễn là có khả năng đáp ứng dịch vụ. Thứ hai là một khách đòi hỏi dịch vụ từ tất cả các thành viên trong nhóm phục vụ.

Trong tr−ờng hợp đầu tiên, không cần phải tất cả phục vụ đáp ứng lại mà chỉ cần một phục vụ. Phân phát bội đ−ợc thực hiện trên cơ sở cố gắng nhất (best-effort) và đ−ợc lặp lại nếu cần thiết. Hệ thống chỉ cần đảm bảo phân phát bội TĐ tới các QT không bị mắc lỗi có thể đạt đ−ợc. Cách nh− vậy gọi là phân phát bội cố gắng nhất.

Trong tr−ờng hợp sau, cần đảm bảo là mọi phục vụ đều nhận đ−ợc yêu cầu và tính bền vững trong các phục vụ có thể đ−ợc duy trì. TĐ phân phát bội cần đ−ợc đáp ứng cho tất cả các phục vụ nhận hoặc không một phục vụ nào (tức là toàn bộ hoặc không cái nào); cách này th−ờng đ−ợc gọi là phân phát bội tin cậy. Đòi hỏi toàn bộ hoặc không cái nào có nghĩa là TĐ phân phát bội nhận đ−ợc cần đ−ợc đ−a vào vùng đệm tr−ớc khi phân phối cho QT ứng dụng. Chú ý trong phân phát bội tin cậy đồng bộ ảo, TĐ có thể đ−ợc phân phối tr−ớc khi nhận đ−ợc (Đồng bộ ảo đ−ợc thảo luận ở phần sau).

Ihi hành phân phát bội phức tạp hơn vì gặp nhiều thiếu thốn do ch−a có phân phát bội nguyên tử. Lỗi của QT nhận hoặc kết nối truyền thông có thể đ−ợc QT khởi tạo TĐ phát hiện khi sử dụng cơ chế quá hạn hoặc xác nhận. QT khởi tạo sau đó có thể thoát ra hoặc tiếp tục phân phát bội bằng cách loại bỏ thành viên lỗi trong nhóm. Lỗi của khởi tạo một chiều (haft-way) trong phân phát bội chỉ mới đ−ợc giải quyết một cách giả định. Rất khó khăn để xác định khởi tạo là có lỗi hay không. Để xác định thoát từ lỗi hoặc toàn bộ các bộ phận của phân phát bội là hoàn thiện, một trong các QT nhận bắt buộc đ−ợc chọn nh− một khởi tạo mới. Kỹ thuật thông th−ờng còn đòi hỏi các QT nhận phải đ−a vào bộ đệm phân phát bội cho tới khi TĐ đã trở nên an toàn cho phân phối. Lỗi đ−ợc kiểm soát nhờ hệ thống ảo. Phân phát bội bỏ qua đồng bộ ảo là không thực sự tin cậy; chúng chỉ là cố-gắng-nhất.

Quan hệ trực tiếp với bài toán phân phối tin cậy là bài toán về thứ tự phân phối các TĐ. Khi TĐ phức là phân phát bội tới cùng một nhóm, chúng xuất hiện tại các thành viên khác nhau trong nhóm theo các thứ tự khác nhau (do tính biến động của độ trễ trong mạng).

Hình 4.7 cho một số ví dụ TT nhóm yêu cầu thứ tự TĐ: G và s t−ơng ứng biểu diễn nhóm và nguồn TĐ. QT s có thể đứng ngoài nhóm hoặc là một thành viên của nhóm. Giả thiết rằng TĐ phân phát bội cần đ−ợc nhận và phân phối ngay lập lức theo thứ tự chúng đ−ợc gửi. Nếu giả thiết này là đúng thì công việc lập trình nhóm đơn giản hơn rất nhiều. Tuy nhiên điều đáng tiếc là giả thiết này không có thực và thiếu ý nghĩa vì trong hệ phân tán không có đ−ợc thời gian toàn cục và giao vận TĐ trong mạng gặp độ trễ TT đáng kể và không ổn định. Về ngữ nghĩa, phân phát bội có thể đ−ợc xác định sao cho TĐ đ−ợc nhận theo thứ tự khác nhau tại các nút khác nhau có thể đ−ợc sắp xếp lại và phân phối tới QT ứng dụng theo quy tắc chặt chẽ nhỏ hơn. Thứ tự phân phát bội d−ới đây đ−ợc xếp theo độ tăng của tính chặt chẽ:

+ Thứ tự FIFO: TĐ phân phát bội từ nguồn đơn đ−ợc phân phối theo thứ tự chúng đ−ợc gửi.

+ Thứ tự nhân quả: TĐ quan hệ nhân quả từ nguồn phức đ−ợc phân phối theo thứ tự nhân quả của chúng.

+ Thứ tự tổng: Mọi TĐ phân phát bội tới một nhóm đ−ợc phân phối tới mọi thành viên của nhóm theo cùng thứ tự. Một thứ tự tin cậy và tổng đ−ợc gọi là thứ tự nguyên tử. Tại mỗi nút, ch−ơng trình điều khiển TT chịu trách nhiệm nhận TĐ và sắp xếp lại theo thứ tự tới QT ứng dụng. Điều này t−ơng tự nh− tính chất mô hình bất biến của hệ thống

file phân tán và hệ thống bộ nhớ chia xẻ phân tán. Chúng là t−ơng tự nhau trong bối cảnh phân tán.

Thi hành theo thứ tự FIFO (hình 4.7a) là dễ dàng. Do chỉ có các TĐ đ−ợc gửi từ cùng một QT khởi tạo, các TĐ này đ−ợc gán số hiệu TĐ tuần tự. Điều khiển TT có thể làm trễ TĐ hoặc loại bỏ các TĐ lặp khi sử dụng dãy số hiệu tuần tự này. Dãy số hiệu tuần tự TĐ là cục bộ đối với mỗi nguồn TĐ và vì vậy không thể kết hợp các TĐ từ các nguồn khác nhau (xem hình 4.7 b). Thứ tự nhân quả và thứ tự tổng của TĐ phân phát bội từ các nguồn khác nhau là công phu hơn.

Hai TĐ đ−ợc gọi là có quan hệ nhân quả với nhau nếu một TĐ đ−ợc sinh ra sau khi đã tiếp nhận xong cái còn lại. Thứ tự TĐ nhân quả cần đ−ợc trình bày tại mọi nút (phía) do nội dung của TĐ thứ hai có thể đ−ợc tác động theo kết quả xử lý TĐ đầu tiên. Quan hệ nhân quả này có thể trải dọc qua một vài thành viên trong nhóm do tính bắc cầu của quan hệ nhân quả. Thi hành thứ tự nhân quả các TĐ bằng cách mở rộng số hiệu tuần tự thành vector số hiệu tuần tự, S=(S1, S2, ..., Sn) đ−ợc mỗi thành viên duy trì. Mỗi Sk trình bày số hiệu TĐ sẽ nhận đ−ợc từ thành viên k của nhóm. Khi thành viên i phân phát bội một TĐ mới m, nó làm tăng Si lên 1 (dấu hiệu cho biết số l−ợng TĐ mà i đã phân phát bội) và gắn vector S với m. Khi nhận đ−ợc TĐ m có vector tuần tự T=(T1,

G s 2 1 (b) s G s 2 1 (a) (c) G s 2 1 G G s 2 1 G s (d) G s 1 G s 2 2 1 G s 1 G s 2 2 1 Hình 4.7. Truyền thông nhóm và thứ tự TĐ

T2, ..., Tn) từ thành viên i, thành viên j hoặc tiếp nhận hoặc làm trễ phân phối m theo các luật d−ới đây (Chú ý Si là thành phần vector số hiệu tại thành viên j):

• Tiếp nhận TĐ m nếu Ti=Si+1 và Tk ≤ Sk với mọi k≠i. Điều kiện đầu tiên (Ti=Si+1) chỉ ra rằng thành viên j mong chờ TĐ tiếp sau theo dãy từ thành viên i. Điều kiện thứ hai xác minh rằng thành viên j đã phân phát mọi TĐ phân phát bội mà thành viên i đã phân phát tr−ớc khi nó phân phát bội m (có thể một vài cái nữa). Nh− vậy, j đã thực sự phân phát mọi TĐ đứng tr−ớc (nhân quả) m.

• Làm trễ TĐ m nếu hoặc Ti>Si + 1 hoặc tồn tại một số k≠i mà Tk > Sk. Tr−ờng hợp đầu tiên, một vài TĐ phân phát bội tr−ớc đây từ thành viện i đã bị thất lạc mà thành viên j đã không nhận đ−ợc. Tr−ờng hợp thứ 2, khi thành viên i phân phát bộ m thì nó đã nhận đ−ợc nhiều TĐ phân phát bội từ các thành viên khác trong nhóm hơn so với thành viên j. Trong cả hai tr−ờng hợp, TĐ bắt buộc phải bị làm chậm để đảm bảo tính nhân quả.

• Loại bỏ TĐ nếu Ti≤ Si. Việc sao lặp TĐ từ thành viên i đã đ−ợc bỏ qua hoặc loại bỏ bởi thành viên j.

Giao thức thứ tự nhân quả này giả thiết rằng phân phát bội trong một nhóm đóng (tức là nguồn của phân phát bội cũng là một thành viên của nhóm) và phân phát bội không thể mở rộng dọc theo nhóm (mục sau sẽ bàn luận về việc này).

Khi thi hành, phân phát bội đòi hỏi công phu hơn. Theo trực giác, đòi hỏi rằng một phân phát bội buộc phải hoàn thiện và TĐ phân phát bội buộc phải đ−ợc sắp xếp theo thời gian hoàn thiện phân phát bội tr−ớc khi phân phát tới QT ứng dụng. Điều đó tạo nên lý do kết hợp quảng bá nguyên tử với quảng bá thứ tự tổng thành một giao thức. Điều này đ−a đến khái niệm phân phát bội thứ tự tổng hai pha. Trong pha đầu tiên của giao thức phân phát bội, QT khởi tạo quảng bá TĐ và thu thập xác nhận với tem thời gian lôgic từ tất cả các thành viên trong nhóm. Suốt thời gian pha 2, sau khi đã thu thập xong mọi xác nhận với tem thời gian lôgic, QT khởi tạo gửi một TĐ cam kết mang tem thời gian xác nhận cao nhất nh− là thời gian logic đối với việc cam kết. Thành viên trong nhóm sau đó quyết định hoặc TĐ cam kết đ−ợc đ−a vào vùng đệm hoặc phân phát dựa trên thời gian cam kết lôgic toàn cục của TĐ phân phát bội.

Giao thức phân phát bội 2 pha đ−ợc biểu diễn trong hình 4.8. Trong hình vẽ, hai TĐ, m1 và m2 từ hai nguồn khác nhau đ−ợc quảng bá tới một nhóm. Để rõ ràng, ở đây có hai nguồn (s1, s2) và hai thành viên trong nhóm (g1, g2). Thời gian đồng hồ lôgic khởi tạo của chúng cho trong vòng tròn. Các đ−ờng liền nét và rời nét t−ơng ứng trình bày TĐ và TĐ xác nhận. Mỗi một cung đ−ợc gán nhãn bởi một cặp hai số. Số đầu tiên (từ 1 đến 8) chỉ b−ớc theo thứ tự bộ phận của xuất hiện và số thứ hai là tem thời gian của TĐ. Ví dụ, QT 1 phân phát bội s1. Khi mọi xác nhận (b−ớc 2 và 8) đã đ−ợc s1 nhận, bộ xử lý tính toán tem thời gian cam kết (9, là lớn nhất của 6 và 9) và trả lại TĐ cam kết cho toàn nhóm. TĐ cam kết mang thời gian hoàn thiện cuối cùng của quảng bá TĐ không đ−ợc chỉ trong hình. T−ơng tự, s2 tính toán tem thời gian cam kết là 8 đối với phân phát bội m2 của nó. Bảng chỉ dẫn vùng đệm đ−ợc quản lý bởi CT điều khiển TT của thành viên nhóm g1. Bộ xử lý đã xác nhận 2 TĐ với tem thời gian là 6 và 8. TĐ cam kết với tem thời gian 8 và 9 có thể tới với thứ tự bất kỳ nh−ng CT điều khiển bắt buộc phải chờ cả hai tr−ớc khi phân phát đ−ợc thực hiện. TĐ m2 đ−ợc hoàn thiện tr−ớc m1 bởi vì tem cam kết của nó nhỏ hơn. TĐ m3 (phân phát bội bởi một nguồn khác) không đ−ợc chú ý tại đây vì TĐ cam kết của nó có tem thời gian cao hơn 10 và nh−

vậy bắt buộc đ−ợc phân phát sau m1 và m2. Mọi TĐ sau này cũng có tem thời gian lớn hơn và không cần chú ý.

Bộ đếm TĐ tổng trong giao thức phân phát bội thứ tự tổng hai pha là cao. Nhiều hệ thống (chẳng hạn, ISIS) đơn giản giải pháp thứ tự TĐ tổng bởi giả thiết tồn tại một dịch vụ đánh số dãy toàn cục. Mọi TĐ phân phát bội nhận một số tuần tự toàn cục từ bộ sắp xếp dy, một bộ xử lý là một thành viên của nhóm. Khi bộ xử lý nhận một TĐ thứ tự tổng, sự phân phát TĐ đ−ợc làm trễ tới khi số hiệu dãy toàn cục đã đ−ợc nhận. Bộ sắp xếp dãy đặt vào vùng đệm thứ tự tổng phân phát bội mà nó nhận, gán cho chúng số dãy toàn cục và sau đó phân phát bội số dãy này tới các thành viên khác của nhóm (cần chứng tỏ năng lực gán nhiều số hiệu dãy trong một TĐ đơn là tối −u). Mỗi khi nhận đ−ợc số hiệu dãy của phân phát bội toàn cục, bộ xử lý phân phát bội theo thứ tự cho bởi số hiệu dãy toàn cục. Nếu bộ xử lý dãy bị lỗi, một bộ xử lý dãy khác đ−ợc chọn từ các thành viên trong nhóm.

Trong nhiều ứng dụng phân tán, một QT có thể thuộc vào nhiều nhóm. Hình 4.7.c chỉ ra hai ví dụ t−ơng đ−ơng của phân phát bội tới các nhóm giao nhau. Trên đây cho giao thức đánh thứ tự TĐ trong một nhóm đơn. Tuy nhiên, thứ tự có thể khác nhau khi các nhóm rời rạc thậm chí với cùng một TĐ phân phối bội. Với nhóm giao nhau, thì cần phải có sự cộng tác trong nhóm để duy trì thứ tự t−ờng minh của TĐ đối với các thành viên thuộc vùng giao. Một ví dụ về nhóm giao nhau hữu dụng là thi hành các phục vụ đ−ợc nhân bản khi dùng phân phát bội nguyên tử. Một nhóm chứa chỉ các phục vụ. Với mỗi khách, tồn tại một nhóm khách gồm khách đó và tất cả các phục vụ. Khách có thể thuộc vào một nhóm khác mà chứa các khách khác.

Một giải pháp cho bài toán nhóm giao nhau là đặt cấu trúc đ−ợc công nhận trên đây đối với nhóm và phân phát bội TĐ sử dụng các cấu trúc này. Ví dụ, các thành viên của nhóm có thể đ−ợc cấu trúc nh− là một cây thác triển (cây thác triển là một biểu diễn hợp lý của quan hệ thành viên nhóm trong mạng máy tính không có hỗ trợ quảng bá về phần cứng). Gốc cây đóng vai trò đứng đầu nhóm. Cung của cây trình bày kênh TT FIFO. Một TĐ phân phối bội tr−ớc hét gửi tới đỉnh đứng đầu (gốc) và sau đó gửi tới mọi thành viên trong nhóm theo lộ trình TĐ dọc theo các cung của cây. Thành viên trong phần giao phải đ−ợc cấu hình thành một cây con chung giữa hai nhóm giao nhau. Trong ví dụ hình 4.9. chỉ ra hai nhóm: nhóm 1 gồm các thành viên A, B, C, D và nhóm 2 gồm các thành viên C, D, F và G. Tập giao {C, D} đ−ợc cấu trúc nh− một cây con chung giữa hai nhóm. (adsbygoogle = window.adsbygoogle || []).push({});

8,9 g2 1 5 7 2 2,6 4,8 s2 1,5 (TĐ m2) s1 (TĐ m1) 3,7 5,7 6,8 7,5 g1 TĐ phân phối bội Thời gian xác nhận

Thời gian cam kết

m0 2 đã phân phát

m1 6 9

m2 8 8

m3 10 sắp xảy ra

Quản lý vùng đệm trong bộ điều khiển TT

Đạt đ−ợc sự mềm dẻo hơn nếu nh− phân phát bội tới nhiều hơn một nhóm (hình 4.7.d). Để đạt đ−ợc tính nhất quán giữa các nhóm, cần phải xác định một nhóm mới là hợp nhất của hai nhóm. Hình 4.7 b và 4.7.c đã rút gọn vấn đề này.

Một phần của tài liệu Cơ bản về hệ điều hành (Trang 92 - 97)