Trong các phần sau chúng ta chỉ xem xét hệ phân tán dưới mức độ tiến trình do mức bộ xử lý có thể xem như mức tiến trình với mỗi tiến trình trên một bộ xử lý.. Mô hình truyền thông phân
Trang 1B Ộ GI ÁO DỤC VÀ ĐÀO TẠO TRƯ ỜNG Đ ẠI H ỌC B ÁCH KHOA HÀ NỘI -
Trang 2B Ộ GI ÁO DỤC VÀ ĐÀO TẠO TRƯ ỜNG Đ ẠI H ỌC B ÁCH KHOA HÀ NỘI -
CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN
NGƯỜI HƯỚNG DẪN KHOA HỌC:
TS HÀ QU Ố C TRUNG
Trang 3phương tiện để chia sẻ ài t nguyên (như máy in màu hay máy quét) và chia sẻ
d ữ liệu (kh ng thể thiếu được ới ền kinh tế ựa tr n th ng tin ngày nay) ô v n d ê ôMột hệ thống phân tán bao gồm một tập hợp các bộ xử lý liên kết với nhau thông qua một cấu hình mạng nào đó Hệ thống có thể là vật lý tức là các máy tính kết nối với nhau thông qua mạng máy tính hay logic tức là tập các tiến trình phần mềm kết nối qua cơ chế truyền thông đ ệpi Cấu hình mạng có thể
là điểm tới điểm hay các kênh truyền thông đại chúng (broadcast) Hệ phân tán khác hệ tập trung ở một số điểm cơ bản sau
• Thiếu nhận biết về trạng thái toàn cục của hệ thống (có thể thu thập thông tin về trạng thái hệ thống nhưng không cập nhật)
Trang 4• Thiếu một khung thời gian toàn cục (các sự kiện không có thứ tự)
• Bất định
Cần phân biệt hai mức khác nhau khi xem xét một hệ phân tán: mức bộ
xử lý và mức tiến trình Ở mức của bộ xử lý, các bộ xử lý không có chia sẻ bộ nhớ về mặt vật lý và thiết yếu phải trao đổi thông qua truyền thông điệp Trên mỗi bộ xử lý có nhiều tiến trình Các tiến trình trên nhiều bộ xử lý hình thành mức tiến trình trong hệ phân tán Ở mức tiến trình chúng ta có nhiều lựa chọn trao đổi hơn so với mức bộ xử lý Các tiến trình có thể trao đổi thông qua chia
sẻ bộ nhớ hay truyền thông điệp hoặc phối hợp cả hai Trong các phần sau chúng ta chỉ xem xét hệ phân tán dưới mức độ tiến trình do mức bộ xử lý có thể xem như mức tiến trình với mỗi tiến trình trên một bộ xử lý
Hệ phân tán được biết đến sớm nhất trong thực tế là mạng máy tính Dù ban đầu được thực hiện cho mục đích truy cập từ xa và sau này cho thư điện
tử mạng máy tính đã phát triển nhanh chóng bao gồm nhiều dịch vụ truyền dữ liệu khác nhau như truyền file hay duy trì các phiên làm việc Một mạng lưới phức tạp các giao thức đã được thiết kế cho các dịch vụ này bằng cách truyền thông điệp trên nhiều mức độ Những tiến bộ gần đây trong thiết kế các giao thức còn cho phép tồn tại nhiều dạng truyền thông khác nhau bên cạnh dữ liệu như âm thanh và hình ảnh
Một ví dụ nổi tiếng khác về hệ phân tán nằm trong lĩnh vực xử lý song song với một tập các bộ xử lý cùng phối hợp giải một bài toán Tính toán song
Trang 5việc chia sẻ các phần tử nhớ Mong muốn cung cấp một hiệu năng cao hơn cho các ứng dụng đã dẫn đến sự ra đời của các hệ phân tán với liên kết điểm tới điểm thống trị cho tới ngày nay
Trong các hệ phân tán quan trọng ngày nay còn phải kể đến mạng các máy trạm Các mạng này có nhiều điểm giống như mạng máy tính ta đã nói ở trên nhưng có phạm vi địa lý hẹp hơn và thường dùng các kết nối đại chúng như môi trường truyền thông chính (các tiến trình trên các bộ xử lý dùng kết nối điểm tới điểm) Mạng máy trạm cung cấp nhiều dịch vụ hơn mạng máy tính ví dụ như chia sẻ hệ thống file
Từ các ví dụ về các hệ phân tán trong thực tế đã mô tả ở trên có thể thấy rõ kết nối điểm tới điểm thống trị trong hầu hết các trường hợp Điều này đồng nghĩa với việc truyền thông giữa các điểm mạng đóng vai trò chủ đạo
1.2 Tính chất c m ủa ột h phâ ệ n tán
1.2.1 Chia sẻ t ài nguyên
T ài nguy n l khái niệm ê à để chỉ ất ả những t c gì có thể ử ụng chung s dtrong hệ âph n tán T nguyêài n c thể bao gồm t ó ừ phần ứng như ộ nhớ hay c b máy in, tới ác thực thể lôgic được định nghĩa bởi phần mềm c như file, CSDL Việc chia sẻ ài nguy n t ê đem lại những ợi ích sau: l
• C ác thiết bị phần ứng được chia sẻ ạo thuận ợi cho việc ử c t l s
dụng và giảm bớt chi phí
• Chia sẻ ữ d liệu là một yêu cầu ơ ản ủa nhiều ứng ụng c b c d
• C à ác nh phát triển phần mềm có thể ần truy cập c công việc lẫnnhau, có thể chia s c côẻ ác ng cụ mà ch cần một ỉ phi n bản của ê
th viư ện, trình dịch
Trang 6• Khi cài đặt ột cô m ng cụ ới ất m , t cả c ác thành vi n đều có th s ê ể ử
dụng ài nguy n mới này t ê
• C ác ứng ụng thương mại thường ử ụng ột CSDL cho nhiều d s d m người truy nhập âph n tán
Để việc chia sẻ ài nguyên có t hiệu quả, mỗi ài nguy n cần được quả t ê lý bởi một chương trình Chương trình n ày cung cấp c ác giao diệ cho phép t n àinguyên được truy c , thay ập đổi an toàn và thống nhất
Quản trị t ài nguyên là một chương trình quản lý một s t ố ài nguyên thuộc m ột loại ào đó Mỗi ại t n lo ài nguyên cần được quản lý một cách khác nhau Tuy vậy, cũng có một s yêố u cầu chung V ụ như ệ thống í d h đặt n cho tê
m l t ỗi ớp ài nguyên, việc ánh ạ n lê x tê n địa chỉ ật , việc giải quyết ác truy v lý c
nhập đồng ời th để đảm ảo ài b t nguyên có tính thống nhất Có hai mô hình cho
h ệ thống ác chương trình quản l ài nguy n: m c ý t ê ô hình Client erver v-S à mô
hình ướng đối ượng h t
• Mô hình Client erver: C-S ó m s c ột ố ác tiến trình quản lý m ột loại
t ài nguyên nhất định, và m s ột ố tiến trình khác thực hiện những
công việc đòi ỏi phải truy cập ác ài nguy n đó M h c t ê ô hình ày n
có thể áp dụng ào phạm vi rộng v c v ới ả phần ứng c và phần ềm m
• Mô hình đối ượng: Các ài nguy n chung được t t ê nhìn như ột đối m
tượng Các đối ượng được định danh v t à có thể ịch chuyển tr n d ê
mạng Khi một chương trình ần ử ụng ài nguy n th chương c s d t ê ì trình đó g mửi ột ôth ng báo ch ứa yêu cầu t ới đố ượng Th ng i t ô
Trang 7thủ tục của đối ượng ô đi kèm ần d t lu n ph ữ ệu của dối tượng, do li
đó đối tượng không di chuyển được
1.2.2 Tính ở m
Tính m là ở đặc tính ủa c m h ột ệ thống có thể được m rở ộng Một ệ h thống có tính m ở đối với phần cứng: ví d có ụ th thể êm thiết b ị ngoại vi, bộ
nh trong ớ - hoặc phần mềm: có thể ổ sung một ài ính ăng ủa ệ th ng, b v t n c h ôgiao thức trao đổi hoặc một v dài ịch ụ chia sẻ ài nguyê v t n Nói chung, tính
m c h ở ủa ệ ph n t n được đánh giâ á á bằng khả ăng th m dịch ụ chia sẻ ài n ê v t nguyên mà ôkh ng phải ỏ hoặc thay đổi ác ịch ụ ẵn b c d v s có
Tính ở được thực hiện ằng ách m b c công bố ác giao diện c cho các nh à
phát triển phần mềm Trong lịch sử, c c hệ thống máy tá ính thường là c h ác ệ
thống đóng UNIX là một ví d v h ụ ề ệ thống m ở cho các à nh phát triển ứng
dụng, cho các nh à s ản xuất phần ứng c và c à ác nh quản lý h ệ thống, cho cácnhà s ản xuất phần ềm và m người ử ụng s d
Tính m ở trong hệ ph n tán đặt ền ảng tr n cơ chế â n t ê chung trao đổi
thông tin giữa ác tiến ình, các giao di c tr ện được công bố để truy nhập t àinguyên Hệ phân án ở t m có thể được ấu thành ừ phần ứng c t c và phần ềm m
không đồ ngnhất, từ nhiềunhà cung cấp khác nhau Tuy nhi n các thành phầnê
c h ủa ệ thống ần phải được kiểm tra kỹ trước khi đưa vào s d c ử ụng
1.2.3 Tính ương tranh t
Khi nhiều chương trình được ực ện êth hi tr n một máy tính, chúng ta nói
là chúng được thực hiện đồng thời Nếu áy ính đó chỉ m t có m b ột ộ vi xử , lýviệc thực hiện ác tiến trình được tiến ành theo từng ph c h ần c c ủa ác ến ình ti trNếu số lượng b vi x lý nhiềuộ ử hơn số ti trình, mỗi ộiến m tiến trình s ẽ được
Trang 8thực hiện ằng ột bộ vi xử lý và b m khi đó ác tiến ình c tr được ực ện th hi đồng
th thời ật s ự
Trong hệ ph n tánâ xây dựng trên cơ ở chia sẻ ài nguyê s t n, việc thực
hiện đồng thời có thể xảy ra trong các trường ợp sau: h
• Nhiều người s dử ụng cùng gọi nhiều lệnh, tương tác ới v nhiều ứng dụng Trường hợp n xày ảy ra khi có m ột hay nhiều tiến trìnhphục v ụ cho mỗi người ử ụng s d
• Nhiều tiến trình ph ục v cụ ùng chạy trả ời ác ời ọi khác nhau l c l g
t c ừ ác tiến trình khác nhau Trường ợp ày x h n ảy ra khi tồn ại t
tiến ình phtr ục v ụ cho việc quản lý nhiều ài t nguyên sẽ được xếp
hàng, có th s ể ẽ được thực hiện ần ượt, c thể ột s s l l ó m ố ẽ được
thực ện song song bởi nhihi ều phiên bản ủa c c ác ến trti ình Khi có nhiều tiến trình truy cập d ữ li củaệu cùng một t ài nguyên, tiến
trình quản lý t ài nguy n cần ê phải tiến ành đồng ộ ác h b c yêu cầu, đảm b o ảchúng kh ông bị mâu thuẫn và v ẫn giữ được c lác ợi th của tế ính ương tranh t
Tóm ại, tương tranh v thực hiện song song phát sinh một c t l à ác ự nhi n êtrong các h ệ phân tán, xuất phát ừ ác t c hoạt động êri ng rẽ của người s dử ụng,
tính độc ập ủa ài nguy n, tính ph n tán ủa ác tiến trình ph l c t ê â c c ục vụ Đ ều àyi n cho phép việc x lý có ử thể được ến hti ành tr n các áy tê m ính khác nhau Truy
c và c ập ập nhật đồng thời ài nguyê t n phải được đồng ộ b
1.2.4 Kh nả ăng hỗ trợ ải thay đổi t
Trang 9nghìn máy Trong hàng nghìn máy đó, c úc ất nhiều áy có l r m ùng ử ụng ột s d m
t ài nguyên nào đó, c những c lại khôngó lú có máy n s dào ử ụng ài nguy n đó t ê
cả Các ịch ụ ph n tán phải d v â có khả ăng hoạt động trong điều kiện n khácnhau như v ậy
Trong hệ phân tán, những t ài nguyên được coi l giới ạn trong các ệà h h thống tập trung sẽ trở thành vô hạn nh : S b vi x lý, b nh , các kêư ố ộ ử ộ ơ nh vàora Tuy nhi n, mê ột s t ố ài nguy n khác s b ê ẽ ị giới hạn nếu trong quá trình thiết
kế, tính ương tranh kh ng được quan t m tới t ô â
Khi thiết k h ế ệ thống ph n tán, kh ng một t â ô ài nguyên nào được thiết k ế
để cung cấp trong giới hạn Khi nhu cầu s dử ụng ăng l n, cần phải có t ê khả
năng mở ộng ệ thống để đáp ứng nhu cầu r h mới Ví dụ: khi số yêu cầu ử s
dụng file tăng lên, hệ thống c ần phải có khả ă n ng thêm một máy phục ụ file v
m ới để giảm bớt tải cho máy phục ụ file cũ Một ài file c thể ị truy cập v v ó b
m cột ách thương xuy n th chúng ần phải được nh n thành nhiê ì c â ều bản, lưu tạinhiều máy khác nhau
1.2.5 Tính chất chịu ỗi l
C h ác ệ thống áy m m óc đôi khi cũng hỏng óc Khi c h ó s c x ự ố ảy ra, hệ
thống có ể dừng hoạt động, có th thể đưa ra các kết quảkhông chính xác Như
v có ậy để thể hoạt động có hiệu quả, hệ ph n tán ần phải â c có khả ăng phát n
hiện l và x lý lỗi ử ỗi N chung, khi có l x ói ỗi ảy ra, người ử ụng thường s dkhông có kiến thức đủ để biết thực ự s có chuyện gì x ảy ra với ệ thống Mọi h
c gố ắng ủa người ử ụng để giải quyết ự ố thường kh ng c c s d s c ô ó k ết quả Như
v h âậy ệ ph n tán ần ử c x lý l ỗi sao cho người s dử ụng không ph quan tải âm đếnviệc có lỗi hay không c ỗi xảy ó l ra, đồng thời ẫn thu được ết quả đúng chỉ v k trong trường h h ợp ệ không tự giải quyết được lỗi ì mth ới b áo cho người s ử
dụng
Trang 10Để đạt được mục đích trên, c thể ửó s dụng phần cứng d tr ự ữ khi có sự
c x ố ảy ra V ụ để đảm ảo ịch ụ thư đ ện ử ẫn hoạt động ình thườngí d b d v i t v bkhi máy phục ụ thư đ ện ử ị ỗi, c thể ố tr v i t b l ó b í một máy khác đưa vào thay
thế Phương pháp ày n đòi hỏi chi phí đầu ư t ban đầu tương đối lớn C thểó giảm b ớt chi phí n bày ằng ách dùng c m một áy d ự trữ cho nhiều chức ăng n
khác nhau
M cột ách khác để đảm ảo ính chịu ỗi cho hệ thống b t l là s dử ụng phầnmềm phục ồi ại ệ thống Nếu ệ thống hoặc ột phần ủa ệ thống hoặc h l h h m c h
m ột thao tác ào đó ị ự ố, sẽ n b s c có phần ềm m để loại ỏ những thay đổi do sự b
có gây ra, khởi động ại thao tác ừ đ ểm l t i chưa có s cự ố Muốn àm như ậy l v phần mềm này phải theo dõi h ệ ống th trong suốt thời gian khi chưa xảy ra sự
c ố
1.2.6 Tính trong suốt
Tính trong suốt là s ự che giấu ính ph n tán ủa ác thành phần trong t â c c
h âệ ph n tán ới người ử ụng Người ử ụng kh ng cần biết ác ài nguyên v s d s d ô c t
mà mình đang sử ụng ằm ở đâu, ph n tán hay tập trung, mà s d d n â ử ụng như
m t ột ài nguy n l gic duy nhê ô ất của h âệ ph n tán
Có c ác loại trong suốt sau:
• Trong suốt v ề truy cập: Các đối ượng ô t th ng tin có thể truy cập
bằng ùng ột phương pháp như nhau c m
• Trong suốt v ề địa iđ ểm: Tài nguyên có thể được truy cập mà
Trang 11được s tự ồn tại của người s dử ụng khác đang truy cập v t ào àinguyên đó
• Trong suốt sao lưu: M s t ột ố ài ngu n có ê thể được sao lưu để làm
tăng ốc độ phục ụ ủa ệ thống Qu trình sao lưu này phải t v c h á được giấu k ín hoàn toàn khỏi sự nhận ết bi của người s dử ụng
• Trong suốt khi có lỗi x raảy : Khi có l x ỗi ảy ra trong hệ thống,
việc x lý l cử ỗi ũng ần được che giấu Người ử ụng chỉ ết là c s d bi
yêu cầu ủa ình c m thực ện hi được (trong trường h h ợp ệ phân tán
x lý ử thành công các ự ố) hoặc kh ng xử s s ô lý được (nếu ệ ph n h â
t ôán kh ng xử lý được ột trong c s c ) m ác ự ố
1.3 Mô hình truyền thông phân tán
Môi trường truyền thông giữa các tiến trình được phân thành hai loại:
hệ truyền thông điệp và hệ chia sẻ bộ nhớ chung Trong hệ truyền thông điệp
các tiến trình gửi và nhận thông điệp thông qua các kênh tin Mỗi kênh tin kết nối định hướng hay không định hướng giữa hai tiến trình Kiểu kết nối giữa các kênh tin hình thành cấu trúc mạng của hệ thống Như vậy có thể biểu diễn cấu trúc mạng của hệ thống dưới dạng đồ thị với mỗi tiến trình tại một nút và mỗi kênh truyền thông được biểu diễn bằng một cung
Ta có thể hình thức hoá hệ truyền thông điệp dưới dạng toán học như
sau Hệ thống được biểu diễn bằng một đồ thị định hướng liên thông GT = (NT, DT) với tập các nút NT biểu diễn tập các tiến trình, tập các cung định hướng DT biểu diễn các kênh truyền thông định hướng Mỗi tiến trình tại mỗi nút được mô hình hoá dưới dạng máy trạng thái hữu hạn hay vô hạn Với một tiến trình ký hiện t Int là tập các cung đi vào t và Outt là tập các cung đi ra khỏi t Các kênh thuộc tập Intlà các kênh từ đó t nhận tin còn các kênh thuộc
Trang 12tập Outt là các kênh mà t gửi tin lên đó Những gì diễn ra trong hệ thống được
mô hình dưới dạng các sự kiện Có hai dạng sự kiện trong hệ truyền thông điệp: sự kiện tính toán compt (tiến trình xử lý thông điệp nhận được) và sự t kiện gửi thông điệp dels,t,m (tiến trình gửi thông điệp tới tiến trình t).s m
Trong hệ chia sẻ bộ nhớ, các tiến trình truyền thông thông qua một
vùng nhớ chia sẻ chung chứa tập các biến chia sẻ còn được gọi là các thanh ghi (registers) Các biến này gồm nhiều loại khác nhau Mỗi loại xác định các toán tử có thể thực hiện trên biến cũng như giá trị mà nó trả về Loại thông dụng nhất là thanh ghi đọc / ghi với toán tử là các lệnh đọc ghi thông thường Một số loại khác hỗ trợ các toán tử mạnh hơn như đọc / biến đổi / ghi, kiểm tra / thiết lập, so sánh / tráo đổi… Các thanh ghi còn có thể được phân loại tiếp theo số tiến trình có thể truy cập trong mỗi lần thực hiện của một toán tử
Hệ chia sẻ bộ nhớ được hình thức hoá dưới dạng một tập n các tiến trình và một tập m các thanh ghi Giống như hệ truyền thông điệp mỗi tiến trình được mô hình hoá dưới dạng máy trạng thái hữu hạn hay vô hạn Mỗi thanh ghi được xếp vào một loại nhất định phụ thuộc vào giá trị thanh ghi có thể nhận, các toán tử thao tác trên thanh ghi, các giá trị thanh ghi trả về và giá trị mới của thanh ghi sau khi thực hiện toán tử Sự kiện là sự kiện tính toán của mỗi tiến trình gồm ba loại: tiến trình truy cập thanh ghi để thực hiện một toán tử dựa trên trạng thái hiện tại của tiến trình, toán tử được thực hiện trên thanh ghi, biến đổi trạng thái tiến trình dựa trên trạng thái hiện tại và giá trị trả
về từ toán tử thực hiện trên thanh ghi
Trang 13phát triển đầu của xử lý song song sử dụng kỹ thuật chia sẻ bộ nhớ) Mô phỏng hệ chia sẻ bộ nhớ bằng hệ truyền thông điệp có thể thực hiện rất dễ dàng
1.4 Mô hình đồng bộ và ông kh đồng ộ b
Quan tâm chính của ta trong phần này là tìm hiểu quan hệ giữa giải thuật phân tán với yếu tố thời gian Tính toán thực hiện tại mỗi nút của G sẽ được xem xét dưới góc độ các đặc trưng thời gian Có hai mô hình thời gian:
mô hình đồng b và mô hộ ình không đồng ộ b
thường chỉ ất ài gi y Giới ạn ê n m v â h tr n ày ến bi đổi theo th gian do ời đó t ốt
hơn ta n n thiếtê k ế gi thuậtải độc l v các ôập ới th ng số thời gian Hệ không đồng bộ có hai đặc trưng sau
• Mỗi tiến trình có một thời gian địa phương riêng độc lập với nhau thông qua đồng hồ địa phương
• Độ trễ mỗi thông điệp phải chịu khi truyền giữa các nút lân cận
là hữu hạn nhưng bất định
Một điểm quan trọng cần nêu ra đây là các khái niệm sử dụng để mô tả tính toán của một nút trong giải thuật Task_t hoàn toàn phù hợp với các giả thiết của mô hình không đồng bộ vì ngoại trừ thời điểm tính toán lúc đầu tính toán sau đó chỉ có thể diễn ra khi tiến trình nhận được thông đ ệpi Hơn nữa
Trang 14Dựa trên giải thuật Task_t, tính toán tại một nút trong mô hình không đồng bộ có thể mô tả qua các hành động ban đầu (nếu nút bắt đầu tính toán và gửi thông đ ệp i tự phát) và các hành động khi nhận thông điệp với một số điều kiện nào đó được thoả mãn Mô tả này được thực hiện trong giải thuật A_Template dưới đây Giải thuật này là khuôn hình cho tất cả các giải thuật được nghiên cứu dưới mô hình không đồng bộ do đó nó còn được gọi là giải thuật không đồng bộ Giải thuật mô tả tính toán tại nút ni N0 thuộc tập N là tập không rỗng các nút có thể gửi tin lúc đầu ồ thị Đ được giả định là định hướng
Giải thuậtA_Template:
Trang 15tini= nil do lúc đầu không có thông điệp nào kích hoạt hành động của ni Khi
có một thông điệp tới ta giả định nibiết th ng đ ệp này từ đâu tới qua cung mà ô i
nó nhận tin
Mô hình không đồng bộ rất phù hợp với tính chất các hệ phân tán ta đã nhắc đến trong phần một Tuy nhiên chính tính không đồng bộ lại giải thích cho phần lớn khó khăn gặp phải khi thiết kế giải thuật phân tán cho mô hình không đồng bộ Vì vậy thông thường người ta dùng các mô hình ít thực tế hơn trong đó các đặc trưng thời gian của hoàn toàn ở vào thái cực ngược lại Đó G
là mô hình đồng bộ
1.4.2 Mô hình đồng bộ
Trong hệ thống đồng b ộ ến trti ình thực hiện theo nhịp đồng hồ Quá trình chạy được chia thành c ác chu kỳ Trong mỗichu kỳ mỗi tiến trình có ể th
g ôửi th ng đ ệp ới ác tiến trình xung quanh, mọi thôi t c ng đ ệp đều được nhận i
và m ỗi tiến trình ính toán ựa tr n th ng điệp vừa nhận được Mô hình đồng t d ê ô
bộ có hai đặc trưng sau:
• Mọi nút có một thời gian chung thông qua đồng hồ chung của toàn hệ tạo ra những xung cố định
• Độ trễ mỗi thông điệp phải chịu khi truyền giữa các nút lân cận
là khác không nhưng nhỏ hơn độ dài xung của đồng hồ
Độ d ài xung sinh ra bởi đồng hồ không nhất thiết phải như nhau do đó
có thể lấy độ trễ tin phải chịu khi truyền giữa các nút lân cận là giới hạn dưới cho khoảng thời gian này
Cũng như giải thuật không đồng bộ giải thuật phân tán trong mô hình đồng bộ còn được gọi là giải thuật đồng bộ Tại xung = 0 các nút thuộc tập s
N0 gửi th ng đ ệp lên một số cung đi ra khỏi nút này Với xung > 0 mọi ô i s
Trang 16th ng ô điệp được gửi tại xung s-1 được giả định là đã nhận được và mọi nút trong N có thể thực hiện tính toán và gửi thông đ ệpi
Có một giả thiết được hiểu ngầm trong phần mô tả trên Đó là giả thiết tính toán tại mỗi nút trong khoảng đồng hồ chung được xem bằng không Nếu không có giả thiết này khoảng đồng hồ chung sẽ không đủ cho cả tính toán địa phương tại mỗi nút cũng như truyền thông đ ệp i giữa các nút bởi thời gian truyền thông đ ệp i được lấy gần bằng độ dài xung
Tập N0 có thể gửi th ng đ ệp tại xung sô i = 0 trong mô hình đồng bộ giống như tập N0 gửi th ng đ ệp tự phát trong mô hình không đồng bộ Tuy ô i nhiên có một khác biệt căn bản giữa hai mô hình Trong mô hình đồng bộ các nút có thể thực hiện tính toán mà không cần nhận thông đ ệp i vì mỗi nút được kích hoạt bởi đồng hồ chung không phải bởi thông điệp nhận được Do đó về mặt nguyên lý giải thuật đồng bộ không cần thông đ ệp i và các nút có thể tiếp tục tính toán ngay cả khi N0 = 0 Điều này không khác gì nút hoàn toàn độc n lập chạy song song với nhau nên để tránh nghiên cứu một hệ thống như vậy ta vẫn cần có ít nhất một thông đ ệp i được gửi đi ban đầu bởi một nút nào đó
Mô hình đồng bộ thoạt nhìn có vẻ không thực tế nhưng đôi khi lại rất
có ích khi thiết kế giải thuật phân tán không chỉ vì đơn giản hoá thiết kế mà còn đưa lại một giải thuật không đồng bộ hiệu quả hơn Có thể thấy mỗi giải thuật không đồng bộ về bản chất là một giải thuật đồng bộ Một giải thuật thiết kế cho mô hình không đồng bộ cũng hoạt động tốt dưới giả thiết của mô hình đồng bộ với một độ d ài xung lựa chọn thích hợp Điều này xuất hiện do
Trang 17thuộc N, TINi(s) là một tập rỗng (nếu s=0) hoặc tập thông đ ệp nhận được bởi i
nitrong khoảng s 1 (cũng có thể rỗng) Giải thuật này được thực hiện cho đồ thị định hướng
-Giải thuật S_Template:
Biến:
Biến sử dụng bởi n i và giá trị ban đầu.
Thông điệp nhận:
s = 0 TIN i (0) = 0
Hành động nếu n i thuộc N 0 :
tính toán gửi thông điệp trên mỗi cung của một tập con (có thể rỗng) của Out i
Thông điệp nhận:
s > 0, TIN i (1), …, TIN i (s) với nguồn(tin) = c k thuộc
In i với 1 ≤ k ≤ |In i | cho tin thuộc tập tin nhận được
Hành động:
tính toán gửi thông điệp trên mỗi cung của một tập con (có thể rỗng) của Out i
Bảng 1.2 Giải thuật _Template S
Tương tự như giải thuật A_Template giải thuật S_Template cũng bao gồm một tập các cặp thông đ ệp i nhận / hành động Th ng đ ệp ô i nhận bây giờ bao gồm cả xung đồng hồ Những xung này kích hoạt hoạt động của các nút
Trang 18Tính nguyên tử của các hành động đến từ đặc trưng của mô hình đồng bộ vì không có nút nào thực hiện hơn một hành động trong một chu kỳ Mỗi nút trong khoảng s có thể truy cập tới mọi thông đ ệp i trong các tập TINi(1), …, TINi(s)
sẽ không được xét đến Mọi kênh được giả định đáng tin cậy cũng như mọi thông điệp đã gửi đều được nhận Người ta thường xét hai loại thất bại tiến trình: thất bại do bộ vi x lý ử và thất bại do mạng
1.5.1 Thất bại do bộ vi xử lý
Thất b ại do bộ vi x lý ất ện khi hoạt ử xu hi động ủa ộ vi xử c b lý trả ại l
k ết quả kh ng mong đợi Có ba loại ất ại ô th b được xếp tăng d theo độ ó ần kh
ph hiát ện là thất bại phá huỷ: , chậm và byzantine
• Thất bại phá huỷ: Trong mô hình thất bại dừng, hoặc do bộ vi xử
lý đang trong thời gian thực hiện một công việc khác và cũng đang
Trang 19hình thức của hệ đồng bộ khi có sự xuất hiện của thất bại phá huỷ được biến đổi lại như sau Ta đưa vào tham số sống là số cực đại f tiến trình có thể thất bại Hệ thống như vậy sẽ được gọi là hệ thống
có độ tin cậy Như thế sẽ tồn tại một tập các tiến trình lỗi với f F nhiều nhất là tiến trình Tập có thể khác nhau trong mỗi lần f F thực hiện do đó ta không thể biết trước tiến trình nào là tiến trình lỗi Mỗi chu kỳ của giải thuật chứa chính xác một sự kiện tính toán cho mỗi tiến trình không thuộc và nhiều nhất một sự kiện F tính toán cho mỗi tiến trình thuộc Hơn nữa nếu một tiến trình Fthuộc F không có sự kiện tính toán nào tại một chu kỳ nào đó thì
nó cũng không có sự kiện tính toán nào trong các chu kỳ tiếp theo Trong chu kỳ cuối cùng khi một tiến trình lỗi còn thực hiện tính toán nó nhận được một tập ngẫu nhiên các thông điệp là tập con của tập các thông điệp gửi đến nó
• Thất bại chậm: Thất bại này là do bộ vi xử lý có lỗi hoặc thực
hiện các thủ tục chậm Đôi khi không phải do bộ vi xử lý bị lỗi
mà do đang thực hiện, nhưng đã bị đánh dấu lỗi do đó không còn được tham gia vào hệ thống Rất khó để phát hiện thất bại chậm trong hệ phân tán
• Thất bại byzantine: Trong thất bại byzantine tiến trình lỗi có thể
hoạt động tuỳ tiện Thất bại này nghiêm trọng hơn so với thất bại phá huỷ Tương tự như mô hình hoá hệ đồng bộ khi có thất bại phá huỷ ta cũng đưa vào tham số là số cực đại tiến trình có thể f thất bại Trong mỗi lần thực hiện của hệ thống có thất bại byzantine với độ tin cậy tồn tại một tập nhiều nhất tiến trình f F f
là các tiến trình lỗi Tại mỗi bước tính toán của tiến trình lỗi
Trang 20trạng thái tiếp theo của tiến trình cũng như nội dung thông điệp được gửi đến các tiến trình xung quanh hoàn toàn tuỳ tiện, không
bị ràng buộc Do đó một tiến trình lỗi có thể gửi các thông điệp khác nhau tới các tiến trình khác nhau hay thậm chí không gửi thông điệp nào mà lẽ ra nó phải gửi cùng một thông điệp tới mọi tiến trình Trong một số trường hợp tiến trình nhận có thể phát hiện tiến trình gửi thất bại dựa vào định dạng của thông điệp Khó khăn chủ yếu nảy sinh khi thông điệp nhận được hợp lệ nhưng thực tế là sai Một tiến trình byzantine có thể mô phỏng một tiến trình thất bại khi không gửi thông điệp nữa từ một chu
kỳ nào đó
1.5.2 Thất bại do mạng
Thất bại do mạng ngăn cản các bộ vi xử lý có thể kết nối với nhau Thất bại do mạng có thể do mạng không đáng tin cậy, có thể do việc chuyển các message lỗi, có thể là thứ tự của các message đến không đúng thứ tự Chúng
ta cần các giao thức cho phép tạo các liên kết đáng tin cậy mặc dù có thể có nhiều message cùng được gửi trên một đường truyền Nếu một liên kết bị lỗi
có thể gây ra một vài vấn đề như sau:
• Các lỗi gây liên kết một chiều: Một thất bại mạng có thể sinh ra
một topo kết nối lỗi Ví dụ như một bộ vi xử lý A có thể gửi một message nhưng bộ vi xử lý B không thể nhận được message Một
bộ vi xử lý C lại có thể nói chuyện với cả bộ vi xử lý A và B Lỗi
Trang 21và B có thể liên kết với nhau trong khi cả hai không thể liên kết với C và D, và điều này cũng diễn ra tương ứng với C và D
1.6 Quan hệ nhân quả
Kh niái ệm nh n quả đóng vai trò â quan trọng trong thiết k ế giải thuậtphân tán Rõ ràng ẽ s có ích ơ h n nếu ta biết được thứ ự ương đối ủa c s t t c ác ự
kiện đã ễn di ra trong hệ thống Nhận thức n có ày được th ng qua quan sát ôquan hệ nh n quả giữa ác ự kiện cho dâ c s ù h ệ hoàn toàn kh ng đồng ộô b và
không có ương thph ức n x ào ác định lượng thời gian thực đã ôi qua Chú ý tr
rằng quan hệ nhân quả ch được x ỉ ét cho các h ệkh ng ô đồng b ộ
Trong mỗi lần thực hiện giải thu âậtph n tán được mô t bả ằng m chu ột ỗi
c s ác ự kiện Chuỗi ày ẽ áp đặt n s m ột thứ ự n các ự kiện t lê s và ôth ng tin vềquan hệ ânh n qu giữa c s ả ác ự kiện hoàn toàn kh ng c Như ậy để x ô ó v ác địnhquan hệ nh n qu giữa c sâ ả ác ự kiện ta cần một phương thức m ới (Lamport 1978) Trước h ết ta cần ìm hiểu xem đ ều kiện để ột ự ki t i m s ện t ác động ânh n
quả đến một s ự ện khác ki
Giả thiết rằng hệ phân tán gồm tập hợp các bộ xử lý P P={ 1,P2, ,PM} Chúng ta muốn xem xét các sự kiện đi vào và ra tại các tiến trình Gọi tất cả việc gửi và nhận message là các sự kiện Gọi ε là tập các sự kiện của hệ thống
và εP là tập các sự kiện xuất hiện tại bộ xử lý P
Chúng ta quan tâm đến thứ tự của các sự kiện khác nhau Nếu biết sự kiện e1 xuất hiện trước sự kiện e2 thì ta viết e1<e2 Trong một hệ phân tán rất khó có thể suy diễn được sự kiện nào sẽ đến trước, bởi vì một tiến trình kết nối với nhiều nguồn khác nhau
Có một vài thứ tự giữa các sự kiện có thể được phát hiện ngay Thứ nhất, các sự kiện xuất hiện trong cùng một tiến trình luôn có thứ tự rõ ràng,
Trang 22nếu e1 và e2 là sự kiện của một bộ xử lý thì hoặc là P e1<Pe2 hoặc là e1>Pe2 Thứ hai, nếu e1 là sự kiện gửi message m và e2 là sự kiện nhận message m thì
e1<Me2
Xét hai sự kiện e1 và e2 của cùng một tiến trình Ta nói e1 có thể tác động nhân quả đến e2 nếu và chỉ nếu e1 xảy ra trước e2 Với hai tiến trình khác nhau rõ ràng một tiến trình chỉ có thể tác động đến tiến trình khác bằng cách gửi thông điệp Cho nên sự kiện e1 của bộ xử lý P1 tác động nhân quả đến sự kiện e2 của bộ xử lý P2 nếu và chỉ nếu e1là sự kiện gửi thông điệp m từ P1 tới
P2 và e2 là sự kiện P2 nhận được m Dựa trên hai quan hệ nhân quả cơ bản này
có thể thấy tác động nhân quả gián tiếp của sự kiện này lên sự kiện khác thông qua một chuỗi quan hệ nhân quả cơ bản Quan hệ này cho phép ta định nghĩa một quan hệ mới giữa các sự kiện: quan hệ xảy ra trước Sự kiện e1 xảy
ra trước e2 ký hiệu là e1<He2, nếu một trong các điều kiện sau được thoả mãn:
Trang 23Hình 1 Một ví d v s 1 ụ ề ự xuất hiện của các sự kiện
Trong ví dụ trên, các sự kiện e1, e4 và e7 tất cả các sự kiện xuất hiện tại tiến trình P1, khi đó ta có biểu thức sau e1<P1e3< P1e7 Sự kiện e1 là sự kiện gửi message và e3 là sự kiện nhận tín nhắn, khi đó ta có biểu thức e1<Me3 Tương
tự, chúng ta có các biểu thức là e2<He3<He8, e2<Me4 Áp dụng điều kiện 3 ta
có thể chỉ ra e1<He8 Xét 2 sự kiện e1 và e6 không có đường kết nối, do đó ta gọi e1 và e6 là các sự kiện đồng thời
Để mô tả quan hệ xảy ra trước giữa các sự kiện ta dùng một đồ thị định hướng G V E=( , ), tập đỉnh V là tập các sự kiện của hệ thống, tập cạnh có hướng
E là tập hợp các cặp đỉnh (e1, e2) sao cho e1<He2
Giải thuật gán nhãn thời gian Lamport
Trong hệ phân tán không tồn tại một thời gian chung, nhưng sẽ rất tốt nếu có một đồng hồ chung dành cho hệ thống Đồng hồ chung dùng để xác
Trang 24định quan hệ xảy ra trước hay sau của các sự kiện Từ các quan hệ cục bộ của các sự kiện, thông qua giải thuật sẽ tạo ra được một quan hệ tổng thể giữa các
sự kiện dựa vào tính chất <H
Trong giải thuật mỗi một sự kiện được gắn thêm một nhãn thời gian e.TS Mỗi một tiến trình tồn tại một nhãn thời gian cục bộ là my_TS Khi một
sự kiện xuất hiện trong một bộ xử lý, giải thuật sẽ gán thời gian cho mỗi sự kiện và gán lại các nhãn thời gian của các bộ vi xử lý
Việc gán nhãn này luôn luôn tuân thủ quy tắc là các sự kiện trong cùng một bộ vi xử lý nếu xuất hiện trước sẽ có nhãn nhỏ hơn, các sự kiện nhận một message luôn có nhãn thời gian lớn hơn nhãn thời gian của sự kiện gửi message đó
Khởi tạo:
my_TS = 0
Khi một sự kiện xuất hiệne :
Nếu e là sự kiện nhận message m thì:
Bảng 1.3 Giải thuật gán nhãn thời gian Lamport
V ví d ới ụ trên ta có k ết quả án thời gian d g ựa trên giải thuật Lamport:
Trang 25Hình 1 Một ví d v s g 2 ụ ề ự án nhãn thời gian cho các sự kiện
1.7 Một số giải thuật truyền tin
1.7.1 Giải thuật truyền tin
Bài toán truyền tin qua các nút của G là bài toán truyền thông đại chúng qua G thông tin được sở hữu ban đầu trong một tập con các nút của G Bài toán này có hai biến thể: bài toán truyền tin (PI) và bài toán truyền tin có phản hồi (PIF) Trong bài toán PI mọi nút trong G nhận tin trong khi ở bài toán PIF mọi nút không chỉ nhận tin mà còn báo lại cho nút ban đầu rằng tất cả các nút khác đều đã nhận được tin
Bài toán PI có nhiều cách tiếp cận giải quyết khác nhau Cách đơn giản nhất là truyền thông đại chúng dưới dạng “lũ” (flooding) tràn qua toàn mạng Mọi nút mang thông điệp M bắt đầu gửi thông điệp tới mọi nút lân cận Các nút khác mỗi khi nhận được thông điệp lần đầu lại gửi tiếp tới mọi nút lân cận
Trang 26của nó bao gồm cả nút từ đó nó nhận thông điệp Kết quả là một nút sẽ nhận thông điệp M từ tất cả các lân cận của nó Với chiến lược này M được truyền
từ các nút ban đầu như một làn sóng và nhanh chóng truyền đến mọi nút cho
dù có thất bại tại một số cung
Khác với bài toán PI bài toán PIF chỉ được phát biểu cho trường hợp một nút duy nhất sở hữu thông tin ban đầu Lời giải dạng “lũ” cho bài toán này là một mở rộng từ giải thuật PI Mỗi nút ni có thêm biến parenti trỏ tới một lân cận của ni Khi ni nhận được M lần đầu parenti sẽ trỏ tới nút lân cận của ni mà từ đó M được gửi tới ni Giải thuật được bắt đầu bởi n1 khi n1 gửi M tới mọi nút lân cận của nó Mỗi nút ni khi nhận được M lần đầu sẽ thiết lập parenti và chuyển tiếp M tới mọi nút lân cận ngoại trừ parenti Nếu nút không còn lân cận nào khác (nút lá) nó sẽ gửi thông điệp ACK tới nút cha Khi nhận được thông điệp ACK từ mọi nút lân cận của nó ngoại trừ nút cha ni cũng gửi thông điệp ACK tới nút cha Nút n1 sẽ biết mọi nút nhận được M khi nhận được thông điệp ACK từ mọi lân cận của nó
Giải thuật Broadcast dưới đây mô tả những giải thích trên Biến parenti
được khởi tạo bằng nil cho mọi ni Biến counti được khởi tạo bằng 0 ghi lại số thông điệp nhận được Biến reachedi cho biết ni đã nhận được thông điệp M chưa Tập N0 chỉ gồm một thành phần N0 = {n1} Giải thuật này đúng cho cả
mô hình đồng bộ và không đồng bộ
Giải thuậtBroadcast :
Biến:
Trang 27gửi thông điệp M tới mọi nút n j thuộc tập Out i
if count i = |Out i | then
if parent i ≠ nil then gửi thông điệp ACK tới parent i
kết thúc
Bảng 1.4 Giải thuật Broadcast
Giải thuật này có độ phức tạp thông tin là O m( ) và độ phức tạp thời gian là O n( )
1.7.2 Giải thuật t câìm y khung
Cây khung của một đồ thị đóngvai tr quan trò ọng trong giải thuật phân
tán Th ng thường khi đã ìm đượcô t cây khung các giải thuật khi thực hiện tr n êcây khung sẽ có độ phức tạp thông tin ít hơn so với khi thực hiện trên toàn ộ b
đồ thị Bài toán truyền ôth ng đại chúng đã nói tr ên là một ví d iụ đ ển hình Có hai cách x ác định cây khung: tìm kiếm theo chiều rộng và tìm ki ếm theo chiều
Trang 28parent t ới nj Nếu ni nhận được M đồng thời ừ ơn một út th t h n ì n út cha sẽđược chọn tuỳ tiện gi c n nữa ác út ày Sau đó nếu ni nhận được M nó s g ẽ ửi
th ng ô điệp already ới n g t út ửi cho biết ni là mđã ột nút trong cây khung Sau khi đã g ửi M tới mọi n út xung quanh trừ n út cha ni s ẽ đợi trả ời ừ ác út l t c n
này Nút trả ời ới th ng đ ệp parent s l v ô i ẽ được đánh ấu d là n út con của ni Sau khi đã nhận được ả l t mtr ời ừ ọi nút xung quanh ni s k ẽ ết thúc
Dưới đây l giảà mã c ủa giải thuật Giải thuật được thực hiện cho mô
hình đồng ộ, với b mô hình kh ng đồng ộ ô b cây khung tìm được kh ng đảm ô
b là câảo y khung tìm kiếm theo chiều rộng Bi parentến i t n trỏ ới út cha của ni, biến childreni chứa ập ác út con của n t c n i, biến otheri chứa ập ác út xung t c n quanh kh ng phô ải nút con của ni Tập N0 chỉ gồm một thành phần N0 = {n1}
Giải thuậtBFS :
Biến:
parent i = ; children nil i = ; other nil i = nil
Thông điệp nhận: tin i = nil
Hành động nếu n i thuộc N 0 :
parent i = n i
gửi thông điệp M tới mọi nút n j thuộc tập Out i
Thông điệp nhận: tin i = M với nguồn(tin i ) = n j
Trang 29Hành động:
đưa n j vào children i
children if i và other i chứa mọi lân cận của n i ngoại trừ
parent i then kết thúc Thông điệp nhận: tin i = already với nguồn(tin i ) = n j
Hành động:
đưa n j vào other i
children if i và other i chứa mọi lân cận của n i ngoại trừ parent i then kết thúc
Bảng 1.5 Giải thuật BFS
Giải thuật này có độ phức tạp thông tin là O m( ) và độ phức tạp thời gian là O n( )
Gi thuải ật tìm cây khung theo chiều sâu xây dựng cây khung bằng ách c
l lần ượt đưa các út ào n v cây khung khác v ới giải thuật t ìm kiếm theo chiều
rộng ở tr n khi nhiều út đồng thời được đưa vào ê n cây khung
Giả mã của giải thuật được cho dưới đây Đây là giảithuật cho mô hình
kh ng ô đồng bộ Giống như trong giải thuật BFS parentitrỏ ới út cha của n t n i, biến childrenichứa ập ác út con của n t c n i Biến m ới unexploredichứa ập ác t c
n lâút n cận chưa được thăm dò c ủa ni Tập N0 chỉ gồm một thành phần
Trang 30gửi thông điệp already tới nút n j
loại n j khỏi unexplored i
Thông điệp nhận: tin i = parent với nguồn (tin i ) = n j
unexplored if i ≠ nil then
chọn ngẫu nhiên n k từ unexplored i
loại n k khỏi unexplored i
gửi thông điệp M tới nút n k
else
Trang 31Giải thuật này có độ phức tạp thông tin là O m( ) và độ phức tạp thời gian là O m( )
Trang 32Chương 2:
2.1 Giải thuật phân tán
Với hệ truyền thông điệp hình thức hoá như trên, một giải thuật sẽ là một chương trình mang tính địa phương cho mỗi tiến trình trong hệ thống Chương trình này thực hiện tính toán, nhận và gửi các thông điệp tới các tiến trình lân cận trên đồ thị Giải thuật phân tán do đó là giải thuật thực hiện đồng thời trên nhiều tiến trình Giải thuật phân tán có những đặc trưng sau:
• Các bộ xử lý hoạt động độc lập (ràng buộc không chặt)
• Dữ liệu vào độc lập, dữ liệu ra tại nhiều vị trí
• Các tiến trình có chương trình quản lý riêng rẽ, thực hiện đồng
Trang 33• Các tiến trình có tốc độ chạy khác nhau
• Truyền thông giữa các tiến trình không đồng bộ và không xác định
• Trạng thái hệ thống không xác định, mỗi tiến trình chỉ nhận biết một phần trạng thái của hệ thống
• Số bộ xử lý có thể không xác định
Giải thuật phân tán được mô tả dưới dạng giả mã như sau: Mỗi tiến trình t trong hệ thống sẽ được điều khiển bởi thông điệp theo nghĩa nó chỉ thực hiện tính toán khi nhận được thông điệp từ tiến trình khác Ngoại lệ duy nhất được phép là ít nhất một tiến trình lúc đầu gửi thông điệp một cách tự phát tới các tiến trình khác nếu không toàn bộ hệ thống sẽ rơi vào trạng thái
để không vô hạn và không có quá trình tính toán nào diễn ra Tương tự như thế một tiến trình lúc đầu có thể thực hiện các tính toán với mục đích khởi tạo
Giải thuật Task_t dưới đây mô tả toàn bộ hành trạng của một tiến trình t bất kỳ (các ký hiệu được lấy theo các ký hiệu đã mô tả trong hệ truyền thông điệp ở trên) Số kênh ra từ tiến trình được ký hiệu bởi t nt
Giải thuậtTask_t :
Trang 34Until tnhận biết điều kiện kết thúc toàn cục.
Bảng 2.1 Giải thuật Task_T
Tiến trình bắt đầu bằng việc thực hiện một số tính toán sau đó gửi t thông điệp tới một số tiến trình khác thông qua các kênh tin đi ra khỏi nó Nó cũng có thể không gửi thông điệp gì cả Sau đó t bước vào vòng lặp và thực hiện cho đến khi nhận biết điều kiện kết thúc toàn cục Tại mỗi lần lặp t đều thực hiện tính toán và gửi thông điệp Tiến trình nhận thông điệp kết thúc t quá trình xử lý địa phương của nó thông qua các thông điệp nhận được trong quá trình lặp Các thông điệp này báo cho t biết không còn thông điệp nào đến
nó nữa và nó có thể thoát khỏi vòng lặp
Mỗi lần lặp của t gồm một tập các lệnh được liên kết qua toán tử or Mỗi lệnh chỉ được thực hiện khi nhận được thông điệp, đồng thời một điều t kiện Bk nào đó phải được thoả mãn Điều kiện này phụ thuộc vào các thông điệp có thể nhận được Như thế mỗi lần chỉ thực hiện một lệnh Nếu không t
có điều kiện nào được thực hiện tiến trình sẽ bị treo Nếu nhiều hơn một điều kiện được thoả mãn một lệnh trong chúng sẽ được chọn một cách tuỳ tiện Tính bất định này cung cấp nhiều lựa chọn hơn khi thiết kế
Trang 35điệp có thể gửi tới tiến trình nhận trừ khi tiến trình nhận bị treo trong lúc nhận thông điệp trên kênh tin tương ứng khi toán tử gửi thông điệp đang thực hiện
Nó là không chặn khi tiến trình truyền thông điệp ngay lập tức rồi quay lại tiếp tục thực hiện các lệnh khác Toán tử gửi và nhận khi mang tính chặn hình thành cơ chế đồng bộ cho tiến trình Toán tử gửi không chặn đòi hỏi một vùng đệm cho các thông điệp đã được gửi đi nhưng chưa được nhận Khi truyền thông điệp tới nhiều hơn một tiến trình toán tử gửi được giả định truyền thông điệp đồng thời
Tính chặn hay không chặn của toàn tử gửi đặt ra một số vấn đề trong thiết kế giải thuật phân tán Khi toán tử gửi là chặn chúng ta không cần bộ đệm thông điệp Kịch bản này đem lại nhiều khó khăn cho người thiết kế khi
bế tắc trong truyền thông rất dễ xảy ra Toán tử gửi không bị chặn đòi hỏi một
bộ đệm thông điệp không giới hạn Như vậy chúng ta đứng trước hai thái cực khác nhau với bộ đệm bằng không và bộ đệm vô hạn Giữa hai thái cực này người ta đưa ra khái niệm dung lượng kênh là số thông điệp lớn nhất một k kênh tin có thể chứa trên bộ đệm Trong thiết kế người ta bắt đầu bằng giả định bộ đệm vô hạn sau đó thiết kế dần dần cho tới khi đạt tới một trạng thái nào đó giữa bộ đệm vô hạn và không có bộ đệm Trong nghiên cứu lý thuyết chúng ta sẽ giả định toán tử gửi có tính không chặn
2.2 Một số giải thuật phân tán điển hình
2.2.1 Bài toán tuyển chọn
Bài toán tuyển chọn là bài toán chọn một nút đứng đầu từ tập các ứng
cử viên khi các nút ban đầu chỉ biết định danh của chính nó Nút đứng đầu là một thành viên của N được tất cả các nút khác thừa nhận đứng riêng nhằm thực hiện một số tiến trình đặc biệt Một giải thuật giải quy được bài ết toántuyển chọn nếu nó thoả m ãn những iđ ều kiện sau:
Trang 36• Trạng ái k th ết thúc gồm hai trạng thái: được tuyển chọn và
không được tuyển chọn Khi một tiến ình đã mtr ở ột ạng ái tr ththì c bác ước ính toán t sau nó v ẫn ở trong trạng thái ày n
• Trong mỗi lần thực hiện chỉ duy nhất một tiến trình kết thúc ở trạng thái được tuyển chọn, các tiến trình còn lại ở trạng thái không được tuyển chọn
Tầm quan trọng của bài toán tuyển chọn trong môi trường phân tán bắt nguồn từ các trường hợp khi phối hợp tập trung phải diễn ra do kỹ thuật phân tán giải quyết một bài toán cụ thể không có hoặc cách tiếp cận tập trung đem lại hiệu năng hấp dẫn hơn Từ quan điểm điều khiển nhiều giải thuật phân tán thực sự là tập trung: có một tiến trình phối hợp thực hiện một số chức năng nhất định thay cho các tiến trình khác khi được yêu cầu (mô hình khách chủ) Giải thuật được thực hiện với các tin phục vụ duy nhất cho mục đích gửi yêu cầu và nhận kết quả Những giải thuật này có nhược điểm lớn là thất bại trong tiến trình phối hợp tập trung sẽ dẫn đến thất bại của toàn bộ giải thuật Nhược điểm này được giải quyết khi các tiến trình còn lại thoả thuận với nhau lựa chọn một trong số chúng đảm nhận vai trò điều phối viên
C ác giải thuật tuyển chọn đã được nghiên cứu kỹ khi G là vòng Dù chỉ xét trên một dạng đồ thị đơn giản nghiên cứu lý thuyết vẫn cho thấy rất nhiều tính chất cơ bản của giải thuật tuyển chọn Giải thuật đầu tiên được đưa ra là của Lelann (1977) với độ phức tạp thông tin O n( 2) Năm 1980 Hirschberg và Sinclair đưa ra giải thuật cho một vòng song hướng Số nút trên vòng không
Trang 37dụng vòng song hướng để giảm độ phức tạp thông tin Tuy nhiên năm 1982, Dolev, Klawe và Rodeh tuyển chọn cho vòng đơn hướng với độ phức tạp thông tin là 2nlogn O n + ( ) qua đó gián tiếp bác bỏ giả thiết của Hirschberg và Sinclair Cùng năm này Franklin đưa ra một giải thuật khác cho vòng song hướng với độ phức tạp thông tin là 2nlog + (n O n) nhỏ hơn kết quả trước đó của Hirschberg và Sinclair Sau đó là cuộc chạy đua tìm kiếm các giải thuật nhằm giảm độ phức tạp xuống hơn nữa Dolev giảm xuống còn 1.5nlog + n
O n( ) so với 2nlog + (n O n) lúc đầu Peterson lại đưa xuống 1.44nlog + ( ) n O nrồi lại Dolev đưa xuống 1.33nlog + ( ) Cuối cùng Burns chỉ ra rằng giới n O nhạn dưới cho nhân tử trước nlogn là 0.15 đạt được khi n = 2m cho cả vòng đơn hướng và song hướng
Phần dưới đây chúng i lấy ột tô m ví d v ụ ề giải thuật tuyển chọn th ng ôqua giải thuật ChangRoberts (1979) biến đổi t ừ gi thu Lelann Giải thuật ải ậthoạt động dựa trên nguyên lý “tiêu diệt có chọn lọc” Vòng được giả định là vòng đơn hướng Các tiến trình không biết kích thước của vòng (số nút trên vòng) Khởi đầu các nút gửi định danh của nó cho nút lân cận theo hướng của vòng bằng cách khởi động tự phát hoặc khởi động sau khi nhận được tin đầu tiên Mỗi nút khi nhận được tin chứa một định danh của nút nào đó sẽ so sánh với định danh của chính mình Nếu định danh tới lớn hơn định danh của nó nút sẽ bác bỏ khả năng nó là nút đứng đầu v định danh được tiếp tục truyền à
đi trên vòng Nút nh ận lại được định danh của nó (lúc n ày định danh đi đãđược một vòng mà ôkh ng bị ti u diệt ê ) sẽ tuyên bố mình là nút đứng đầu Giải thuật kết thúc và chỉ có một nút là nút đứng đầu
Trang 38Giải thuật ChangRoberts:
gửi id i tới nút n j bên phải
Thông điệp nhận: tin i = id k
Hành động:
if not initiated i then
initiated i = true
gửi id i tới nút n j bên phải
if id i < id k then gửi id k tới nút n j bên phải
else
if id i = id k then leader i = true
gửi thông điệp finish tới nút n j bên phải
Thông điệp nhận: tin i = finish
Hành động:
gửi thông điệp finish tới nút n j bên phải
Kết thúc
Trang 392.2.2 Bài toán đồng thuận
B ài toán đồng thuận là m b ột ài toán phối ợp ơ ản h c b yêu cầu ác tiến c
trình có cùng một d ữ ệu li ra chung dựa ên một tậptr các d ữ li v có ệu ào thểxung khắc Bài toán có ể được hth ình thức hoá như sau Xét m h ột ệ thốngtrong đó m ỗi tiến trình pi có m ột biến trạng thái đặc biệt xi là d ữ liệu ào v và yi
là d ữ liệu ra hay quyết định Ban đầu xi nhậngi trá ị ừ t một t có ập thứ ự t c yòn i
không xác định Mọi quyết định ên ytr i ôkh ng thể đảo ngược Một ời giải cho l
b ài toán đồng thuận phải đảm ảo những đ ều kiện sau b i
• Kết thúc: trong mỗi lần thực hiện yi đều có giá trị cuối với mỗi tiến trình không lỗi
• Đồng thuận: trong mỗi lần thực hiện nếu yi và yj được gán giá trị thì yi = yj cho mọi tiến trình không lỗi pi và pj Điều này có nghĩa mọi tiến trình không có lỗi không quyết định những giá trị xung khắc nhau
• Xác thực: trong mỗi lần thực hiện với một giá trị v tuỳ ý nào đó nếu xi=v với mọi tiến trình pi và yi được quyết định trong một số tiến trình không có lỗi pi thì yi = v Điều này có nghĩa nếu mọi tiến trình có cùng dữ liệu vào thì bất cứ giá trị quyết định nào cũng phải là dữ liệu vào này
Khi một tiến trình là ất ạith b không có ràng buộc n ào được cho trước trên quyết định ủa tiến trình n c ày
Dưới đây là m ột giải thuật đồng thuận đơn giản trong trường ợp ệ h h
thống có ất b á th ại ph huỷ với độ tin cậy f H ống ệ th được ả thiết có đồ ị gi thđầy đủ (m n ỗi út đều nối đến m nút khác) Mỗi tiến trình s có mọi ẽ ột tập các
gi trá ị mà nó ết t t bi ồn ại trong hệ thống Ban đầu ập ày t n chỉ chứa gi trị đầu á
Trang 40m t ọi ập nhận được ừ c t ác tiến trình kh ác và truyền ôth ng đại chúng nh ững gì
m c ới ập nhật ào ập ày ới ọi tiến trình khác Qu trình tiếp diễn trong f+1 v t n t m á chu kỳ Sau đó m ỗi tiến trình ẽ ác định y l gi trị nhỏ nhất trong tập gi tr s x à á á ị