LỜI GIỚI THIỆU
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ểncủ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ện nay 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ối bằ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á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ề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á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 chương này, chúng ta hãy xem xét một số khái niệm cơ bản và các vấn
đề liên quan đến hệ thống phân tán.
1
MỤC LỤC
Chương 1 TỔNG QUAN VỀ HỆ PHÂN TÁN 3
1.1 Lý do ra đời hệ thống phân tán 3
1.2 Định nghĩa về hệ thống phân tán 6
1.3 Những đặc trưng chủ yếu của hệ phân tán 9
1.4 Xây dựng và phân loại các hệ thống phân tán 12
1.4.1 Phần cứng 12
1.4.1 Phần mềm 20
1.5 Các mô hình tổ chức hệ phân tán 21
1.5.1 Client/Sever 21
Theo LeLann có hai tác nhân chính ảnh hưởng đến hệ thống phân tán: công
nghệ thay đổi và nhu cầu của người sử dụng.
Chẳng hạn đối với phát triển về công nghệ :
Về mạng máy tính :
6/1976 : Robert Metcalfe trình bày khái niệm về Ethernet tại Hội nghị quốc gia
máy tính.Ý tưởng về thời gian chia sẻ (time-sharing) lần đầu tiên được đề cập, là
bước đầu tiên hướng đến hệ thống phân tán.
1980 : Ethernet được phát minh bởi Robert Metcalfe và David Boggs tại Xerox
PARCvào năm 1973, Ethernet đầu tiên chạy ở 2,94 Mbps. Sau đó, Metcalfe đã
tham, ông đã tạo điều kiện cho một liên doanh giữa kỹ thuật số giữa Intel và
Xerox hợp tác hơn phát triển trên Ethernet. Phiên bản 1 được hoàn thành vào năm
1980, và các sản phẩm này được sử dụng một năm sau đó.
1983, IEEE đã phê chuẩn Ethernet với chuẩn 802.3.Ethernet được giới thiệu
như một mô hình chuẩn và sau đó là thập kỹ của máy tính cá nhân ra đời. Ngày
nay, hầu như tất cả các máy tính PC và máy tính Mac với port 10/100 Ethernet.
Tốc độ mạng LAN không ngừng tăng nhanh.
1985 : thick Ethernet: tốc độ 10 Mbps.
1991 : 10BaseT – sử dụng cáp xoắn đôi (twisted pair), tốc độ 10 Mbps.
1995 : 100 Mbps Ethernet ra đời.
1998 : Gigabit Ethernet được giới thiệu (1 Gbps Ethernet)
1999 : Chuẩn 802.11b (wireless Ethernet) sử dụng cho LAN không
2001 : 10 Gbps được giới thiệu.
3
2005 : 100 Gbps sử dụng cho kết nối bằng cáp quang (optical link)Sau đó, chỉ
một vài công ty lớn hoặc trường đại học được kết nối Internet, sử dụng gateways
giao tiếp giữa các mạng khác nhau, hình thức kết nối là dial –up.
1985 : Có khoảng 1.961 hosts trên Internet.
2006 : Có khoảng 439.286.364 hosts trên Internet. Hiện nay, hầu hết các hoạt
động của con người được diễn ra trên Internet.
Năm 1 Dolar/ 1Mb Loại
Ở trong các hệ thống máy tính ngày nay, một ước mơ mới là có thể tính toán
phân toán ( distributed computing). Nhờ tính toán phân tán, tận dụng sức mạnh do
nhiều máy tính mang lại để thực hiện bất cứ công việc nào con người cần ở cùng
một thời gian, đạt hiệu suất cao và độ tin cậy cao. Sự quan tâm đến hệ thống máy
tính phân tán được phát triển nhanh chóng trong hơn một thập kỉ qua. Các đối
tượng nghiên cứu về hệ phân tán rất đa dạng, liên quan đến lĩnh vực khác nhau
như: cấu trúc phần cứng phân tán, thiết kế các phần mềm phân tán mà nó có thể xử
lý song song.
Hệ thống máy tính phân tán (hay hệ thống phân tán) sẽ mất rất nhiều hình thức
và bao gồm một loạt các hệ thống kiến trúc. Để một có thể sử dụng một hệ thống
phân tán đòi hỏi một tập hợp của nhiều bộ xử lý làm việc chặt chẽ với nhau để giải
quyết một vấn đề.
Tại sao chúng ta cần đến mạng?
- Tăng hiệu suất đường truyền : Với sự thực hiện multiprocessors làm tăng
đáng kể hiệu suất mạng
- Thực hiện được các ứng dụng phân tán:
+Thanh toán tự động(Automated Banking Systems)
+Giám sát giao thông (Air-Traffic Control Systems)
+Bán lẻ (Retail Point-of-Sale Terminals)
+Định vị toàn cầu (Global Positioning Systems)
+Tìm kiếm (Search Engine)
+Giám sát từ xa (Remote Monitor System) v.v
5
- Có khả năng giao tiếp tương tác và giải trí:
+ Vừa làm vệc và tiêu khiển đồng thời: email,chơi game, điện thoại, nhắn tin
v.v…
Các thách thức :
Khi xây dựng các phần mềm phân tán, các khó khăn gặp phải :
- Sử dụng hệ điều hành nào để xử lý phân tán ?
- Sử dụng ngôn ngữ lập trình nào?
của phần cứng, điều khiển, và dữ liệu :
Hệ thống phân tán = Phân tán phần cứng + Phân tán kiểm soát + Phân tán dữ
liệu.
Hình 1.1. Mô hình một hệ phân tán tổng quát.
7
Trong đó :
+H1 : Một CPU đơn với một đơn vị kiểm soát.
+H2: Một CPU đơn với nhiều ALUs (arithmetic and logic units). Chỉ có một
đơn vị kiểm soát.
+H3: Đơn vị chức năng riêng biệt, như là một trong những CPU với dấu chấm
động (floating-point coprocessor).
+H4: Nhiều bộ xử lý với nhiều CPU nhưng chỉ có duy nhất một hệ thống I / O
và bộ nhớ toàn cục.
+H5: Nhiều bộ xử lý với nhiều CPU, nhiều hệ thống I / O và các bộ nhớ cục
bộ.
+C1: Điểm kiểm soát cố định duy nhất. Lưu ý rằng các hệ thống vật lý có thể
không có nhiều CPU.
+C2: Điểm kiểm soát di động duy nhất. Trong nhiều trường hợp nhiều CPU,
các điều khiển có thể thay đổi theo thời gian giữa các CPU.
+C3: Cấu trúc cố định master / slave. Trong hệ thống chỉ có một CPU và một
coprocessor, CPU master cố định, coprocessor slave cố định.
+C4: Cấu trúc master/slave động. Vai trò của master / slave được định nghĩa
bởi phần mềm.
+C5: Nhiều điểm đồng nhất, nơi mà các bản sao của cùng một bộ điều khiển
được sử dụng.
+C6: Nhiều điểm kiểm soát hỗn tạp, nơi mà các bộ điều khiển khác nhau được
sử dụng.
Cơ sở dữ liệu có hai thành phần và có thể được phân tán:
- Các tập tin và thư mục được lưu trữ trên các file.
- Kênh phân phối có thể được thực hiện bằng một trong hai cách, hoặc một sự
a. Chia sẻ tài nguyên.
9
Tài nguyên bao gồm những thành phần phần cứng như : đĩa, máy in, và
những thà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 ích củ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ững thông tin chung khác được thể hiện rõ trong hệ thống chia sẻ thời
gian hoắc hệ thống nhiề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ác
má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ân tá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ể truy cậ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ột chươ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.
b. 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. 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 giao diệ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ính nă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ống
giao 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ển
phần mềm.
c. Tính đồng thời.
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 được
Michael J. Flynn năm 1966. Theo Ông có 2 đặc điểm cần thiết để phân loại hệ
thống máy tính nhiều CPU : Số lượng các dòng chỉ dẫn và số dòng dữ liệu.
Bảng 1.2. Cấu trúc máy tính theo mô hình Flynn’s Taxonomy
Single Instruction Multiple Instruction
Single Data SISD MISD
Multiple Data SIMD MIMD
SISD (Single Instruction, Single Data) là một thuật ngữ ám chỉ đến một kiến
trúc máy tính, trong đó một bộ xử lý đơn, uniprocessor một, thực thi một dòng chỉ
dẫn duy nhất, để hoạt động trên dữ liệu lưu trong một bộ nhớ duy nhất. Điều này
tương ứng với kiến trúc Von Neumann.
SISD là một trong bốn phân loại chính như định nghĩa trong phân loại của
Flynn. Trong hệ thống phân loại dựa trên số lượng đồng thời hướng dẫn và các
luồng dữ liệu hiện nay trong kiến trúc máy tính. Theo Michael J. Flynn, SISD có
thể có đặc điểm xử lý đồng thời.
Hình 1.2 Kiến trúc SISD
SIMD (Single Instruction, Multiple Data; colloquially, "vector instructions") :
Trong máy tính SIMD là một kỹ thuật làm việc để đạt được mức độ xử lý dữ liệu
song song.
12
Hình 1.3 Kiến trúc SIMD.
MISD (Multiple Instruction, Single Data) : Trong máy tính MISD là một kiểu
kiến trúc tính toán song song, nơi các đơn vị chức năng thực hiện nhiều hoạt động
khác nhau trên cùng dữ liệu. Kiến trúc đường ống (Pipeline) thuộc loại này. Kiến
trúc này không được sử dụng rộng rãi như MIMD và SIMD thường thích hợp hơn
cho dữ liệu phổ biến kỹ thuật song song. MISD đôi khi áp dụng để phân loại các
hệ thống dự phòng.
Hình 1.4 Kiến trúc SISD.
MIMD (Multiple Instruction stream, Multiple Data stream) : Là một kỹ thuật
làm việc để đạt được xử lý song song. Bằng cách sử dụng cơ chế MIMD có một số
chức năng của bộ vi xử lý mà không đồng bộ và độc lập. Bất cứ lúc nào, bộ vi xử
Hình 1.6 c. CPU A đọc vị trí trên bộ nhớ vào cache chịu lỗi.
CPU A sử vị trí 12345
15
Hình 1.6 d. CPU A sửa vị trí 12345.
CPU B đọc vị trí 12.345 từ bộ nhớ, thực hiện :
- Nhận giá trị cũ.
- Bộ nhớ không kết hợp.
Hình 1.6 e. Xử lý của CPU B
Write-through cache
Để thực hiện sửa lại giá trị trên, thực hiện bằng cách viết tất cả giá trị bus đi
qua đến bộ nhớ chính CPU A bằng cách sửa lại vị trí 12345 – write-through.
Bộ nhớ cache bây giờ sẽ như sau :
Hình 1.6 f. CPU A thực hiện Write-through để sửa lại vị trí 12345.
- CPU B đọc vị trí 12.345 từ bộ nhớ
- Nạp vào bộ nhớ cache.
16
Hình 1.6 g. CPU B đọc vị trí 12.345 từ bộ nhớ.
- CPU A đổi vị trí 12.345
- Thực hiện Write- through
- Cache trên CPU B không được cập nhật
- Bộ nhớ không kết hợp.
Hình 1.6 h. Kết hợp xử lý giữa CPU A và B.
Snoopy cache
- Thêm logic cho mỗi bộ điều khiển bộ nhớ cache
- Giám sát hoạt động bus
- Hầu như tất cả các kiến trúc cơ sở bus sử dụng một bộ nhớ cache snoopy.
Hình 1.6 i. Trường hợp bổ sung Snoopy cache.
17
Switched multiprocessors
- Với n CPUs và n modul bộ nhớ :
19
Hình 1.10 Sự kết hợp của các máy trạm trên LAN.
Switched multicomputers
Kết nối của các máy trạm trên mạng LAN :
Hình 1.11 Mô hình kết nối các máy tính trên LAN.
1.4.1 Phần mềm.
Hệ thống đơn
Sự kết hợp của các máy tính độc lập xuất hiện như một hệ thống đơn với người
dùng.
Đặc điểm của hệ thống này được thể hiện:
- Độc lập ( Independent): Có khả năng tự trị (autonomous)
- Hệ thống đơn (Single system): Người dùng không nhận thức được phân tán.
Phần mềm hệ thống phân tán
Theo Lamport :
20
“You know you have a distributed system when the crash of a computer you’ve
never heard of stops you from getting any work done.”
– Leslie Lamport
Các khái niệm phần mềm :
a. DOS (distributed OS).
- 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.
b. NOS (Network OS).
- Là hệ điều hành cho các hệ thống heterogenous multicomputer (LAN, WAN).
- Mục tiêu của NOS là cung cấp các dịch vụ từ xa.
c. 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.
1.5 Các mô hình tổ chức hệ phân tán.
chương trình client có thể giao tiếp được với nhau thì giữa chúng phải có một
chuẩn để nói chuyện, chuẩn này được gọi là giao thức. Nếu một chương trình
22
client nào đó muốn yêu cầu lấy thông tin từ server thì nó phải tuân theo giao thức
mà server đó đưa ra. Bản thân chúng ta khi cần xây dựng một mô hình
client/server cụ thể thì ta cũng có thể tự tạo ra một giao thức riêng nhưng thường
chúng ta chỉ làm được điều này ở tầng ứng dụng của mạng. Với sự phát triển mạng
như hiện này thì có rất nhiều giao thức chuẩn trên mạng ra đời nhằm đáp ứng nhu
cầu phát triển này. Các giao thức chuẩn (ở tầng mạng và vận chuyển) được sử
dụng rộng rãi nhất hiện nay như: giao thức TCP/IP, giao thức SNA của IBM, OSI,
ISDN, X.25 hoặc giao thức LAN-to-LAN NetBIOS. Một máy tính chứa chương
trình server được coi là một máy chủ hay máy phục vụ (server) và máy chứa
chương trình client được coi là máy tớ (client). Mô hình mạng trên đó có các máy
chủ và máy tớ giao tiếp với nhau theo 1 hoặc nhiều dịch vụ được gọi là mô hình
client/server. Thực tế thì mô hình client/server là sự mở rộng tự nhiên và tiện lợi
cho việc truyền thông liên tiến trình trên các máy tính cá nhân. Mô hình này cho
phép xây dựng các chương trình client/server một cách dễ dàng và sử dụng chúng
để liên tác với nhau để đạt hiệu quả hơn.
Mô hình client/server như sau: Client/Server là mô hình tổng quát nhất, trên
thực tế thì một server có thể được nối tới nhiều server khác nhằm làm việc hiệu
quả và nhanh hơn. Khi nhận được 1 yêu cầu từ client, server này có thể gửi tiếp
yêu cầu vừa nhận được cho server khác ví dụ như database server vì bản thân nó
không thể xử lý yêu cầu này được. Máy server có thể thi hành các nhiệm vụ đơn
giản hoặc phức tạp. Ví dụ như một máy chủ trả lời thời gian hiện tại trong ngày,
khi một máy client yêu cầu lấy thông tin về thời gian nó sẽ phải gửi một yêu cầu
theo một tiêu chuẩn do server định ra, nếu yêu cầu được chấp nhận thì máy server
sẽ trả về thông tin mà client yêu cầu. Có rất nhiều các dịch vụ server trên mạng
nhưng nó đều hoạt động theo nguyên lý là nhận các yêu cầu từ client sau đó xử lý
và trả kết quả cho client yêu cầu. Thông thường chương trình server và client được
thi hành trên hai máy khác nhau. Cho dù lúc nào server cũng ở trạng thái sẵn sàng
24
nhiều chức năng trên hệ điều hành mà nó chạy, nhưng khi được nối vào một mạng
LAN, WAN theo mô hình client/server thì nó còn có thể sử dụng thêm các chức
năng do hệ điều hành mạng (NOS) cung cấp với nhiều dịch vụ khác nhau (cụ thể
là các dịch vụ do các server trên mạng này cung cấp), ví dụ như nó có thể yêu cầu
lấy dữ liệu từ một server hay gửi dữ liệu lên server đó Thực tế trong các ứng
dụng của mô hình client/server, các chức năng hoạt động chính là sự kết hợp giữa
client và server với sự chia sẻ tài nguyên, dữ liệu trên cả 2 máy Vai trò của client
Trong mô hình client/server, client được coi như là người sử dụng các dịch vụ trên
mạng do một hoặc nhiều máy chủ cung cấp và server được coi như là người cung
cấp dịch vụ để trả lời các yêu cầu của các clients. Điều quan trọng là phải hiểu
được vai trò hoạt động của nó trong một mô hình cụ thể, một máy client trong mô
hình này lại có thể là server trong một mô hình khác. Ví dụ cụ thể như một máy
trạm làm việc như một client bình thường trong mạng LAN nhưng đồng thời nó có
thể đóng vai trò như một máy in chủ (printer server) cung cấp dịch vụ in ấn từ xa
cho nhiều người khác (clients) sử dụng. Client được hiểu như là bề nổi của các
dịch vụ trên mạng, nếu có thông tin vào hoặc ra thì chúng sẽ được hiển thị trên
máy client.
Server Server còn được định nghĩa như là một máy tính nhiều người sử
dụng (multiuser computer). Vì một server phải quản lý nhiều yêu cầu từ các client
trên mạng cho nên nó hoạt động sẽ tốt hơn nếu hệ điều hành của nó là đa nhiệm
với các tính năng hoạt động độc lập song song với nhau như hệ điều hành UNIX,
WINDOWS Server cung cấp và điều khiể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ên server phải được tách rời nhau để một lỗi
của ứng dụng này không làm hỏng ứng dụng khá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. Như
chúng ta đã bàn ở trên, server như là một nhà cung cấp dịch vụ cho các clients yêu
cầu tới khi cần, các dịch vụ như cơ sở dữ liệu, in ấn, truyền file, hệ thống Các
ứng dụng server cung cấp các dịch vụ mang tính chức năng để hỗ trợ cho các hoạt
25