1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Giáo trình hệ phân tán

176 817 5

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 176
Dung lượng 3,71 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Các hệ thống dùng chung bộ nhớ • Multiprocessor nhiều bộ vi xử lý dùng chung 1 bus và một đơn vị bộ nhớ • Hệ điều hành hỗ trợ SMP symmetric multiprocessing • Đơn giản hơn hệ phân tán •

Trang 1

TRƯỜNG ĐẠI HỌC QUẢNG BÌNH KHOA KỸ THUẬT – CÔNG NGHỆ THÔNG TIN

BÀI GIẢNG

(Lưu hành nội bộ)

HỆ PHÂN TÁN

(Dành cho sinh viên CNTT)

Giảng viên: TS Hoàng Tuấn Nhã

Năm 2017

Trang 2

4 Tổng quan về các nguyên lý và mô hình

5 Giới thiệu môn học

Trang 3

Hệ thống phân tán là gì?

Định nghĩa của Andrew Tannenbaum

Hệ phân tán là một tập hợp các máy tính độc lập mà, đối với người dùng, nó như thể một hệ thống đơn gắn kết.

Định nghĩa yếu hơn, gần thực tế hơn

Hệ phân tán là một tập hợp các máy tính độc lập

được sử dụng một cách kết hợp để thực hiện một tác

vụ đơn hoặc để cung cấp một dịch vụ đơn.

Trang 4

Hệ thống phân tán là gì?

Ví dụ về các hệ phân tán:

– Tổ hợp các Web server: cơ sở dữ liệu phân tán cho siêu văn bản và tài liệu đa phương tiện

– Hệ thống file phân tán trong một mạng LAN

– Dịch vụ tên miền (Domain Name Service - DNS)

– Cray XT5 & CLE (multiprocessor quy mô lớn)

Các ví dụ khác?

Trang 5

Ưu điểm của hệ phân tán

Chi phí: nếu sử dụng phần cứng thông dụng cho các máy tính thành

phần, thu được tỷ lệ giá/hiệu năng tốt hơn

Hiệu năng: do sử dụng kết hợp khả năng lưu trữ và xử lí của nhiều

nút, có thể đạt được mức độ hiệu năng vượt ra ngoài tầm của các máy tính trung tâm

Khả năng mở rộng Các tài nguyên như khả năng lưu trữ và xử lý

có thể được tăng theo cấp số cộng

Độ tin cậy do có các thành phần dư thừa, khi một máy tính hỏng, có

thể hệ thống chung vẫn tiếp tục hoạt động bình thường

Tính phân tán cố hữu Một số ứng dụng như Web đã có tính phân

tán một cách tự nhiên

Trang 6

Nhược điểm của hệ phân tán

phân tán phức tạp hơn và khó hơn so với phần mềm

truyền thống; dẫn tới chi phí cao hơn và khả năng bị lỗi cao hơn

Khó xây dựng và khó hiểu các hệ thống phân tán.

Trang 7

Kiến trúc của hệ thống phân tán

Trang 10

Tính chất:

– giao diện lập trình phân tán độc lập với hệ điều hành

– tăng tính trong suốt (ví dụ:che dấu tính không đồng nhất)

– cung cấp dịch vụ (ví dụ: naming service, transaction, v.v )

– cung cấp mô hình lập trình (ví dụ: các đối tượng phân tán)

Trang 11

Tại sao middleware thông dụng hơn?

– xây dựng trên các trừu tượng hóa thông dụng về các hệ điều hành mạng (tiến trình và truyền thông điệp)

– ví dụ RPC, NFS, CORBA, DCOM, J2EE, NET

– các ngôn ngữ (hoặc sửa đổi ngôn ngữ) được thiết kế đặc biệt cho tính toán phân tán (vd Erlang, Ada, Limbo )

Ưu điểm:

– thường chạy tại không gian người dùng

– tăng mức độ trừu tượng hóa trong lập trình → đỡ gây lỗi

– độc lập với hệ điều hành, giao thức mạng, ngôn ngữ lập trình, v.v → tính linh hoạt

Nhược điểm:

– có các giao diện rườm rà rắc rối thiếu hiệu quả

Trang 12

Hệ phân tán và tính toán song song

• Tính toán song song: nâng cao hiệu năng bằng cách sử

dụng nhiều bộ vi xử lý cho mỗi ứng dụng

• Hai dạng:

1 Các hệ thống dùng chung bộ nhớ

• Multiprocessor (nhiều bộ vi xử lý dùng chung 1 bus và một đơn vị bộ

nhớ)

• Hệ điều hành hỗ trợ SMP (symmetric multiprocessing)

• Đơn giản hơn hệ phân tán

• Tính mở rộng được không cao

Trang 13

– Quản lý tài nguyên cho các hệ thống đơn

Hệ phân tán: quản lý các tài nguyên phân tán

Trang 15

Tính trong suốt

Che dấu sự tách biệt giữa các thành phần của một hệ phân tán

(hình ảnh về một hệ thống đơn nhất)

Các hình thức khác nhau của tính trong suốt:

Truy nhập: tài nguyên địa phương và ở xa được truy nhập theo cùng kiểu

Vị trí: người dùng không nhận biết về địa điểm của các tài nguyên

Di cư: có thể chuyển chỗ tài nguyên mà không đổi tên

Sao lặp: người dùng không nhận biết về sự tồn tại của nhiều bản sao tài nguyên

Thất bại: người dùng không nhận biết về thất bại của các thành phần riêng biệt

Tương tranh: người dùng không nhận biết về việc chia sẻ tài nguyên với những

người khác.

không phải lúc nào cũng được mong muốn

không phải lúc nào cũng đạt được

Trang 16

Tính mở rộng được

Một hệ thống có tính mở rộng được nếu người ta có thể tăng số người dùng và bổ sung tài nguyên mà không gây giảm hiệu năng hoặc tăng độ phức tạp quản trị một cách đáng kể.

(B Clifford Neuman)

Hệ thống mở rộng theo ba chiều:

Kích thước: tăng số người dùng hoặc tài nguyên (quá tải)

Địa lý: tăng khoảng cách giữa người dùng và tài nguyên (liên lạc)

Quản lý: tăng số lượng các tổ chức tham gia quản lý các phần của hệ thống

(rối rắm và đan xen về quản trị)

Lưu ý

– Tính mở rộng được thường xung đột với hiệu năng (hệ thống nhỏ)

– Tính mở rộng được thường bị khẳng định một cách phiến diện

Trang 17

Tính mở rộng được

Kĩ thuật mở rộng hệ thống:

– Phi trung tâm hóa

– Che dấu độ trễ liên lạc (liên lạc không đồng bộ, giảm liên lạc)

– Phân tán (dữ liệu và điều khiển)

– Sao lặp (tạo các bản sao của dữ liệu và tiến trình)

Trang 18

Tính mở rộng được

Phi trung tâm hóa

Tránh tập trung:

– dịch vụ (vd tránh dùng một server đơn)

– dữ liệu (vd tránh lưu trữ tên tại một thư mục trung tâm)

– thuật toán (vd tránh dựa vào thông tin đầy đủ)

Về các thuật toán phi tập trung:

– Không có máy nào chứa thông tin hoàn chỉnh về trạng thái hệ thống

– Cho phép các nút ra quyết định dựa trên thông tin địa phương

– Một nút thất bại không làm hỏng thuật toán

– Không có giả thiết rằng có một đồng hồ toàn cục chung

• Đồng hồ mỗi máy mỗi khác và khó có thể đồng bộ hóa đồng hồ một cách chính xác

phi trung tâm hóa là một công việc khó

Trang 19

Nhưng tính sẵn có có thể suy giảm

• nhiều thành phần → tiềm tàng nhiều điểm thất bại

• Tính phụ thuộc đòi hỏi tính nhất quán, bảo mật hệ thống, và khả năng chịu lỗi

Trang 21

Tính mềm dẻo

• Xây dựng hệ thống từ các thành phần cần thiết

• Có thể đổi hoặc thêm thành phần/dịch vụ

• Tính mở của giao diện và đặc tả

– cho phép cài đặt lại theo đặc tả và mở rộng tính năng

• Khả năng hoạt động tương giao

• Tách biệt giữa chính sách và cơ chế

– các giao diện nội bộ được chuẩn hóa

Trang 23

Nguyên lý

Một số nguyên lý quan trọng đằng sau mọi hệ phân tán:

– Kiến trúc hệ thống (system architecture)

Trang 24

Mô hình

Hầu hết các hệ thống phân tán được xây dựng dựa trên một mô hình cụ thể

– Bộ nhớ dùng chung (shared memory)

– Đối tượng phân tán (distributed objects)

– Hệ thống file phân tán (distributed file system)

– Tài liệu dùng chung (shared documents)

– Cộng tác phân tán (distributed coordination)

– Tác tử (agents)

3 mô hình sau là chủ đề dành cho các báo cáo thu hoạch

Trang 25

Cấu trúc môn học

1 Giới thiệu

2 Kiến trúc hệ thống và liên lạc

3 Sao lặp và tính nhất quán, bộ nhớ dùng chung phân tán

4 Middleware, đối tượng phân tán, publish/subscribe,

Trang 26

Tài liệu tham khảo

Tài liệu môn học Distributed Systems

(COMP9243), Đại học New South Wales, Úc

http://www.cse.unsw.edu.au/~cs9243/

• Andrew S Tanenbaum & Maarten van Steen,

Distributed Systems: Principles and Paradigms,

2002, Pearson Prentice Hall

• George Coulouris, Jean Dollimore & Tim

Kindberg: Distributed Systems: Concepts and

Design, 3rd ed, 2003, Addison-Wesley

Trang 27

Thông tin khác

Đánh giá:

• 01 bài tập (hệ số 0,3)

lập trình phân tán dùng Java RMI + CORBA

• 01 báo cáo thu hoạch (hệ số 0,2)

đọc và tóm tắt bài báo khoa học

• Thi cuối kì (được dùng tài liệu, hệ số 0,5)

• Gian lận (chép / cho chép bài thi, bài tập, báo cáo)

→ trượt, không được thi lại

Trang 28

II Kiến trúc hệ thống và liên lạc

Hệ phân tán (NW605)

1 Các kiến trúc hệ thống

2 Tiến trình

3 Liên lạc trong hệ phân tán

4 Các trừu tượng hóa liên lạc

Trang 29

Các phong cách kiến trúc

Phân tầng (layered) Hướng đối tượng (object-oriented)

Tách thành phần theo logic xử lý

Tách thành phần theo không gian

và thời gian

Trang 30

Kiến trúc tập trung

Mô hình client-server cơ bản

• Server : tiến trình cung cấp dịch vụ

• Client : tiến trình sử dụng dịch vụ

• Client và server chạy trên các máy khác nhau

• Client sử dụng dịch vụ theo mô hình yêu cầu/trả lời

Trang 31

Ví dụ client-server

server(void) {

struct sockaddr_in cin, sin;

int sd, sd_client;

sd = socket( AF_INET , SOCK_STREAM , 0 );

bind(sd, ( struct sockaddr *) &sin, sizeof (sin)); //đăng ký dịch vụ

listen(sd, queuesize); //vòng lặp đợi yêu cầu của client

while ( true ) {

sd_client = accept(sd, ( struct sockaddr *)&cin, &addrlen));

recv(sd_client, buffer, sizeof (buffer), 0 ); //nhận yêu cầu

DoService(buffer); //thực hiện yêu cầu, ghi kết quả vào buffer

send(sd_client, buffer, strlen(buffer), 0 ); //gửi trả kết quả

sd = socket( AF_INET , SOCK_STREAM , 0 );

connect(sd, (void*) &sin, sizeof (sin));

send(sd, buffer, strlen(buffer), 0 ); //yêu cầu

recv(sd, buffer, bufsize, 0 ); // nhận kết quả

close(sd);

}

Trang 32

Các kiểu phân chia chức năng giữa client và server

1-29

Trang 33

Phân tán theo chiều dọc (Multi-tier)

Trang 34

Phân tán theo chiều dọc (Multi-tier)

Ví dụ về một server thực hiện vai trò như một client

1-30

Trang 35

Phân tán theo chiều ngang

Ví dụ về phân tán theo chiều ngang ở một dịch vụ Web

1-31

Trang 36

Kiến trúc đồng đẳng (Peer to peer – P2P)

Mọi tiến trình đều giữ cả hai vai trò server và client

Trang 37

Các hệ thống P2P phi cấu trúc

• Đồ thị có cấu trúc ngẫu nhiên

• Dữ liệu lưu tại các nút ngẫu nhiên

• Cập nhật thông tin cấu trúc bằng cách trao đổi

thông tin không đầy đủ với các nút láng giềng

– Mỗi peer giữ một hình ảnh không đầy đủ về mạng – danh sách các nút láng giềng

Định kì, mỗi nút p chọn một nút q trong danh sách nút

láng giềng của mình

p và q trao đổi thông tin và danh sách láng giềng

Trang 38

– Ví dụ: Distributed hash table (DHT) Thao tác của hệ thống sẽ LOOKUP(key)dẫn

đường yêu cầu tra cứu tới nút có trách nhiệm

Trang 40

Mạng superpeer

• Peer thông thường là client của superpeer

• Superpeer là server của các peer thông thường

• Các superpeer đóng vai trò peer của nhau

• Superpeer có thể giữ danh mục lớn, hoặc thực hiện vai trò

broker

Trang 41

Mạng edge-server

• Các edge server đặt tại rìa của mạng

– Sao lặp nội dung

– Xác thực người dùng

• Client chỉ liên lạc với edge server nhưng có vẻ như liên lạc với server

trung tâm

• Chủ yếu dùng để phát tán nội dung và ứng dụng

Content Distribution Network

Trang 42

Collaborative Distributed System

Ví dụ: BitTorrent

• Nút tải các đoạn của một file từ nhiều nút khác

• Nút cung cấp các đoạn file cho các nút khác

• Tracker theo dõi các nút đang hoạt động xem chúng chứa những đoạn file

nào

• Đảm bảo sự cộng tác bằng cách phạt những nút ích kỉ

Trang 43

Tiến trình và luồng

Tiến trình (process): một chương trình đang chạy, bao

gồm một hoặc nhiều luồng (thread) đang chạy tuần tự.

• Các tiến trình khác nhau nằm trong một không gian địa chỉ riêng biệt và không truy nhập bộ nhớ của nhau.

• Các luồng thuộc cùng một tiến trình thì cùng sử dụng không gian bộ nhớ của tiến trình đó.

Quy ước trong môn học: gọi mỗi luồng điều khiển là một “tiến trình”

trừ khi các trường hợp có ý nghĩa rõ ràng là luồng.

Trang 44

Đa luồng và các hệ phân tán

Ví dụ:

Web client đa luồng

– Trình duyệt Web quét qua nội dung một trang HTML nhận được và nhận ra

là phải lấy thêm vài file nữa.

– Mỗi file được lấy bởi 1 luồng riêng, mỗi luồng thực hiện một yêu cầu HTTP (blocking)

– Khi nhận được các file, trình duyệt hiển thị chúng

Gửi đồng loạt nhiều yêu cầu tới các máy khác (RPC)

– Một client cùng lúc gọi nhiều hàm, mỗi lời gọi hàm do 1 luồng thực hiện

– Client đợi cho đến khi nhận được tất cả các kết quả

– Lưu ý: nếu các lời gọi hàm gửi đến các server khác nhau, ta có thể có tốc độ tăng theo hàm tuyến tính

Trang 45

Đa luồng và các hệ phân tán

Tăng hiệu năng:

– Mở luồng mới rẻ hơn nhiều so với mở tiến trình mới

– Dùng server đơn luồng cản trở khả năng mở rộng tới hệ thống multi-processor

– Với client: che dấu độ trễ do mạng bằng cách phản ứng với yêu cầu tiếp theo trong khi đang đợi kết quả của yêu cầu trước

Cấu trúc tốt hơn

– Đa số server chịu đòi hỏi cao về I/O Sử dụng các lời gọi hàm dạng blocking dễ hiểu làm đơn giản hóa cấu trúc toàn cục

– Các chương trình đa luồng có xu hướng gọn hơn và dễ hiểu

hơn do cấu trúc điều khiển đơn giản hơn

Trang 46

Thiết kế server

Một server đa luồng

được tổ chức theo mô

hình dispatcher/worker.

Tiến trình đơn luồng Không song song, blocking system call

Luồng Song song, blocking system call

Ôtômát hữu hạn Song song, nonblocking system call

Trang 47

Thiết kế server

Mô hình cơ bản: Server là một tiến trình đợi yêu cầu dịch

vụ tại một địa chỉ cụ thể (IP+cổng) Trong thực tiễn có ánh xạ 1-1 giữa một cổng và một dịch vụ.

– Ví dụ: ftp (File Transfer Protocol) dùng cổng 21, smtp (Simple Mail Transfer) dùng cổng 25

Các kiểu server:

– Siêu server: server nghe tại nhiều cổng, cung cấp các dịch vụ độc lập Mỗi khi nhận được một yêu cầu dịch vụ, siêu server tạo một tiến trình con để xử lý yêu cầu

– Server lặp và server tương tranh: server lặp chỉ phục vụ từng client một

Trang 48

√ Tăng hiệu năng, đặc biệt khi client được lưu dữ liệu tại các bản sao nội bộ

× Chi phí cao khi khôi phục sau lỗi

× Phải theo dõi client

Stateless server:

Ø Không lưu trữ trạng thái của client (file đã mở, kiểm tra cache của client…)

√ Client và server hoàn toàn độc lập

√ Không phải dọn dẹp khi khôi phục sau lỗi (do không có sự không thống

nhất về trạng thái)

√ Dễ dàng cho sao lặp

× Có thể giảm hiệu năng (liên lạc nhiều hơn, không thể đoán và tải file trước)

Trang 50

– Phân tích yêu cầu

– Chuyển tiếp yêu cầu tới server thích hợp

Trang 51

Liên lạc

Các tiến trình đang cộng tác cần liên lạc với nhau

– Để đồng bộ hóa và điều khiển

– Truyền thông điệp

• Cơ chế IPC (Inter-process communication) của hệ điều hành

Đó là trong hệ thống một máy tính

Trang 52

Liên lạc trong hệ phân tán

Trong một hệ phân tán (nhiều máy tính)

• Chia sẻ bộ nhớ

– Không thể thực sự dùng chung bộ nhớ

– Bộ nhớ dùng chung phân tán

(DSM - distributed shared memory)

• Truyền thông điệp

– Qua mạng

– Nảy sinh độ trễ

– Nảy sinh rủi ro thất bại

– Tính không đồng nhất có thể dẫn đến sự không tương thích

Trang 53

Distributed Shared Memory

Giả lập bộ nhớ dùng chung

a) Các trang của không gian

địa chỉ được phân tán

Trang 54

Truyền thông điệp

– Đáng tin cậy / không đáng tin cậy

– Có đảm bảo thứ tự thông điệp khi giao

Biểu diễn dữ liệu:

– Marshalling

– Thứ tự byte thấp/cao (little/big endian)

Trang 55

Các tầng trong liên lạc của hệ phân tán

1 Các tầng thấp:

– Vật lý, Liên kết dữ liệu, Mạng

– Tầng mạng là giao diện mức thấp nhất của nhiều hệ phân tán

2 Tầng giao vận: cung cấp các tiện ích liên lạc thực sự cho hầu hết

– Các giao thức naming cho phép dễ dàng chia sẻ tài nguyên

– Các giao thức bảo mật dành cho liên lạc an toàn

– Các cơ chế mở rộng, chẳng hạn sao lặp và caching

– Phần còn lại (không có trong middleware) là các giao thức đặc thù của ứng dụng

Trang 57

Liên lạc hướng dữ liệu / hướng điều khiển

Liên lạc hướng dữ liệu:

– Tạo điều kiện cho trao đổi dữ liệu giữa các luồng

– Không gian địa chỉ dùng chung, bộ nhớ dùng chung và truyền thông điệp

Liên lạc hướng điều khiển:

– Chuyển điều khiển theo thông điệp

– RPC (gọi hàm từ xa ), RMI (gọi phương thức từ xa)

Nhận xét:

– Phần cứng và hệ điều hành thường cung cấp liên lạc hướng dữ liệu

– Cơ sở hạ tầng ở mức cao hơn thường cung cấp cơ chế liên lạc hướng điều khiển (middleware)

– Nhưng một số hệ điều hành cung cấp RPC, và MPI (Message Passing

Interface) cung cấp liên lạc hướng dữ liệu

Trang 58

Liên lạc đồng bộ / không đồng bộ

Liên lạc đồng bộ:

– Bên gửi block cho đến khi thông điệp được nhận

– Bên gửi thường block cho đến khi thông điệp được xử lý và bên gửi nhận được thông điệp trả lời

– Bên gửi và bên nhận phải cùng ở chế độ hoạt động

– Bên gửi đợi yêu cầu, xử lý yêu cầu (nhanh nhất có thể), và gửi trả kết quả

– Mô hình client-server thường dùng liên lạc đồng bộ

Không đồng bộ

– Bên gửi tiếp tục chạy sau khi gửi thông điệp (không block đợi kết quả)

– Thông điệp được xếp vào hàng đợi nếu bên nhận không ở chế độ hoạt động

– Thông điệp được xử lý khi nào thuận tiện cho bên nhận

Đồng bộ / không đồng bộ thích hợp cho các tình huống nào?

Ngày đăng: 24/08/2017, 10:01

TỪ KHÓA LIÊN QUAN

w