Tính toán phân tán mang đến cho người truy cập trong suốt là sức mạnh nhiều máy tính và dữ liệu như người sử dụng cần để thực hiện bất kỳ công việc nhất định, và đồng thời, đạt hiệu suất cao và độ tin cậy mục tiêu. Ứng dụng trong cá hệ thống máy tính phân tán đã phát triển nhanh chóng trong thập kỷ qua. Các chủ đề của máy tính được phân tán là đa dạng và nhiều nhà nghiên cứu đang điều tra các vấn đề khác nhau liên quan đến cấu trúc phần cứng phân tán và việc thiết kế các phần mềm phân tán để các tiềm năng xử lý song song và khả năng chịu lỗi có thể khai thác. Trong bài tiểu luận này của nhóm em đã chọn đề tài “Truyền thông trong hệ phân tán” để có thể hiểu rõ các cách thức giao tiếp (truyền thông) giữa các tiến trình trong hệ phân tán.Bài tiểu luận gồm 3 phần:Chương 1: Tổng quan về hệ phân tánChương 2: Truyền thông trong hệ phân tánChương 3: Một số hệ thống file phân tán
Trang 1MỤC LỤC
Trang 2Lời nói đầu
LỜI NÓI ĐẦU
Ngày nay, các yêu cầu càng trở khắt khe đối với các hệ thống máy tính trongtương lai: về tốc độ xử lý, sự tin cậy của hệ thống ngay cả khi có sự cố xảy ra, khảnăng lưu trữ, tính mở rộng khi cần thiết và hiệu quả chi phí mà nó mang lại, do đó cầnphải thay thế cấu trúc truyền thống theo tổ chức máy tính của Von Neumann
Hệ phân tán đóng vai trò quan trọng trong lĩnh vực phát triển của công nghệmáy tính, đặc biệt là trong điều kiện phát triển bùng nổ của các mạng máy tính Sựphát triển của các mạng LAN, WAN cho phép hàng trăm, hàng nghìn hay thậm chíhàng triệu máy tính có thể kết nối với nhau Kết quả của sự phát triển công nghệ hiệnnay không chỉ đáng tin cậy mà còn tạo nên các hệ thống máy tính rất lớn, được kết nốibằng các đường kết nối tốc độ cao Chúng tạo nên các mạng máy tính lớn hoặc các hệphân tán, ngược với hệ thống tập trung trước đây, bao gồm cá máy tính đơn và có thể
cả thiết bị điều khiển đầu cuối (remote teminal)
Tính toán phân tán mang đến cho người truy cập trong suốt là sức mạnh nhiềumáy tính và dữ liệu như người sử dụng cần để thực hiện bất kỳ công việc nhất định, vàđồng thời, đạt hiệu suất cao và độ tin cậy mục tiêu Ứng dụng trong cá hệ thống máytính phân tán đã phát triển nhanh chóng trong thập kỷ qua Các chủ đề của máy tínhđược phân tán là đa dạng và nhiều nhà nghiên cứu đang điều tra các vấn đề khác nhauliên quan đến cấu trúc phần cứng phân tán và việc thiết kế các phần mềm phân tán đểcác tiềm năng xử lý song song và khả năng chịu lỗi có thể khai thác
Trong bài tiểu luận này của nhóm em đã chọn đề tài “Truyền thông trong hệ phân tán” để có thể hiểu rõ các cách thức giao tiếp (truyền thông) giữa các tiến trình
trong hệ phân tán
Bài tiểu luận gồm 3 phần:
Chương 1: Tổng quan về hệ phân tán
Chương 2: Truyền thông trong hệ phân tán
Chương 3: Một số hệ thống file phân tán
Trang 3Chương 1: Tổng quan về hệ phân tán
1.1 Khái niệm
Hệ thống phân tán bao gồm các máy tính (bao gồm cả các thiết bị khác nhưPDA, điện thoại di động…) được kết nối với nhau để thực hiện nhiệm vụ tính toán Hệthống phân tán xuất phát từ nhu cầu sử dụng khả năng tính toán tốt hơn và hiệu quảhơn bằng cách kết hợp khả năng tính toán của từng máy tính độc lập, điều đó đã trởthành hiện thực dựa trên những tiến bộ về công nghệ mạng Ba yếu tố quyết định tốc
độ tính toán trong các máy tính bao gồm: Tốc độ của bộ vi xử lý trung tâm (CPU), bộnhớ (RAM) và đường truyền trong bo mạch chủ (Bus) Đối với hệ thống phân tán, mộtyêu cầu mới quan trọng đã nảy sinh đó là vấn đề trao đổi thông tin giữa các máy tính,thiếu yếu tố này thì nhiệm vụ tính toán trên môi trường phân tán sẽ không thể thựchiện được Tốc độ truyền dẫn trong các công nghệ mạng ngày càng tăng đã tạo điềukiện cho sự phát triển các ứng dụng phân tán, các máy tính có thể trao đổi thông tin vàchia sẻ dữ liệu với nhau mà không phụ thuộc vào khoảng cách địa lý
Hệ thống phân tán là hệ thống các thành phần được đặt trên các máy tính mạng,chúng trao đổi thông tin và phối hợp các hoạt động chỉ bằng cách truyền tin báo vàngười sử dụng cảm giác như là một hệ thống đơn lẻ
Khái niệm phân tán được thể hiện bởi tính độc lập của từng máy tính nhưngphải phối hợp làm việc với nhau để người sử dụng không có cảm giác các thành phầnrời rạc Ví dụ, một hệ thống bán hàng bao gồm nhiều cửa hàng đặt tại những vị tríkhác nhau, việc nhập thông tin hàng hóa được thực hiện tại nhiều vị trí khác nhau (cáccửa hàng, nhà kho, …) , tuy nhiên các nhân viên khai thác đều có thể tìm thấy thôngtin theo yêu cầu của mình như thể các thông tin đó đang được lưu trữ trên máy tính củangười sử dụng
Trang 4Chương 1: Tổng quan về hệ phân tán
Hình 1.1.Hệ thống tính toán cụm
- Tính toán lưới bao gồm nhiều hệ thống phân tán thuộc về nhiều miền quản lýkhác nhau và thường không đồng nhất về phần cứng cũng như hệ điều hành
Hình 1.2 Kiến trúc phân tầng cho hệ thống tính toán lưới
1.2.2 Hệ thống thông tin phân tán
Một trường hợp khác trong hệ thống phân tán đó là các ứng dụng mạng qui môlớn, dữ liệu được đặt ở nhiều nơi nhưng việc xử lý ở mỗi nơi liên quan đến những nơikhác Trong nhiều trường hợp, các máy chủ chạy tiến trình cung cấp dịch vụ xử lý chomáy khách, máy khách đơn thuần chỉ gửi yêu cầu và nhận về kết quả đã được máy chủ
xử lý Tuy nhiên một yêu cầu đặt ra là cần phải có sự phối hợp xử lý giữa các máy chủ,một yêu cầu được đưa ra từ phía máy khách đến các máy chủ dữ liệu thì yêu cầu đóphải được thực thi trên tất cả các máy chủ hoặc chi cần một máy chủ không thực thiđược yêu cầu của máy khách thì tất cả các máy chủ khác cũng không được phép thựcthi yêu cầu này
Trang 5Chương 1: Tổng quan về hệ phân tán
Hình 1.3 Phần mềm trung gian là phương tiện truyền tin trong EAI
1.2.3 Hệ thống phân tán khắp nơi
Khi xuất hiện các thiết bị di động và thiết bị nhúng, chúng ta phải đương đầuvới các hệ thống phân tán mà ở đó tính không ổn định là điều tất yếu Các thiết bịtrong hệ thống loại này thường là những thiết bị di động với đặc trưng là vị trí không
ổn định và kết nối mạng không dây, do đó các hệ thống này được gọi là hệ thống lantỏa phân tán (Distributed pervasive system) Hệ thống này thiếu vắng sự kiểm soátnhân công, cấu hình của các thiết bị này do chủ sở hữu thiết bị đó qui định, nếu khôngthì thiết bị sẽ tự động khám phá môi trường và lựa chọn cấu hình được cho là phù hợpnhất
Trang 6Chương 1: Tổng quan về hệ phân tán
1.3 Đặc trưng và mục tiêu của hệ phân tán
Hệ phân tán mang tính hữu dụng là nhờ có các đặc tính: chia sẻ tài nguyên, tính
mở, tính đồng thời, tính co giãn, tính chịu lỗi và tính trong suốt
1.3.1 Kết nối người sử dụng và tài nguyên
Mục tiêu chính của hệ thống phân tán là kết nối người sử dụng và tài nguyênmạng Nhiệm vụ chính của một hệ thống phân tán là cho phép người sử dụng đượckhai thác thông tin mà không phụ thuộc vị trí địa lý của người đó Như vậy nảy sinhhàng loạt vấn đề liên quan đến việc khai thác và sử dụng thông tin: ai được phép truynhập, truy nhập thông tin ở mức độ nào, thời gian nào được phép truy nhập, tần suấttruy nhập thông tin…
Tài nguyên bao gồm những thành phần phần cứng như: đĩa, máy in, và nhữngthành phần phần mềm như: file, cơ sở dữ liệu và những đối tượng dữ liệu khác Lợi íchcủa việc truy cập và hệ thống chứa các cơ sở dữ liệu, chương trình, tài liệu và nhữngthông tin chung khác được thể hiện rõ trong hệ thống chia sẻ thời gian hoắc hệ thốngnhiều người sử dụng vào đầu những năm 1960 và các hệ thống UNIX MultiUser vànhững năm 1970
Tài nguyên của máy tính nhiều người dùng thường được dùng chung cho tất cảnhững người sử dụng nó, những người làm việc trong các máy trạm đơn lẻ của cácmáy tính các nhân không có đặc tính hữu ích này Các tài nguyên chung trong hệ phântán được đóng gói vật lý trong một máy tính của hệ, và từ các máy khác chỉ có thể truycập vào bằng con đường truyền thông
Để dùng chung một cách hiệu quả, tài nguyên phải được quản lý bằng mộtchương trình cung cấp giao diện truyền thống cho phép truy cập vào tài nguyên chung,
sử dụng và cập nhật tài nguyên thường xuyên và chắc chắn
1.3.2 Tính mở
Tính mở của hệ thống máy tính là đặc trưng để xác định xem hệ thống có thể
mở rộng theo nhiều cấp độ khác nhau hay không
Hệ phân tán được gọi là mở nếu nó cung cấp các dịch vụ theo các quy tắc chuẩn
mô tả cú pháp và ngữ nghĩa của dịch vụ đó Thông thường trong hệ phân tán các dịch
vụ thường đặc tả qua các giao diện bằng ngôn ngữ đặc tả giao diện (InterfaceDefinition Language- IDL) Vì thế chỉ quan tâm đến cú pháp Nó cho phép các dịch vụ
Trang 7Chương 1: Tổng quan về hệ phân tán
khác nhau cùng chung sống Nếu các giao diện của hệ phân tán được đặc tả đầy đủ vàđúng đắn
Xét hai khái niệm của hệ phân tán là khái niệm liên tác (Interroperability) vàkhái niệm chuyển mang (portability)
Liên tác: các cài đặt của các hệ thống hoặc thành phần hệ thống từ các
nhà sản xuất khác nhau có thể làm việc với nhau thông qua liên tác
Chuyển mang: nhờ chuyển mang mà một ứng dụng được phát triển cho
hệ phân tán A có thể thực hiện không cần thay đổi gì trên một hệ phântán B khác, với điều kiện được cài đặ cùng giao diện như A
Tính mở hoặc đóng của hệ thống được xét dựa theo khả năng hỗ trợ việc mởrộng của thiết bị phần cứng (ví dụ: bổ sung các thiết bị ngoại vi, bộ nhớ và các giaodiện truyền thông) và hỗ trợ việc mở rộng các phần mềm, như: bổ sung thêm các tínhnăng của hệ điều hành, các giao thức truyền thông và các dịch vụ chia sẻ tài nguyên.Tính mở của các hệ phân tán được đánh giá theo mức độ bổ sung các dịch vụ chia sẻtài nguyên mà không phá vỡ hoặc lặp lại các dịch vụ hiện có
Tính mở được thể hiện nhờ những giao diện phần mềm chủ chốt của hệ thốnggiao diện đó được xác định rõ và lập thành tài liệu sẵn cho những người phát triểnphần mềm
Để có tính mở, hệ thống phân tán phải có chuẩn giao tiếp với hệ thống, như vậy
sẽ dễ dàng hơn trong việc trao đổi tài nguyên Một hệ thống mở phải tuân thủ các tiêuchuẩn giao tiếp nào đó đã được công bố, nghĩa là sản phẩm của các nhà sản xuất khácnhau có thể tương tác với nhau theo tập các luật và các qui tắc hoặc các tiêu chuẩn đãđược công bố, ví dụ: ngôn ngữ IDL, XML, giao thức dịch vụ Web…
Trang 8Chương 1: Tổng quan về hệ phân tán
- Di chuyển (Migration): Ẩn quá trình chuyển vị trí lưu trữ dữ liệu
- Đặt lại vị trí (Relocation): Ẩn quá trình di chuyển dữ liệu mà không làm giánđoạn hoạt động của người sử dụng
- Nhân bản (Replication): Che giấu việc tạo ra bản sao dữ liệu
- Tương tranh (Concurrency): Che giấu việc chia sẻ tài nguyên cho nhiều người
sử dụng
- Lỗi (Failure): Che giấu lỗi và phục hồi tài nguyên
- Bền bỉ (Persistence): Che giấu tài nguyên phần mềm được tải vào bộ nhớ hay
ở trên ổ đĩa
1.3.4 Tính co giãn
Tính co giãn (Scalability) Một hệ phân tán được gọi là có tính co giãn nếu nóthích nghi với sự thay đổi quy mô của hệ thống Thể hiện trên các khía cạnh sau:
• Dễ bổ sung người sử dụng và tài nguyên hệ thống
• Khi hệ thống thay đổi quy mô về mặt địa lý dẫn đến sự thay đổi về vị tríđịa lý của người sử dụng và các tài nguyên
• Hệ thống có thay đổi quy mô về quản trị Nếu hệ phân tán có tính cogiãn thường ảnh hưởng đến hiệu năng của hệ thống (hiệu năng của hệthống là hiệu quả năng lực hoạt động của đối tượng)
Có ba giải pháp phổ dụng để giải quyết vấn đề co giãn của hệ phân tán:
• Ẩn giấu
• Phân tán: phân nhỏ thành phần hệ thống và phân bố chúng trên phạm vicủa hệ thống (quản lý phân cấp) Ví dụ DNS ((Distributed NetworkSystem) xác định theo cách phân cấp miền lớn thành các miền con Vớiphương pháp này sẽ giải quyết được vẫn đề khi thêm người dùng hay tàinguyên vào hệ thống
• Nhân bản: nhân bản một thành phần nào đó của hệ thống Ví dụ tàinguyên dữ liệu đặt tại các vị trí khác nhau trong hệ thống
1.3.5 Tính đa nhiệm
Khi một số tiến trình cùng tồn tại trong một máy tính, ta nói rằng, chúng đượcthực hiện đồng thời Nếu máy tính chỉ có một bộ xử lý trung tâm, thì tính đồng thờisong song với nhau như hệ điều hành UNIX, WINDOWS Server cung cấp và điềukhiển các tiến trình truy cập vào tài nguyên của hệ thống Các ứng dụng chạy trênserver phải được tách rời nhau để một của ứng dụng này không làm hỏng ứng dụngkhác
Tính đa nhiệm đảm bảo một tiến trình không sử dụng toàn bộ tài nguyên hệthống vai trò của server
Trang 9Chương 1: Tổng quan về hệ phân tán
Như chúng ta đã bàn ở trên, server như là một nhà cung cấp dịch trình tínhtoán của mình Một Client có thể gọi thủ tục ở xa của nhiều hơn một máy tính.Như vậy sự thực thi của chương trình Client lúc này không còn gói gọn trên một máytính của Client mà nó trải rộng trên nhiều máy tính khác nhau Đây chính là mô hìnhcủa ứng dụng phân tán (Distributed Application)
1.4 Ứng dụng
Một số bài toán mà hệ phân tán được áp dụng:
• Dịch vụ gửi rút tiền tại các ngân hàng: gửi tiền nhiều nơi và rút nhiều nơi Hệphân tán đã được ứng dụng trong dịch vụ ngân hàng Việc khách hàng có thể thực hiệncác giao dịch tại nhiều nơi trên Việt Nam hoặc thậm trí trên thế giới Khách hàng gửitiền tại một chi nhánh A của một ngân hàng thì có thể rút tại bất kỳ chi nhánh B,C…của ngân hàng đó chứ không nhất thiết phải tới đúng chi nhánh A để rút số tiền cầnthiết khi mà khách hàng đi công tác hoặc du lịch
• Hệ thống ATM: một ứng dụng khác của hệ phân tán cho ngân hàng đó làkhách hàng có thể tới các máy ATM được phân phối ở nhiều nơi để rút tiền mặt
• Quản lý công dân ra vào cửa khẩu: ví dụ như một người khách nước ngoài tớiViệt Nam thì nhân viên hải quan sẽ biết người đó đã tới Việt Nam bao nhiêu lần vàmỗi lần đó tới Việt Nam để làm gì Có thể các lần trước thì người đó tới Việt Nam quamột của khẩu khác nhưng hệ thống vẫn biết là họ đã tới Việt Nam
Trang 10Chương 2: Truyền thông trong hệ phân tán
CHƯƠNG 2: TRUYỀN THÔNG TRONG HỆ PHÂN TÁN
2.1 Tổng quan về truyền thông trong hệ phân tán
Trao đổi thông tin giữa các tiến trình là trọng tâm của tất cả các hệ thống phântán, do đó cần phải nghiên cứu kỹ lưỡng cách thức các tiến trình trao đổi thông tin vớinhau Thực chất trao đổi thông tin trong hệ thống phân tán là chuyển thông điệp domạng máy tính đảm nhiệm, quá trình đó phức tạp hơn rất nhiều so với việc trao đổithông tin trên một máy tính Các hệ thống phân tán hiện đại bao gồm hàng triệu tiếntrình trao đổi thông tin với nhau qua mạng Internet không tin cậy, nếu không thay đổicác phương thức truyền thông nguyên thủy thì sẽ rất khó phát triển các ứng dụng phântán Về bản chất, trao đổi thông tin giữa các tiến trình vẫn sử dụng các giao thức truyềntin truyền thống đã qui định trong từng lớp mạng Các giao thức này được ứng dụng đểxây dựng các mô hình truyền tin khác như Gọi thủ tục từ xa (RPC), gọi đối tượng từ
xa (RMI), phần mềm trung gian hướng thông điệp (MOM) Mô hình truyền tin đầutiên trong hệ thống phân tán là RPC, bản chất của nó là ẩn những thủ tục phức tạptrong việc truyền thông điệp và đó là cách lý tưởng trong các ứng dụng khách/chủ
Về sau, mô hình này được cải tiến dựa trên việc cài đặt các đối tượng phân tán.Một số ứng dụng phân tán sử dụng phương thức truyền thông điệp, tính trong suốt củaphương thức này khá thấp, do đó nên chuyển sang mô hình hàng đợi (tương tự như thưđiện tử) hoặc sử dụng lớp phần mềm trung gian hướng thông điệp (MOM) để bảo đảmviệc phân loại các thông điệp Các dữ liệu đa phương tiện như âm thanh, hình ảnh đòi hỏi việc truyền tin cần phải đáp ứng yếu tố thời gian và tính liên tục, do đó môhình truyền thông điệp dường như chưa đáp ứng được yêu cầu, khi đó phải sử dụngphương pháp truyền theo luồng (stream) Vấn đề cuối cùng cần nghiên cứu là việc sửdụng phương thức truyền tin điểm với điểm-điểm hay điểm-nhóm (multicast), nghĩa làcùng một nội dung sẽ gửi một hay nhiều tiến trình khác.
2.1.1 Mô hình phân tán
Mô hình đối tượng phân mảnh (fragmented objects )
Các đối tượng có thể được phân chia trong một vài phần, nằm trên nodes khácnhau, và tương tác để cung cấp các chức năng của đối tượng
Ví dụ : Các đối tượng ràng buộc trên mạng toàn cầu ( Internet)
Mô hình đối tượng tái tạo (replicated objects )
Có nhiều bản sao, hoặc tái tạo hoặc các đối tượng cùng đồng thời tồn tại
Tăng tính khả dụng và cải thiện hiệu suất của hệ thống
Tuy nhiên, sự tái tạo của một đối tượng phải được giữ ổn định, thêm chi phí
Trang 11Chương 2: Truyền thông trong hệ phân tán
Mô hình đối tượng di trú ( hoặc di động - migratory /mobile )
Trong đó có một đối tượng có thể chuyển từ một node đến một số khác
Đối tượng di động được sử dụng để cải thiện hiệu suất thông qua các cân bằngtải, và để tự động điều chỉnh các ứng dụng để thay đổi môi trường
Những mô hình trên có thể được kết hợp, ví dụ đối tượng phân mảnh cũng cóthể được tái tạo v.v…
Lợi ích của mô hình phân tán
Phát triển các ứng dụng có tính trừu tượng, tính mềm dẻo cao
Cho phép đóng gói các việc thực hiện đối tượng, được đặt trên bất kỳ trangWeb nào, thực hiện: truy cập vào địa phương, quản lý sự kiện, bảo mật v.v…
Các ứng dụng có thể được tái sử dụng qua đóng gói đối tượng bằng các theomẫu
2.1.2 Đối tượng phân tán
Một ứng dụng phân tán sử dụng các đối tượng từ xa để thực hiện một tập cáctiến trình xác định trên các mode của một mạng
Các phương thức đối tượng thực hiện thông qua tiến trình hoặc các thread và cóthể gồm các lời gọi đến các phương thức đối tượng khác
Xét mô hình đối tượng phân tán giữa 2 site 1 và site 2
Hình 2.1: Mô hình giữa 2 đối tượng phân tán site 1 và site 2
Gồm 3 bước:
Trang 12Chương 2: Truyền thông trong hệ phân tán
Việc gọi đối tượng trong cùng một quá trình (ví dụ: A và B): đây là mộtlocal invocation
Việc gọi thực hiện theo các quy trình khác nhau trên cùng một trang Web(D và E): đây là một out-of-process invocation
Việc gọi và đối tượng trên các nodes khác nhau (ví dụ C và D): đây làmột invocation từ xa
Ứng dụng chí có các Local Invocations được thực thi
=> Không phải là hệ thống đối tượng phân tán
Các định dạng không cục bộ của invocation dựa vào một đối tượng môi giớiyêu cầu (ORB), hoặc một Middleware hỗ trợ để các đối tượng được phân tán giao tiếpvới nhau (Ví dụ CORBA)
2.1.2.1 ORB (Object Request Broken)
ORB có các chức năng sau :
Xác định và tìm đối tượng
Kết buộc Client để phục vụ
Thực hiện các phương thức triệu gọi trên đối tượng
Quản lý các đối tượng (tạo, kích hoạt, xóa bỏ đối tượng)
Server cung cấp các dịch vụ của mình nhờ một tập hợp các cuộc gọi thủ
tục từ xa (RPC - Remote Procedure Call ) thông qua các phương pháptriệu gọi ( invocation method) trên một đối tượng từ xa : Stub-Skeleton
2.1.2.3 Midleware
Middleware trong hệ thống phân tán là một loại phần mềm hệ thống phân tánkết nối các loại ứng dụng khác nhau và cung cấp phân tán minh bạch cho các ứngdụng của nó kết nối Nó được sử dụng để nối thành phần không đồng nhất xuất hiệntrong các hệ thống Dựa trên các tiêu chuẩn quan trọng hoặc các sản phẩm trên thị
Trang 13Chương 2: Truyền thông trong hệ phân tán
trường, middleware có thể được chia thành nhiều loại: Socket, RPC, RMI, DCE,DCOM, CORBA v.v
2.1.2.4 Socket
Socket là một phương pháp để thiết lập kết nối truyền thông giữa một chươngtrình yêu cầu dịch vụ ( client) và một chương trình cung cấp dịch vụ (server) trênmạng
Mỗi socket có thể được xem như một điểm cuối trong một kết nối Một khi socket
đã được thiết lập phù hợp ở cả hai máy tính có thể trao đổi dịch vụ và dữ liệu
Các hoạt động trên Socket thường là :
Tùy thuộc vào các giao thức mà họ đang interfacing, Socket phân thành ba loại:
datagram
stream
raw sockets
Hạn chế của Scoket
- Khi cần kết nối nhiều máy tính với nhau để trao đổi dữ liệu
=> Không thực hiện được vì bộ nhớ hạn chế
- Mỗi phần mềm chỉ sử dụng trong một flatform cho trước
=> Không thuận lợi để phát triển và test thử nghiệm
Hiện nay, cơ chế procedure call thường được sử dụng trong hệ phân tán
Trang 14Chương 2: Truyền thông trong hệ phân tán
Trong hệ thống RPC, Server chính là máy tính cung cấp các thủ tục ở xa chophép các chương trình trên các máy tính khác gọi thực hiện Client chính là cácchương trình có thể gọi các thủ tục ở xa trong quá trình tính toán của mình Một Client
có thể gọi thủ tục ở xa của nhiều hơn một máy tính Như vậy sự thực thi của chươngtrình Client lúc này không còn gói gọn trên một máy tính của Client mà nó trải rộngtrên nhiều máy tính khác nhau Đây chính là mô hình của ứng dụng phân tán(Distributed Application)
Khác với gọi thủ tục cục bộ (trong một tiến trình), thủ tục được gọi từ xa đượcthực hiện trong ngữ cảnh của một tiến trình khác, và tiến trình đó có thể chạy ở máykhác
RPC giúp đơn giản hoá lập trình truyền thông, do người lập trình không phải tựviết toàn bộ phần mã phục vụ truyền thông giữa các tiến trình
2.2.2 Cơ chế hoạt động
Ý tưởng phương pháp gọi thủ tục từ xa là che giấu quá trình thực hiện thủ tụctrên máy tính khác (đảm bảo tính trong suốt) Điều này được thực hiện bằng cách chegiấu quá trình trao đổi thông tin giữa các máy tính Khi thực hiện gọi thủ tục từ xa,một thành phần trên máy khách (gọi là - Client stub) sẽ đóng gói các tham số vàothông điệp và yêu cầu thông điệp đó phải được chuyển đến máy chủ
Tại máy chủ, một thành phần tương ứng với Stub (gọi là Skeleton) sẽ giải mãthông điệp đã nhận được và thực thi các mã lệnh như phương pháp gọi thủ tục truyềnthống, sau đó trả về lại được đóng gói thành thông điệp và trả về cho Stub Stub trênmáy khách sẽ giải mã thông điệp và trả về cho chương trình gọi các giá trị hoặc các
Trang 15Chương 2: Truyền thông trong hệ phân tán
tham số theo yêu cầu Quá trình xử lý giữa Client stub và Server stub hoàn toàn trongsuốt đối với lời gọi thủ tục
Để sử dụng tính năng gọi thủ tục từ xa, một chương trình trên máy chủ phải cungcấp các dịch vụ mô tả trong ngôn ngữ RPC Mỗi máy chủ được gán tên và số chươngtrình, tất cả các dịch vụ được khai báo trong danh sách với đầy đủ các tham số thể hiệndịch vụ Với nguyên tắc này, ngôn ngữ RPC cho phép thực hiện các kiểu dữ liệu đơngiản cũng như các dữ liệu phức tạp như: struct, enum Qui trình thực hiện bao gồmcác bước sau:
- Máy khách sử dụng tính năng gọi thủ tục cục bộ trong Stub Client stub gửi cáctham số đến máy chủ bằng cách gửi yêu cầu RPC
- Yêu cầu của Client Stub được Skeleton trên máy chủ phân tích
- Thực hiện thủ tục đã được phân tích trên máy chủ
- Máy chủ trả về kết quả thực hiện cho máy khách
Phương pháp gọi thủ tục từ xa thể hiện quan điểm tách biệt giữa giao diện và phầncài đặt, xuất phát từ việc khai báo giao diện, phần mềm trung gian tạo các mã lệnh hỗtrợ cho việc xử lý phân tán bằng cách thể hiện các ứng dụng dưới dạng ngữ nghĩatruyền thống trên máy cục bộ, tuy nhiên nó phải đảm bảo nhiều nhiệm vụ phức tạpnhư: truyền dữ liệu, đồng bộ tiến trình Quá trình thực hiện gọi thủ tục từ xa được thựchiện qua các bước sau:
- Tiến trình muốn thực hiện thủ tục ở máy client sẽ gọi client stub
- Client stub sẽ tạo một bản tin và có lời gọi đến hệ điều hành của client đó
- Hệ điều hành của máy client sẽ gửi bản tin đó tới hệ điều hành của máy server
- Hệ điều hành của server sẽ gửi bản tin tới server stub (Skeleton)
- Skeleton lấy các thông tin của gói tin và gọi server tương ứng
- Server thực hiện công việc được yêu cầu và trả kết quả về cho Skeleton
- Skeleton đóng gói kết quả đó vào bản tin rồi gọi hệ điều hành của server đó
- Hệ điều hành của máy server này sẽ gửi bản tin kết quả đó hệ điều hành củamáy client
- Hệ điều hành của máy client sẽ gửi bản tin cho client stub
- Client stub sẽ mở gói tin kết quả và trả về cho client
Trong đó, client stub và Skeleton ở máy client và server là thành phần nhằm giảmnhẹ công việc cho client và server, làm cho hệ thống hoạt động một cách trong suốthơn
Trang 16Chương 2: Truyền thông trong hệ phân tán
Hình 2.2 RPC giữa một client và server
- Truyền giá trị: các tham số được truyền đi là các giá trị cụ thể Các thủ tục đượcgọi đến sẽ coi các tham biến được truyền kiểu tham trị như là các biến được khởi tạocục bộ, có thể thay đổi giá trị nhưng lại không ảnh hưởng tới giá trị gốc trong lần gọisau Vấn đề đặt ra khi truyền tham trị là yêu cầu giữa các máy phải có sự đồng nhất vềviệc biểu diến dữ liệu và các kiểu dữ liệu
- Truyền tham chiếu: các tham số được truyền đi là con trỏ hay biến chứa địa chỉcủa nơi chưa giá trị thực của chúng Các thủ tục được gọi sẽ căn cứ vào địa chỉ này đểtham chiếu đến giá trị khi tính toán Khi giá trị này bị thay đổi trong khi thực hiện thủtục thì sẽ được thông báo cho client và các lần gọi sau sẽ dùng giá trị mới đó
2.2.4 Một số mô hình RPC mở rộng
2.2.4.1 RPC dị bộ (Asynchronous RPC).
Tư tưởng thực hiện là: client gửi tới server lời gọi thủ tục và chờ bản tin chấpnhận từ server Phía server sẽ gửi bản tin chấp nhận về cho client thông báo đã nhậnđược yêu cầu và bắt đầu thực hiện yêu cầu RPC đó Lúc này client sẽ tếp tục thực hiệncông việc của mình mà không chờ kết quả từ server như ở RPC truyền thống