Tải bản đầy đủ (.pdf) (103 trang)

Giáo trình Java Ngô Lan

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.39 MB, 103 trang )

1
Java và xử lý phân tán
(45 tiết)
1. Nội dung:
 Giới thiệu những qui tắc và khái niệm liên quan đến thiết kế hệ thống phân
tán.
 Tổng quan về các vấn đề và công nghệ giải pháp trong xử lý phân tán
 Giới thiệu về giao thức truyền thông trong xử lý phân tán
 Hệ điều hành phân tán và chia sẻ dữ liệu
 Các đối tượng xử lý phân tán
 Java Network Programming, java RMI
2. Tài liệu tham khảo:
Distributed Systems: Concepts and Design
Distributed Programming - Gabriel Oteniya and Milton Chau Keng Fong –
Macao
Java Distributed computing
Addison_Wesley, Java Network Programming and Distributed Computing
3. Yêu cầu:
- Có kiến thức cơ bản về lập trình h
ư
ớng đối tượng và java cơ bản
- Làm bài tập lớn. (Thiết kế và cài đặt một chương tr
ình x
ử lý phân tán sử
dụng RMI)
4. Hình thức thi: Trắc nghiệm + Lập trình.
2
Chương 1 – Tổng quan về xử lý phân tán
1. HỆ PHÂN TÁN
1.1Định ngh
ĩa h


ệ phân tán
Có nhiều định ngh
ĩa khác nhau v
ề hệ phân tán, dưới đây là ba định ngh
ĩa
được nhiều người chấp nhận nhất:
Hệ thống phân tán là một hệ thống gồm các thành phần xử lý phân tán, giao
tiếp với nhau qua một cơ sở hạ tầng truyền thông chung
Định ngh
ĩa 1:
Hệ phân tán là một hệ thống có chức năng và dữ liệu phân
tán trên các trạm (máy tính) được kết nối với nhau qua một mạng máy
tính.
Định ngh
ĩa 2
: Hệ phân tán là một tập các máy tính tự trị được kết nối với
nhau bởi một mạng máy tính và được cài đặt phần mềm hệ phân tán.
Định ngh
ĩa 3
: Hệ phân tán là một tập các máy tính độc lập giao tiếp với
người sử dụng như một hệ thống thống nhất và toàn vẹn ( A single
coherent system).
Như vậy:
Hệ phân tán = Mạng máy tính(+) Phần mềm hệ phân tán.
( Distributed System = Computer Network (+) Distributed System
Software)
Về cơ bản, định ngh
ĩa 3 cũng tương đươ
ng với định ngh
ĩa 2. B

ởi vì một
tập hợp các máy tính độc lập muốn trở thành một hệ thống thống nhất và
toàn vẹn thì nó phải được kết nối thành một mạng máy tính, trên đó cài
đặt phần mềm hệ phân tán ( chẳng hạn hệ điều hành phân tán –
Distributed Operating System) Bản thân một mạng máy tính c
ũng l
à m
ột hệ phân
tán. Bởi vì trên
đó có
các phần mềm cài đặt các giao thức truyền thông là các phần
mềm hệ phân tán.
Một số ví dụ khác về các hệ phân tán:
+ Mạng máy tính. Mạng là một tập các máy tính/thiết bị chuyển mạch được
kết nối bởi các liên kết truyền thông nhằm chia sẻ thông tin và tài nguyên.
Trong mạng này, các tài nguyên trở nên khả dụng đối với bất kỳ người sử dụng
nào trên mạng.
+ Hệ thống thông tin có thể thực hiện tự động các lệnh trong việc sử lý ở văn
phòng. Hệ thống đó được sử dụng từ nhiều văn ph
òng khác nhau, t
ừ nhiều địa
điểm khác nhau. Mỗi trạm có thể tham gia vào một ứng dụng toàn cục trong hệ
thống. Người sử dụng chỉ kết nối vào hệ thống và sử dụng dữ liệu mà không
cần biết dữ liệu đó ở tại máy nào trong hệ thống. Người sử dụng luôn ngh
ĩ r
ằng
3
mình
đang làm vi
ệc một cách độc lập không hề liên quan đến các máy tính

khác.
+ World Wide Web. Đó là một mô hình của tài liệu phân tán. Để tìm thấy tài
liệu, người sử dụng chỉ chỉ ra được nội dung mà mình muốn tìm thì toàn bộ tài
liệu sẽ xuất hiện trên màn hình. Bạn chỉ phải đưa ra một cái tên duy nhất trong
khung URL (Uniform Resource Locator). Người sử dụng luôn biết được là tài
liệu mà mình đang sử dụng có từ nhiều nơi khác nhau và được sử lý bởi các nhà
phục vụ khác nhau.
Các hệ điều hành phân tán : Dòng hệ điều hành phân tán xuất phát từ
Unix là Unix Berkeley Software Distribution ( hay Unix BSD). Network
File System (NFS) của Sun phát triển dựa vào dòng Unix BSD. Ngoài ra
có các hệ điều hành phân tán như Amoeba, Chorus, Mach,…dành cho các
công ti, các viện, trung tâm nghiên cứu. Các dịch vụ thông tin trên mạng như
Email, E-commerce, E-learning, E-healt,…
HDH phân tán, thì nó phải làm cho tính phân tán trở nên trong suốt đối với
người dùng. Ngh
ĩa l
à nó s
ẽ đem yêu cầu tính toán chia nhỏ ra, gửi đến các máy
trạm, và yêu cầu thực hiện. Thực hiện xong sẽ tổ chức kết quả trả về đề đưa ra cho
người dùng.
Nghĩa là, nó là bước tiếp theo của hệ điều hành mạng.
Hệ thống đặt vé máy bay: hình th
ức
đ
ặt vé máy bay qua
m
ạng internet
Vi
ệc nâng cấp hoặc mở rộng các hệ phân tán tương đối dễ dàng. Đặc điểm
này là do các máy tính đ

ộc lập, nhưng đồng thời nó ẩn chứa khả năng tham gia vào
h
ệ thống như là một thực thể hoàn chỉnh. Một hệ phân tán thông thường không
dược lưu trữ một cách liên tục. Đối với người sử dụng, hệ phân tán là trong suốt.
Đ
ể hỗ trợ các máy tính và mạng không đồng nhất trong khi nhìn nhận với quan
đi
ểm một hệ thống đơn, hệ phân tán thường được tổ chức bằng các phương tiện
c
ủa một tầng phần mềm m
à nó được th
ay th
ế một cách logic giữa một tầng cao h
ơn
g
ồm người sử dụng và các ứng dụng với tầng thấp hơn của hệ điều hành. Hệ phân
tán đôi khi c
òn
được gọi là phần trung gian (
middleware).
1.2 Phân loại hệ phân tán:
Trước đây, hệ phân tán được chia thành ba loại : hệ điều hành hệ phân
tán, cơ sở dữ liệu hệ phân tán và các hệ thống tính toán hệ phân tán.
Ngày nay, hệ phân tán được phân chia như sau:
- Hệ phân tán mang tính hệ thống: hệ điều hành phân tán.
- Hệ phân tán mang tính ứng dụng: các hệ thống truyền tin phân tán.
1.3 Đặc Điểm của hệ phân tán:
4
Tính chia s
ẻ tài nguyên:

Gi
ải quyết bài toán chia sẻ tài nguyên trong hệ
th
ống (resource sharing)
Có 2 mô hình cho bài toán chia s
ẻ tài nguyên:
+ Mô hình Client-Server
+ Mô hình h
ướng đối tượng.
Tính m
ở:
B
ổ sung thêm
d
ịch vụ mới mà không ảnh hưởng tới các hoạt động
đ
ã có.
Tính tương tranh: mang l
ại những thuận lợi của việc thực thi cao hơn.
Trong h
ệ phân tán đa mục đích, chúng ta có thể khai thác tính t
ương tranh giữa
nh
ững
quá trình x
ử lý ở máy khách và giữa các quá trình xử lý ở máy chủ, nhưng
chúng ta không th
ể khai thác tính tương tranh với những ứng dụng đơn trừ khi
nh
ững chương trình ứng dụng đã được tạo ra như là hệ thống của quá trình xử lý

tương tranh.
Có th
ể áp dụn
g phương th
ức tuần tự thời gian hoặc phương pháp gán
nhãn thời gian.
Khả năng thay đổi quy mô: là một sự quan tâm lớn trong việc thiết kế hệ
phân tán suốt một thập kỷ qua, và tầm quan trọng của nó vẫn còn tiếp tục. Bản sao
dữ liệu và sự phân phối của việc nạp vào những máy chủ là những điểm mấu chốt
của công nghệ mà được sử dụng để xác định địa chỉ của nó.
Khả năng chịu lỗi: có thể được định địa chỉ một cách hiệu quả hơn trong hệ
phân tán hơn những kiến trúc của những hệ thống máy tính trung tâm. Dư thừa
phần cứng có thể được khai thác để chắc chắn rằng những tác vụ chính yếu được
phân phối cho những máy tính khác khi nó bị lỗi. Nhưng khả năng phục hồi lỗi từ
phần cứng và phần mềm mà không mất dữ liệu đ
òi h
ỏi việc thiết kế một cách cẩn
thận.
Tính co dãn: Kh
ả năng tương thích của hệ thống.
Tính trong su
ốt:
Ẩn giấu sự rời rạc v
à những nhược điểm nếu có của hệ
phân tán đ
ối với ng
ười sử dụng (end
-user ) và nh
ững nh
à lập trình ứng dụng

(application program
mer).
Theo tiêu chu
ẩn ISO cho hệ phân tán ISO / IS /
10746 tên là "
Open distributed processing reference model" 1995 đ
ã cụ thể hóa tám
d
ạng trong suốt:
a) Trong su
ốt truy cập (Access transparency): che giấu sự khác biệt về cách
bi
ểu diễn và cách truy cập tài nguyên.
5
b) Trong su
ốt về vị trí (Location tra
nsparency): che gi
ấu vị trí của tài
nguyên.
Hai d
ạng trong suốt vừa trình bày được gọi chung là trong suốt mạng
(network transparency).
c) Trong su
ốt di trú (Migration transparency): che giấu khả năng chuyển vị
trí c
ủa tài nguyên.
d) Trong su
ốt về việc định vị
l
ại (Relocation transparency): che giấu việc di

chuy
ển của tài nguyên khi đang được sử dụng.
e) Trong su
ốt nhân bản (Replication transparency): che giấu t
ình trạng
tình tr
ạng sử dụng bản sao của tài nguyên.
Che gi
ấu sự che sẻ tài nguyên tương tranh (Concuren
cy transparency).
f) Trong su
ốt sự cố (Failure transparency): che giấu lỗi hệ thống nếu có.
g) Trong su
ốt khả năng di chuyển t
ài nguyên (Persistence transparency):
che gi
ấu việc di chuyển tài nguyên từ bộ nhớ ngoài vào bộ nhớ trong và ngược lại.
1.4 Khái niệm về phần cứng
Hệ phân tán gồm nhiều bộ xử lý, có một vài cách khác nhau để tổ chức
phần cứng liên kết và giao tiếp cùng nhau.
Phân lo
ại máy tính.
Có hai lo
ại máy tính:
• Các lo
ại máy tính có chia sẻ bộ nhớ (Shared memory): các loại máy
đa x
ử lý (multiproccessor).
• Các máy tính không chia s
ẻ bộ nhớ (Private memory): các hệ thống

multicomputors
Trong m
ỗi loại lại chia tiếp theo mạng kết nối bus
– based ch
ỉ có một
đư
ờng kết nối v
à switch
– base có nhi
ều d
ùng k
ết nối từ máy này sang
máy khác
6
Hệ đa máy tính đồng nhất (homogeneous) : Trong đó chỉ có một mạng kết
nối các máy sử dụng cùng kỹ thuật với nhau, tất cả các bộ xử lý cùng có một
khối lượng bộ nhớ riêng giống nhau.
Hệ đa máy tính không đồng nhất (heterogeneous): chứa nhiều loại máy tính
độc lập, khác nhau kết nối vào mạng.
1.5 Khái niệm về Phần mềm :
 DOS ( distributed operating system ) :
• Là h
ệ điều h
ành cho các h
ệ multiproccessor v
à các h

homogenous
multicomputer.
• M

ục ti
êu là
ẩn giấu v
à cung c
ấp các dịch vụ quản trị t
ài
nguyên.
• Đ
ặc điểm l
à các d
ịch vụ có thể đ
ư
ợc thực hiện bởi các lời
tri
ệu gọi từ xa.
Cách tổ chức cơ bản khác nhau của các bộ xử lý và bộ nhớ
trong hệ máy tính phân tán
7
 NOS ( network operaring system) :
• Là h
ệ điều hành cho các hệ thống heterogenou
s multicomputer (LAN, WAN).
• M
ục tiêu của NOS là cung cấp các dịch vụ từ xa
 Middleware :
Là t
ầng phụ nằm giữa tầng dịch vụ của NOS và tầng ứng dụng phân tán.
8
Ở cấp mức độ ứng dụng: một ứng dụng phân tán có thể đ
ược chia thành các phần

sau đây:
+ Ti
ến trình
+ Lu
ồng
+ Đối tượng Chương trình viết bằng ngôn ngữ hướng đối tượng được tạo thành từ
h
ợp tác các đối tượng.
M
ột định nghĩa đơn giản của một đối tượng là một nhóm
các d
ữ liệu liên quan, với các phương pháp có sẵn để truy vấn hoặc làm thay đổi
d
ữ liệu
ho
ặc dùng một số hành động dựa trên các dữ liệu. quá trình có thể được
t
ạo thành từ một hoặc nhiều đối tượng, và các đối tượng này có thể được truy cập
b
ằng một hoặc nhiều luồng trong tiến trình.
+ Đại lý (agent)
9
M
ột đại lý là một hệ thống cấp cao
hơn thành ph
ần, định nghĩa xung quanh
m
ột chức năng cụ thể, hữu ích, hoặc vai trò trong hệ thống tổng thể.
M
ột

ứng dụng ngân h
àng từ xa, ví dụ, có thể được chia thành một đại lý khách
hàng, đ
ại lý giao dịch, môi giới thông tin một đại lý.
Đ
ại lý có thể đượ
c phân
ph
ối qua nhiều quy trình, và có thể được tạo thành từ nhiều đối tượng và
lu
ồng trong các quá trình này.
Vì v
ậy, một ứng dụng phân tán có thể được dùng như một nhóm phối hợp
c
ủa các đại lý làm việc để hoàn thành một số mục tiêu.
M
ỗi đại lý có thể
đư
ợc phân phối qua nhiều quy trình trên máy từ xa, và có thể bao gồm nhiều
đ
ối tượng hoặc chủ đề kiểm soát.
Đ
ại lý cũng có thể thuộc về nhiều ứng
d
ụng cùng một lúc.
(ví d
ụ máy ATM)
.
2. VẤN ĐỀ CƠ BẢN CỦA HỆ PHÂN TÁN
2.1GIAO TIẾP

 Truyền thông ở mức mạng máy tính
 Truyền thông ở mức midleware
 Gọi thủ tục từ xa (Remote Procedure Call)
 Triệu gọi đối tượng từ xa (Remote Object Invocation)
 Truyền thông hướng thông điệp (Message Oriented
Communication)
 Truyền thông hướng dòng (Stream Oriented Communication)
2.1.1 Truyền thông ở mức mạng máy tính
Giao thức phân tầng: Mô hình OSI.
Kết nối qua 2 giao thức khác nhau: giao thức hướng kết nối (Connection-
Oriented protocol) và giao thức không kết nối (Connectionless-Oriented
protocol).
10
Tầng vật lý (Physical layer): truyền dòng bit không có cấu trúc (dòng bit
thô) đi qua đường truyền vật lý, truy nhập vào đường truyền vật lý nhờ các
phương tiện cơ, điện, hàm, thủ tục.
Tầng liên kết dữ liệu ( Data link): Cung cấp phương tiện để truyền thông
tin qua liên kết vật lý đảm bảo tin cậy: gửi các khối dữ liệu với các cơ chế đồng
bộ hóa, kiểm soát lỗi và kiểm soát luồng dữ liệu cần thiết.
Tầng mạng ( Network): Thực hiện việc chọn đường và chuyển tiếp thông
tin với công nghệ chuyển mạch thích hợp, thực hiện việc kiểm soát luồng dữ
liệu và cắt/ hợp dữ liệu nếu cần.
Tầng vận chuyển (Transport): thực hiện việc truyền dữ liệu giữa 2 đầu mút
(end –to-end ); thực hiện cả việc kiểm soát lỗi và kiểm soát luồng dữ liệu giữa 2
đầu mút, thực hiện việc ghép kênh và cắt/ hợp dữ liệu nếu cần.
Tầng phiên (Session): Cung cấp phương tiện quản lý truyền thông giữa các
ứng dụng, thiết lập, duy trì,
đ
ồng bộ hóa và hủy bỏ các phiên truyền thông giữa
các ứng dụng.

Tầng trình diễn (Presentation): Chuyển đổi cú pháp dữ liệu để đáp ứng yêu
cầu truyền dữ liệu của các ứng dụng qua môi trường OSI.
Tầng ứng dụng (Application): Cung cấp các phương tiện để người sử dụng
có thể truy cập vào môi trường OSI, cung cấp các dịch vụ thông tin phân tán.
Kết nối qua 2 giao thức
Các tầng, giao thức và các giao diện trong mô hình OSI
11
Giao thức TCP(Transmission Control Protocol) là giao thức truyền tin hướng
liên kết có thể sử dụng truyền tin với độ tin cậy cao. Trong đó giao thức tầng 4 có
thể gửi các xác thực rằng đ
ã nh
ận dữ liệu và yêu cầu truyền lại dữ liệu nếu chưa
nhận được dữ liệu hoặc dữ liệu bị hỏng.
UDP-User Datagram Protocol là giao thức có tốc độ truyền tin nhanh vì nó chỉ xác
định cơ chế tối thiểu để truyền dữ liệu. Tất nhiên điều này có một số nhược điểm.
Các thông điệp có thể được nhận theo bất kỳ thứ tự nào. Thông điệp được gửi đầu
tiên có thể được nhận sau cùng. Không có gì đảm bảo là các gói tin sẽ đến đích, và
các thông điệp có thể bị thất lạc, hoặc thậm chí có thể nhận được hai bản sao của
cùng một thông điệp.
Giao thức TCP chỉ hỗ trợ truyền tin unicast (truyền tin điểm tới điểm).
Truyền tin broadcast ngh
ĩa là m
ột thông điệp có thể được gửi tới tất cả các nút
trong một mạng. Multicast cho phép các thông điệp được truyền tới một nhóm các
nút được lựa chọn.
UDP có thể được sử dụng cho truyền tin unicast nếu cần tới tốc độ truyền tin
nhanh, như truyền tin đa phương tiện, nhưng ưu điểm chính của UDP là truyền tin
broadcast và truyền tin multicast. Thông thường chúng ta không muốn tất cả các
nút gửi về các xác thực cho server vì nh
ư v

ậy sẽ làm cho server quá tải.
2.1.2 Gọi các thủ tục từ xa (Remote Procedure Call - RPC)
RPC cho phép gọi các thủ tục nằm trên các máy khác. Khi 1 tiến trình trên máy
A gọi 1 thủ tục trên máy B, thì tiến trình gọi trên máy A đó sẽ bị tạm dừng, thay
vào đó sẽ thực thi thủ tục được gọi trên máy B. Phương pháp này được gọi là Gọi
thủ tục từ xa (RPC).
Để thực hiện ý t
ư
ởng của phương pháp, ta phải giải quyết một loạt các công
việc vì thủ tục gọi và được gọi nằm trên các máy khác nhau nên kết quả và tham số
là phức tạp. Tuy nhiên đây là k
ĩ thu
ật được sử dụng rộng rãi nhất trong các hệ phân
tán.
RPC xảy ra với các bước tóm tắt như sau:
1. Thủ tục client gọi client stub một cách bình th
ư
ờng.
2. Client stub xây dựng một thông điệp và gọi hệ điều hành cục bộ.
3. Hệ điều hành của client gửi thông điệp đến hệ điều hành từ xa.
12
4. Hệ điều hành từ xa gửi thông điệp cho server stub.
5. Server stub mở gói các tham số ra và gọi server.
6. Server thực thi và trả kết quả đến stub.
7. Server stub đóng gói nó vào thông điệp và gọi hệ điều hành cục bộ.
8. Hệ điều hành của server gửi thông điệp cho hệ điều hành của client.
9. Hệ điều hành của client trao thông điệp đến client stub.
10.Stub mở gói kết quả và trả về cho client.
Truyền tham số (parameter passing)
Hầu hết hệ điều hành RMI cung cấp hệ thống mở rộng tham chiếu đối

tượng, truyền tham số trong phương pháp liên quan được hạn chế hơn
trong trường hợp của RPC. Có hai tình huống được minh hoạ trong hình
dưới, nó chỉ ra một chương tr
ình máy khách đang ch
ạy trên máy A và
chương tr
ìn
h chủ trên máy C. Máy khách có một tham chiếu đến đối
tượng cục bộ O1, nó sử dụng như là một tham biến để gọi chương tr
ình
chủ trên máy C, nó c
ũng có m
ột tham chiếu tới một đối tượng O2 từ xa
cư trú trên máy B, nó c
ũng đư
ợc sử dụng như tham biến. Khi gọi máy
chủ, một bản sao của O1 được chuyển qua máy chủ trên máy C, cùng với
bản sao của tham chiếu O2.
Mô hình RPC mở rộng
Mô hình RPC
đã tr
ở thành tiêu chuẩn cho trao đổi trong các hệ phân tán. Sự
phổ dụng của mô hình này là
đơn gi
ản. Tuy nhiên mô hình RPC c
ũng b
ộc lộ một
số thiếu sót mà cần có mô hình mở rộng để khắc phục. Có hai điểm cần mở rộng ở
đây là:
 Cổng (Doors)

13
Như là một sự thoả hiệp, một vài hệ điều hành đề cập sự tương đương của các
RPC cho các tiến trình mà
đang đư
ợc chạy trên cùng một máy, được gọi là cổng
(doors).
Đặc điểm cơ bản là tiến trình máy chủ phải đăng kí trước một cổng mà nó có
thể được gọi. Khi đăng kí một cổng, một định danh cho cổng được trả về mà nó
ph
ản hồi.
RPC không đồng bộ còn rất hữu hiệu khi một phản hồi trả về mà máy khách
chưa chuẩn bị nhận. Tuy nhiên cơ chế này có nhược điểm là máy khách không
biết chắc yêu cầu sẽ được xử lí.
2.1.3 Triệu gọi đối tượng từ xa (Remote Object Invocation)
Kỹ thuật hướng đối tượng được dùng rất phổ biến hiện nay trong việc phát triển
các ứng dụng phân tán (distributed) và không phân tán (non-distributed). Một
trong điều quan trọng của đối tượng đó là nó ẩn giấu đi những gì bên trong của nó
với bên ngoài, mà nó sẽ chỉ cung cấp các giao diện (interface). Hướng tiếp cận này
cho phép các đối tượng dễ dàng được thay thế và chỉnh sửa. RPC và ROI giúp ẩn
dấu thông tin trong các hệ phân tán, tăng cường sự truy cập trong suốt.
Có 2 loại đối tượng phân tán: đối tượng phân tán động ( Distributed dynamic
object) và đối tượng phân tán tên (Distributed named object ). Sự khác biệt của
2 loại này được thể hiện qua hình sau:
Distributed dynamic objects
in DCE
Distributed named objects
14
2.1.4. Truyền thông hướng thông điệp (Message Oriented
Communication)
Tính liên tục và đồng bộ trong truyền thông

Các
ứng dụng đ
ư
ợc thi h
ành trên máy trạm, mỗi host được cung cấp một
giao di
ện với hệ thống truyền thông thông qua các thông điệp gợi ý đ
ư
ợc truyền
t
ải. Các host đ
ư
ợc kết nối thông qua mạng l
ưới các máy chủ truyền thông, các
máy này ch
ịu trách nhiệm
cho qua (và phân lo
ại) các thông điệp giữa các host.
Ta gi
ả sử mỗi host đ
ư
ợc nối chính xác đến một server truyền thông. Trong
Chuơng I, chúng ta c
ũng giả sử rằng các buffer chỉ có thể đ
ư
ợc đặt tại các host.
Cài đ
ặt tổng quát h
ơn, chúng ta c
ần duy tr

ì các b
uffer c
ũng có thể đ
ư
ợc đặt tại
các server truy
ền thông của mạng c
ơ s
ở.
Ta xét ví d
ụ, để duy tr
ì m
ột h
ê th
ống mail điện tử dựa trên thiết kế này. Một
host đang th
ực hiện một user agent: tức một ứng dụng cho phép ng
ư
ời d
ùng có
th
ể soạn th
ư, g
ửi, nhận v
à đ
ọc
thông đi
ệp. Mỗi host đ
ư
ợc kết nối chính xác đến

m
ột mail server, ph
ù h
ợp với điều m
à chúng ta đ
ã gọi là một máy chủ truyền
thông. Giao di
ện tại host của ng
ư
ời d
ùng cho phép user agent g
ửi các thông
đi
ệp tới nơi nhận được chỉ định. Khi user agent đưa ra một
thông đi
ệp để truyền
t
ải tại host của nó, host gửi chuyển tiếp thông điệp tới trước tiên tại mail server
c
ục bộ, lưu trữ tạm trong bộ đệm xuất.
Các kết hợp khác nhau giữa sự liên tục và đồng bộ trong truyền thông đươc tóm
tắt ở hình vẽ sau:
Cách tổ chức chung của một hệ thống giao tiếp mà mỗi host được kết nối qua
mạng.
15
Cơ chế truyền thông điệp có hai loại:
1. Truyền thông tạm thời hướng thông điệp.
2. Truyền thông hướng thông điệp dài lâu.
2.1.5. Truyền thông hướng dòng (Stream Oriented Communication)
Giao tiếp không đồng bộ liên tục

Giao tiếp đồng bộ liên tục
Giao tiếp không đồng bộ tạm thời
Giao tiếp đồng bộ tạm thời dựa trên receipt
Giao tiếp đồng bộ tạm thời dựa trên
phân phất tại thời điểm phân phát.
Giao tiếp đồng bộ tạm thời dựa trên
sự đáp lại.
16
C
ũng có m
ột số dạng truyền thông mà yếu tố đáp ứng thời gian đóng vai tr
ò c
ốt
yếu như dữ liệu âm thanh hoặc hình ảnh chẳng hạn. Do đó cần phải có 1 cơ chế
truyền thông hướng dòng.
17
.2 TIẾN TRÌNH
II.1 Luồng ( Threads)
II.1.1 Giới thiệu về Thread
Để thực thi một chương tr
ình, h
ệ điều hành tạo ra một số các bộ xử lý ảo,
mỗi bộ xử lý dành
đ
ể chạy một chương tr
ình khác nhau. H
ệ điều hành có một
bảng tiến trình (process table), chứa đựng các mục nhập để lưu trữ các giá trị
thanh ghi CPU, bản đồ bộ nhớ, các file được mở, thông tin tính toán, các đặc
quyền (privileges)…

Tại mỗi thời điểm một tiến trình
đư
ợc tạo ra, hệ điều hành phải tạo ra một
không gian địa chỉ hoàn toàn độc lập. Việc phân phối này ngh
ĩa là kh
ởi tạo các
segment bộ nhớ, ví dụ như khởi tạo giá trị 0 cho một segment dữ liệu, sao chép
chương tr
ình k
ết hợp vào một segment văn bản, và thiết lập một stack cho dữ
liệu tạm thời. Tương tự như vậy, việc chuyển đổi CPU giữa 2 tiến trình có thể
khá tốn kém. Ngoại trừ việc tiết kiệm ngữ cảnh CPU (bao gồm các giá trị thanh
ghi, bộ đếm chương tr
ình, con tr
ỏ stack,…), hệ điều hành c
ũng s
ẽ phải thay đổi
các thanh ghi của đơn vị quản lý bộ nhớ (MMU) & làm mất hiệu lực các bộ nhớ
đệm thông dịch địa chỉ như là trong translation lookaside buffer (TLB). Thêm
vào đó, bởi vì hệ điều hành hỗ trợ nhiều tiến trình h
ơn c
ả việc nó có thể tổ chức
1 cách đồng thời trong bộ nhớ chính, nó phải hoán đổi các tiến trình giữa bộ
nhớ chính & đ
ĩa trư
ớc khi việc chuyển mạch thật sự xảy ra.
Thread Usage in Nondistributed Systems:
Trong tiến trình
đơn lu
ồng, bất cứ khi nào một lời gọi hệ thống ngăn chặn

được thực thi, toàn bộ tiến trình sẽ bị chặn lại. Ta xét trong hệ thống bảng tính,
khi một ô tính được thay đổi giá trị thì các ô khác c
ũng ph
ải tự động cập nhật để
thay đổi giá trị tương ứng. Nếu như chỉ có một điều khiển đơn luồng thì sự tính
toán không thể thực hiện trong khi chương tr
ình đang ch
ờ nhập dữ liệu. Tương
tự, không dễ để cung cấp dữ liệu vào trong khi các phụ thuộc đang được tính
toán. Giải pháp dễ thực hiện là phải có ít nhất 2 luồng điều khiển: một để điều
khiển tương tác với người sử dụng & một để cập nhật bảng tính.
Ngoài ra, khi xử lý đa luồng, ta có thể khai thác tính song song khi thực thi
một chương tr
ình trên m
ột hệ thống nhiều bộ xử lý. Kỹ thuật đa luồng c
ũng có
ích trong các ứng dụng lớn, như là các ứng dụng được phát triển trong một tập
hợp các chương tr
ình cùng h
ợp tác với nhau, mỗi chương tr
ình đư
ợc thực thi
bởi một tiến trình riêng biệt. Phương pháp này thường được dùng trong môi
trường UNIX. Việc kết hợp giữa các chương tr
ình đư
ợc thực thi bởi một trong
các loại kỹ thuật gọi là truyền thông liên tiến trình (Interprocess
18
Communication – IPC). Với các hệ thống UNIX, các kỹ thuật này gồm có
named pipes ( Named pipe là các cấu trúc logic trong một server để các hệ

thống khác truy cập tài nguyên của server nầy. Named pipe là phần mở rộng
cho mạng của kỹ thuật IPC. Một Named Pipe là một kênh truyền thông dùng để
truyền tải thông tin giữa các chương trình, các tiến trình xử lý, và các thiết bị
trên mạng. Kỹ thuật dùng là cơ chế truyền thông cơ bản giữa client và các trình
ứng dụng khách/chủ cao cấp như các server SQL và các server truyền thông ),
hàng đợi thông điệp (message queues), các segment bộ nhớ dùng chung (shared
memory segments). Hạn chế chính của tất cả kỹ thuật IPC là sự truyền thông
thường đ
òi h
ỏi việc chuyển đổi ngữ cảnh rất rộng lớn
Một giải pháp được coi là hợp lệ trong dạng “lai ghép” các luồng giữa mức
người sử dụng & mức nhân hệ điều hành có liên quan đến “lightweight
processes (LWP)”. Một LWP chạy trong ngữ cảnh của 1 tiến trình
đơn & có th

có vài LWP trên mỗi tiến trình. Ngoài ra,
đ
ể có được các LWP, một hệ thống
c
ũng cung c
ấp 1 gói tin luồng ở mức người sử dụng, cung cấp cho các ứng dụng
các toán tử thông thường cho việc tạo lập & hủy bỏ các luồng. Hơn thế nữa, gói
tin cung cấp các thuận lợi cho việc đồng bộ hoá luồng. Gói tin luồng được khởi
tạo toàn bộ trong không gian người sử dụng. Tại những từ (word) khác, tất cả
toán tử trên luồng được thực hiện mà không cần phải có sự can thiệp của nhân
hệ điều hành.
II.1.2 Threads in distributed systems
Một thuộc tính quan trọng của luồng là chúng có thể cung cấp một cách thức
tiện lợi cho phép khóa các lời gọi hệ thống mà không cần phải khóa toàn bộ tiến
trình mà có luồng đang chạy. Thuộc tính này khiến cho các luồng dễ được sử

dụng trong các hệ phân tán c
ũng như là d
ễ diễn tả việc truyền thông trong dạng
duy trì các kết nối logic phức tạp.
II.2. CLIENTS (Các máy khách) :
II.2.1 Giao diện người dùng:
Hệ thống Window X:
19
II.2.2 Phần mềm Client- side cho sự trong suốt phân tán
A possible approach to transparent replication of a remote object using a client-
side solution.
II.3. Các máy chủ ( Servers):
II.3.1. Cung cấp các thiết kế chung:
Có nhiều cách để tổ chức các máy chủ.
Tổ chức cơ bản của hệ thống Window X
20
II.4 Sự di trú mã
II.4.1 Cách tiếp cận mã di trú
Nguyên nhân c
ủa sự di trú mã: để chuyển một tiến trình đang chạy từ máy
này sang máy khác r
ất tốn chi phí và đầy phức tạp. Điều này có thể khắc phục
đư
ợc nếu tiến trình đang thực hiện được chuyển từ máy tải nặng (heavily
-
loaded) sang máy có t
ải nhẹ (lightly
-loaded). Đ
ể hỗ trợ sự di trú mã có thể giúp
tăng hi

ệu năng bằng cách khám phá sự thự thi song song. Một ví dụ thực tiễn đó
chính là vi
ệc t
ìm kiếm thông tin trên Web. Nếu mã có thể di chuyễn từ máy này
đ
ến máy khác, nó có thể l
à một yế
u t
ố để cấu h
ình hệ phân tán.
Mô hình di trú mã
Đ
ể hiểu r
õ h
ơn v
ề các mô h
ình di trú mã chúng ta có th
ể tham khảo nền tảng
đư
ợc đề cập trong ( Fugetta et al ,98). Trong nền tảng n
ày, m
ột tiến tr
ình có
thể chia làm 3 phần: đoạn mã, đoạn tài nguyên, đoạn thực thi.
Mô hình
đầu tiên là Weak Mobility. Trong mô hình này, chỉ chuyễn đổi
đo
ạn mã. Đặc điểm chủ yếu ở đây là sự chuyển đổi chương trình được bắt đầu
ngay t
ừ trạng thái bắt đầu. Ví dụ là Java Applet.Mô hình Strong Mobility .

Trong mô hình này, ch
ỉ chu
y
ễn đổi đoạn thực thi. Đặc điểm chủ yếu ở đây là
các ti
ến trình đang hoạt động có thể dừng lạI, rồi sau đó đựoc di chuyển sang
máy khác, tr
ở lại sự thực thi ban đầu. Ví dụ là D’Agents.
Kết nối client-to-server sử dụng
daemon trong DCE
Kết nối client-to-server sử dụng
superserver trong UNIX
21
I.4.2. S
ự di trú v
à tài
nguyên c
ục bộ
Có 2 lo
ại kết nối: kết nối bởi định danh (binding by identifier) v
à k
ết nối bởi
lo
ại (binding by type). Sự kết hợp giữa 3 loại tiến tr
ình
– tài nguyên, và 3 lo
ại
tài nguyên - máy t
ạo ra 9 sự kết hợp m
à chúng ta c

ần chú ý khi di trú m
ã, g
ồm
các lo
ại nh
ư sau:
S
ự di trú trong hệ
không đ
ồng nhất
H
ệ phân tán đ
ư
ợc xây dựng n
ên từ sự tổng hợp nhiều nền tảng. Sự di trú mã
trong h
ệ thống phụ thuộc v
ào s
ự hỗ trợ của các nền tảng. Cụ thể l
à đoạn mã có
th
ể thực thi tr
ên các n
ền tảng.
Trong mô hình Weak Mobility, không có m
ột thông tin n
ào
c
ần thiết để
chuy

ển đổi giữa các máy, v
ì th
ế nó phải đáp ứng bằng cách biên dịch mã
ngu
ồn., nh
ưng sinh ra đo
ạn mã khác nhau đối với từng nền tảng khác
nhau.Trong mô hình Strong Mobility, v
ấn đề ở đây l
à s
ự chuyển đổi đoạn thực
thi. Đo
ạn thực thi bao gồm d
ữ liệu, stack, bộ đếm ch
ương tr
ình.
II.4.4 Ví d
ụ: D’Agents
K
ết nối Resource
-to-machine
K
ết nối
Process-
to-
resouce
Unattached
Fastened
Fixed
By

identifier
By value
By type
MV (or GR)
CP ( or MV,
GR)
RB (or GR, CP)
GR (or MV)
GR (or CP)
RB (or GR,
CP)
GR
GR
RB (or
GR)
Sự thay thế trong mã di trú
22
Đ
ể minh họa cho mã di trú, chúng ta sẽ đi vào xem xét một nền tảng trung
gian cung c
ấp nhiều thể loại khác nhau của việc di trú mã. D’Agents hay còn
đư
ợc gọi là Agent Tcl, là một hệ thống được xây
d
ựng dựa vào các khái niệm
c
ủa tác tử.
T
ổng quan về m
ã di trú trong D’Agents

Tác tử (Agent) trong D’Agents là một chương trình có thể di chuyển qua
nhi
ều máy khác nhau. Ch
ương trình có thể được viết bằng bất kì ngôn ngữ nào
mi
ễn l
à máy sử dụng nó có thể
th
ực thi đ
ược mã di trú.
II.5 Tác tử mềm (Software agents)
II.5.1 Tác tử mềm trong hệ phân tán
Chúng ta có thể định ngh
ĩa m
ột tác tử mềm như một quy trình tự trị có khả
năng tác động trở lại và thiết lập các thay đổi trong môi trường của nó hoặc có
thể trong sự cộng tác với nhiều người sử dụng và các tác nhân khác. Bên cạnh
sự tự trị thì một tác tử còn có thể liên kết với các tức tử khác để tạo thành một
lớp tác tử cộng tác. Tác tử di động được tách ra từ các loại tác tử khác, các tác
tử di động là tác tử có khả năng di chuyển từ máy này đến máy khác. Di chuyển
một tác tử đến một máy khác có thể được làm một cách khó khăn nếu không
quan tâm tới trạng thái thực thi của nó.Khả năng hợp tác với các tác tử khác
nhau di chuyển giữa các máy là thuộc tính hệ thống của tác tử
Các loại tác tử
Một lớp nhận dạng phổ biến được hình thành từ các tác tử giao diện, là các
tác tử giúp đỡ những người sử dụng cuối cùng trong việc sử dụng một hoặc
nhiều ứng dụng. Một đặc tính phân biệt tác tử giao diện là nó “đang học các khả
năng” (Maes, 1994; Nwana, 1996). Trong ngữ cảnh của hệ phân tán, một điển
hình các tác tử giao diện làm chú ý là những cái mà cố tìm ra sự tương tác với
các tác tử để các người sử dụng trong một cộng đồng. Chẳng hạn như, các tác

tử giao diện đặc trưng tồn tại việc tìm kiếm một cách linh động để người bán và
người mua có thể cùng nhau trao đổi. Bằng việc cải tiến sự hiểu biết của những
cái đang t
ìm ki
ếm, một tác tử giao diện như thế nên cải tiến việc lựa chọn ra
một nhóm đích thực những người ngang hàng.
Tóm lai, các tác tử có thể thường được mô tả bởi một số lượng các thuộc
tính, như thể hiện trong hình sau
đây:
Thuộc tính
Quan hệ
v
ới tất cả
các tác t

Miêu tả
23
T
ự trị

Có th
ể hoạt động với chính nó
Tác đ
ộng trở lại

Tr
ả lời đúng lúc với những thay
đ
ổi trong môi
trư

ờng của nó
Tiên phong th
ực
hi
ện

Thi
ết lập các h
ành đ
ộng tác động đến môi tr
ường
c
ủa nó
D
ễ truyền

Có th
ể trao đổi thông tin với nhiều ng
ư
ời sử dụng v
à
các nhóm tác t
ử khác.
Ti
ếp tục
Không
Có m
ột nhịp cầu quan hệ sống d
ài
Di đ

ộng
Không
Có th
ể di động từ nơi này đến nơi khác
Thích nghi
Không
Có kh
ả năng học
II.5.2. kỹ thuật tác tử
Mô hình chung của một nền tảng tác tử
24
III. ĐỊNH DANH (NAMING)
III.1 ĐỊNH DANH CÁC THỰC THỂ (NAMING ENTITIES):
III.1.1 Tên, định danh và địa chỉ
Tên của một thực thể trong hệ thống phân tán là một chuỗi các bit hoặc các
kí tự. ví dụ như: máy in, máy chủ, máy trạm… hay như web pages,
message…Để có thể thao tác trên một thực thể, ta cần phải truy cập(access) vào
thực thể đó. Do đó chúng ta cần một điểm truy cập: access point. Tên gọi của
access point là “address”. Một thực thể có thể có nhiều access point. Access
point có thể thay đổi tại hững thời điểm khác nhau.Ví dụ: khi bạn sử dụng một
laptop và di chuyển từ vùng này đến vùng khác thì chắc chắn địa chỉ IP của
máy sẽ bị thay đổi.
Định danh là một loại tên có những đặc tính sau: Một từ định danh đề cập
đến bởi hầu hết một thực thể. Mỗi thực thể được đề cập đến bởi hầu hết một từ
định danh. Một từ định danh luôn đề cập đến cùng thực thể.Nhờ dùng định
danh nên chúng ta dễ dàng hơn khi đề cập đến một thực thể. Ví dụ như để xem
2 tiến trình có cùng thao tác trên một thực thể (định danh) hay không, ta chỉ cần
kiểm tra xem 2 định danh đó có giống nhau không. Quá trình kiểm tra sẽ không
thành công nếu ta dùng những định danh quá chung chung, tổng quát. Ví dụ
như cái tên “John Smith” không thể được xem là tham chiếu duy nhất để chỉ về

1 người.
Chúng ta c
ũng không th
ể sử dụng địa chỉ (address) làm định danh được vì
address có thể thay đổi.Địa chỉ và từ định danh là hai loại tên quan trọng mà
mỗi khi được sử dụng sẽ cho nhiều mục đích khác nhau. Chúng được biểu diễn
ở những dạng chuỗi bit rất dễ nhận thấy.
Miền tên
Tên trong hệ phân tán được tổ chức thành những miền khác nhau. Miền tên
này được tổ chức thành những biểu đồ. Nút lá là tên của thực thể cùng với các
thuộc tính của nó. Một nút thư mục có một số cạnh gởi đi, mỗi nhãn với một cái
tên. Mỗi một nút trong tên đồ họa được quan tâm như thực thể khác trong một
hệ phân tán, và trong trường hợp ngoại lệ có một từ định danh được kết hợp.
Một nút thư mục sẽ được đại diện bởi một cặp: edge label, node identifier.
25
Đường dẫn tên được kí hiệu: N:<label-1, label-2, …, label-n>
Nhìn vào
đ
ồ thị trên: có 2 loại đường dẫn tên: đường dẫn tên chính xác
(absolute path name) và đường dẫn tên liên quan (relative path name). Đường dẫn
tên chính xác thì nút đầu tiên phải là nút gốc trong đồ thị, ngược lại là đường dẫn
liên quan. Có 2 loại tên : tên toàn cục (global name) và tên cục bộ (local name).
III.1.2 Độ phân giải tên
Để giải thích name resolution làm việc như thế nào, ta xem tên đường dẫn
như là N:<label-1, label-2,…, label-n >. Sự phân giải của tên này bắt đầu tại
nút N của đồ thị tên, nơi mà label-1 được tìm thấy trong bảng thư mục, và quay
lại bộ định danh của nút mà label-1 đề cập. Sau đó sự phân giải tiếp tục tại nút
có tên được chỉ định bằng cách tìm kiếm label-2 trong bảng thư mục của nó, và
cứ thế. Giả sử rằng tên đường dẫn thực sự tồn tại, sự phân giải dừng tại nút cuối
cùng được đề cập tức label-n, bằng việc quay trở lại nội dung của nút đó.

Name resolution chỉ có thể thực hiện nếu chúng ta biết bắt đầu như thế nào
và ở đâu. Khái niệm điểm bắt đầu như thế nào và ở đâu được đề cập đến như là
kỹ thuật khép kín. Closure Mechanism giải quyết việc lựa chọn nút bắt đầu
trong miền tên
Ví dụ: name resolution trong đồ thị tên đối với một hệ thống file Unix sử dụng
cơ chế lập luận rằng inode (nút riêng) của thư mục gốc là inode đầu tiên trong
đ
ĩa logic tương
ứng file hệ thống. Thực chất là byte offset được tính từ những
giá trị các trường khác nhau của siêu khối, cùng với thông tin hard-coded trong
hệ điều hành tự bản thân nó bên trong tổ chức của một siêu khối.
Để làm rõ
đi
ều này, xem chuỗi mô tả của một tên file như sau
/home/steen/mbox. Để giải quyết tên này, nó cần thiết để luôn truy cập đến bảng
thư mục của nút gốc của cây đồ thị tên thích hợp. Là 1 nút gốc, bản thân nó

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×