22
2/15/2011 1 Phát triển phần mềm phân tán GV. TS. Vũ Thị Hương Giang Viện CNTT&TT CHƯƠNG I. KHÁI NIỆM CHUNG 1. Tổng quan về hệ phân tán, ứng dụng phân tán và phần mềm phân tán 2. Phát triển phần mềm phân tán : mục đích, cách tiếp cận và các vấn đề cần giải quyết 3. Vai trò của phần dẻo, truyền thông và hệ điều hành cũng như các dịch vụ hỗ trợ khác trong quá trình phát triển phần mềm phân tán, ví dụ minh họa

Dsd01 sta

Embed Size (px)

DESCRIPTION

qlda

Citation preview

Page 1: Dsd01 sta

2/15/2011

1

Phát triển phần mềm phân tán

GV. TS. Vũ Thị Hương Giang

Viện CNTT&TT

CHƯƠNG I. KHÁI NIỆM CHUNG

1. Tổng quan về hệ phân tán, ứng dụng phân tán và phầnmềm phân tán

2. Phát triển phần mềm phân tán : mục đích, cách tiếpcận và các vấn đề cần giải quyết

3. Vai trò của phần dẻo, truyền thông và hệ điều hànhcũng như các dịch vụ hỗ trợ khác trong quá trình pháttriển phần mềm phân tán, ví dụ minh họa

Page 2: Dsd01 sta

2/15/2011

2

1. HỆ PHÂN TÁN, ỨNG DỤNGPHÂN TÁN VÀ PHẦN MỀMPHÂN TÁN

I.1. Hệ phân tán (distributed system)

[Tanenbaum]:

“A collection of independent computers that appears to its users as a single coherent system.”

3 đặc tính chính:

Tính tự trị (autonomous) của máy tính

Phần mềm chỉ cho người dùng thấy một hệ thống duynhất

Dễ dàng mở rộng hệ thống mà không cần báo trướccho người dùng

Page 3: Dsd01 sta

2/15/2011

3

I.2. Tính toán phân tán(distributed computing)

• [Webopedia] :

“A type of computing in which different components and objects comprising an application can be located on different computers connected to a network.”

• [Wikipedia] :

“Decentralized and parallel computing, using two or more computers communicating over a network to accomplish a common objective or task.”

I.3. Khác biệt giữa hệ thống (system), phầnmềm (software) và ứng dụng (application)

• Hệ thống:

– Quản lý tài nguyên chung, cơ sở hạ tầng, cung cấp các chức năng quản lý chung qua các giao diện có mức độ trừu tượng cao

– Gắn liền với các thiệt bị liên quan, che giấu sự phức tạp và việc trao đổi thông tin giữa các thiết bị này

– Ví dụ: hệ điều hành, hệ thống truyền thông

• Phần mềm

– Chương trình máy tính + tài liệu liên quan (thường tham chiếu đến khái niệm dữliệu của máy tính)

– Không nhất thiết phải ở trạng thái thực thi (executable) hay gắn liền với một hệđiều hành cụ thể

– Không nhất thiết phải tương tác với người dùng trong quá trình họat động

• Ứng dụng

– Một kiểu phần mềm đặc biệt, nhằm mục đích thực hiện một nhiệm vụ nhất định

– Chỉ thực thi được trên hệ điều hành cụ thể

– Cần có sự tương tác với người dùng trong quá trình họat động

Page 4: Dsd01 sta

2/15/2011

4

I.4. Phần mềm / ứng dụng phân tán(distributed software / application)

Ví dụ về phần mềm / ứng dụng phân tán ?

Các đặc tính khácKhả năng mở rộng phạm vi (scalability) ?Tính trong suốt(transparency) ?Tương tác với người dùng?

Tập các thành phần phần mềm/ tiến trìnhtrong 1 mạng máy tính, cùng hoạt động

nhằm phục vụ mục đích nhất định

Phân tán trong phạm vi nào ?

Ví dụ: thương mại điện tử(eCommerce)

• Có phải là HPT hay không? Tại sao?

– Các thành phần phân tán?

– Kiểu tương tác giữa các thành phần này?

LAN

DB client

DB server

internet

app server

app client (UI)

http

Page 5: Dsd01 sta

2/15/2011

5

Ví dụ: timesharing

• Có phải là HPT hay không? Tại sao?

– Các thành phần phân tán?

– Kiểu tương tác?

dumb terminals

mainframe

keystrokes over wire

Ví dụ: parallel computing

• Có phải là HPT hay không? Tại sao?

– Các thành phần phân tán?

– Kiểu tương tác?

dumb terminals

mainframemultiprocessor

keystrokes over wireMột số ứng dụng nổi bật ?

Page 6: Dsd01 sta

2/15/2011

6

II. PHÁT TRIỂN PHẦNMỀM PHÂN TÁN

Online bookstore (e.g. in the World Wide Web)

Customers can connect their computer to your computer (web

server):

Browse your inventory

Place orders

Ví dụ: ứng dụng nhà sách trực tuyến

Quy trình nghiệp vụ

Page 7: Dsd01 sta

2/15/2011

7

What if

Your customer uses a completely different hardware? (PC,

MAC,…)

… a different operating system? (Windows, Unix,…)

… a different way of representing data? (ASCII,

EBCDIC,…)

Or

You want to move your business and computers to the

Caribbean (because of the weather)?

Your client moves to the Caribbean (more likely)?

Ví dụ: ứng dụng nhà sách trực tuyến

Thách thức

What if

Someone tries to break into your system to steal data?

… sniffs for information?

… your customer orders something and doesn’t accept the

delivery saying he didn’t?

Or

You are so successful that millions of people are visiting your

online store at the same time?

Ví dụ: ứng dụng nhà sách trực tuyến

Thách thức

Page 8: Dsd01 sta

2/15/2011

8

When building the system…

Do you want to write the whole software on your own (network,

database,…)?

What about updates, new technologies?

Ví dụ: ứng dụng nhà sách trực tuyến

Thách thức

What if

Two customers want to order the same item at the same time?

Or

The database with your inventory information crashes?

Your customers computer crashes in the middle of an order?

Ví dụ: ứng dụng nhà sách trực tuyến

Thách thức

Page 9: Dsd01 sta

2/15/2011

9

HeterogeneityCác thành phần không thuần nhất phải có khả năng tương thao tác vớinhau

Distribution transparencyGiấu người dùng sự phân tán nhiều nhất có thể

Fault toleranceViệc một thành phần trong hệ thống bị hỏng không làm hỏng cả hệ thống

ScalabilityHệ thống có khả năng hoạt động hiệu quả khi số lượng người dùng tănglên

Hiệu năng của hệ thống tăng lên khi bổ sung thêm tài nguyên

ConcurrencyCó khả năng cùng truy cập vào tài nguyên và chia sẻ tài nguyên

OpennessGiao diện công khai, sẵn dùng và dễ dàng thêm các thành phần mới vào hệthống

SecurityHệ thống chỉ có thể được sử dụng theo cách định sẵn

II.1. Thách thức

II.2. Mục đích

• Kết nối người dùng và các tài nguyên trong hệ thống

– Kinh tế: mua 1 máy in

– Cộng tác: chia sẻ tài nguyên

– Cần đảm bảo an toàn (security)

• Che giấu sự phân tán (Transparency)

– Các khía cạnh cần quan tâm?

• Tính mở (Openness)

– Khả năng tương thao tác (Interoperability)

– Khả chuyển (Portability)

– Khả năng co dãn (Extensibility)

– Phân biệt giữa chính sách và kỹ thuật

• Khả năng thay đổi phạm vi (Scalability)

• Nâng cao tính sẵn dùng (Availability)

Page 10: Dsd01 sta

2/15/2011

10

II.3. Cách tiếp cận

• Tận dụng thế mạnh sẵn có của hệ phân tán

• Độ trễ trong quá trình truyền thông

• Tích phối (coordination)– Chia sẻ tài nguyên và loại trừ lẫn

nhau

– Thứ tự thực hiện, deadlock, live-lock

– Thời gian thực hiện

• Thích nghi với các thay đổi– Hỏng (failures), lỗi phần mềm (soft

faults), tối ưu

– Tìm kiếm và cấu hình các dịch vụ

– Sự không thuần nhất và các phần mềm của bên thứ ba

– Mở rộng phạm vi và tiến hóa

• Tính an toàn an ninh và tính riêng tư

– Tin tưởng vào thiết bị, phần mềm, truyền thông và người dùng khác trong hệ thống

• Khả năng xử lý

• Dung lỗi, mở rộng phạm vi, tiến hóa

• Kiểm soát công khai, quyền ưu tiên

II.3. Cách tiếp cận

• Phân tách chính sách / kỹ thuật

– Giảm độ phức tạp trong quá trình phát triển phần mềmphân tán

– Tăng khả năng thích nghi của PMPT

lower layer

upper layer

’80s: spaghettilower layer

upper layer

’90s: hidinglower layer

upper layer

’00s: adaptation

narrow accessfull exposurehidden mechanisms mechanisms

info control

Page 11: Dsd01 sta

2/15/2011

11

Ví dụ: kỹ thuật tạo bản sao(replication) để dung lỗi

server appfailure rate: F

F = probability server fails

Xác suất để tất cả các server đều hỏng là bao nhiêu?

Cần bao nhiêu bản sao để đảm bảo là tỉ lệ lỗi server luôn nhỏ hơn G?

Ví dụ: hạn chế của việc áp dụng kỹthuật tạo bản sao

• Mua nhiều phần cứng hơn

• Chi phí quản lý

• Nâng cấp phần mềm

• Cân bằng tải

– Quá tải

– Phần mềm phức tạp hơn

Page 12: Dsd01 sta

2/15/2011

12

Ví dụ: kỹ thuật hiding nhằm mục tiêugiảm bớt sự phức tạp[Tanenbaum] “transparency” goals:

Ví dụ: kỹ thuật hiding nhằm mục tiêugiảm bớt sự phức tạp

hiding consists of:

(1) push handling complexity to a

lower level Application

Middleware

Network OS

OS Kernel

Network

(2) implementing a one-size-fits-all solution

Page 13: Dsd01 sta

2/15/2011

13

Ví dụ: hạn chế của kỹ thuật hiding

conversion of complex formats, e.g. medialatency vs. fidelity of access, e.g. DBs, Web…

trusted hosts (security and privacy)different performancedifferent capabilitiesdifferent network access (bandwidth & latency)

select server based on QoS (e.g., mirrors)

cannot hide sharing of resources:resources are consumed, data is modified by others

unexplained behavior

someone needs to decide whether an object is persistent, and someone needs to commit it to disk

Ví dụ: Bài toán scaling

Examples of scalability limitations.

Page 14: Dsd01 sta

2/15/2011

14

Ví dụ: kỹ thuật scaling

The difference between letting (a) a server or (b) a client check forms as they are being filled.

Ví dụ: kỹ thuật scaling

An example of dividing the DNS name space into zones.

Page 15: Dsd01 sta

2/15/2011

15

Ví dụ: kỹ thuật scaling

• Thúc đẩy các giải thuật phi tập trung(decentralized algorithms):

– Các máy không cần cung cấp thông tin về trạng thái củahệ thống

– Các máy tự đưa ra quyết định dựa trên những thông tin riêng

– Nếu một máy bị lỗi, lỗi này không làm ảnh hưởng đếngiải thuật

– Không cần giả thiết là các máy trong hệ thống phải thựchiện đồng bộ

III. CÁC NỀN TẢNG HỖ TRỢQUÁ TRÌNH PHÁT TRIỂNPHẦN MỀM PHÂN TÁN

Page 16: Dsd01 sta

2/15/2011

16

Mở đầu

• Phát triển các phần mềmtốt là công việc khó khăn

• Phát triển các phần mềmphân tán tốt còn khókhăn hơn nữa: khó xâydựng PMPT trực tiếp trêncác thiết bị phần cứng

Cần có các software

platforms trợ giúp việcphát triển PMPT

– Hệ điều hành mạng

– Hệ điều hành phân tán

– Phần dẻo

III.1. Hệ điều hành mạng(Network OS)

• Không che giấu sự phân tán

• Cung cấp các dịch vụ hỗ trợphân tán:

– remote login (ssh),

– remote copying (scp)

– distributed file systems (samba, nsf)

• Thích nghi tốt với các HPT khác nhau

– mount a samba share (MS technology) on a Mac (Apple)

– use ssh to connect from a PC to a Unix server

Kernel

Network OS service

Kernel

Network OS service

Kernel

Network OS service

ApplicationDistributed Application

Machine A Machine B Machine C

Page 17: Dsd01 sta

2/15/2011

17

Ví dụ: local networks

• Có phải là HPT hay không? Tại sao?

– Các thành phần phân tán?

– Kiểu tương tác?

LAN

application

Truy cập vào các tài nguyên hệ thống(ví dụ các files) thông qua mạng

Khó phát triển cácứng dụng phân tán !!!

Kernel

Network OS service

Kernel

Network OS service

Kernel

Network OS service

ApplicationDistributed Application

Machine A Machine B Machine C

III.2. Hệ điều hành phân tán (distributed OS)

• Che giấu hoàn toàn sự

phân tán: hình ảnh của

một hệ thống duy nhất

• Người dùng có cảm

giác như đang sử dụng

một máy tính có nhiều

bộ xử lý (symmetric

multi-processing, SMP)

• Có nhiều điểm tương

đồng với HĐH hỗ trợ

nhiều bộ xử lý

Kernel Kernel Kernel

Distributed Applications

Machine A Machine B Machine C

Distributed Operating System Services

Network

Page 18: Dsd01 sta

2/15/2011

18

Ví dụ: clusters

• Có phải là HPT hay không? Tại sao?

– Các thành phần phân tán?

– Kiểu tương tác?

LAN

app server

app client (UI)

gateway

high-speed network

homogeneous machines

Kernel Kernel Kernel

Distributed Applications

Machine A Machine B Machine C

Distributed Operating System Services

Network

III.3. Phần dẻo (middleware)

• Trong 1 HPT, các ứng dụng khó sử dụng trực tiếp các chức năng đượccung cấp thông qua giao diện của hệ điều hành hay hệ truyền thông:

– Tính không đồng nhất (heterogenous)

– Sự phức tạp của các kỹ thuật bên dưới

• DOS thân thiện với người dùng nhưng khó mở rộng.

• NOS dễ mở rộng nhưng ít thân thiện với người dùng

Cần quản lý các khả năng tương tác khác nhau và che giấu (dù chỉphần nào) các điểm khác biệt này

• Giải pháp:

– Thêm vào một tầng trung gian (phân tán) giữa các tầng ở mức thấp (hệ thốngvà truyền thông) và tầng ứng dụng phần dẻo

Phần dẻo đóng vai trò tương tự như một siêu hệ điều hành trong 1 hệ phân tán

Page 19: Dsd01 sta

2/15/2011

19

III.3. Phần dẻo

Kernel

Network OS service

Kernel

Network OS service

Kernel

Network OS service

Distributed Applications

Machine A Machine B Machine C

Middleware services

Tăng mức độ trừu tượng(mẫu dễ sử dụng)

API mức cao

API mức thấp

API mức thấp

Ví dụ: middleware

• Có phải là HPT hay không? Tại sao?

– Các thành phần phân tán?

– Kiểu tương tác?

Kernel

Network OS service

Kernel

Network OS service

Kernel

Network OS service

Distributed Applications

Machine A Machine B Machine C

Middleware services

data (sharing)-orientedservice-orientedprocess oriented

Page 20: Dsd01 sta

2/15/2011

20

Ví dụ: ubiquitous computing

• Ứng dụng phân tán ?

internetLAN

wireless

radiotelephony

Là phần dẻo, mạnh hơn

Phân loại phần mềm do cácsoftware platforms cung cấp theomục đích sử dụng

Hệ thống Miêu tả Mục đích

DOS

Hệ điều hành dành riêng cho các máy

tính đa xử lý và các máy tính thuần

nhất

Che giấu và

quản lý tài

nguyên phần

cứng

NOS

Hệ điều hành cho các máy tính không

thuần nhất, kết nối qua mạng LAN,

WAN

Cung cấp dịch

vụ tại chỗ cho

các khách hàng

ở xa

MiddlewareTầng xây dựng trên NOS, cài đặt các

dịch vụ với mục tiêu chung

Che giấu sự

phân tán

Page 21: Dsd01 sta

2/15/2011

21

So sánh các software platforms

ItemDistributed OS Network

OS

Middleware-

based OSMultiproc. Multicomp.

Degree of

transparencyVery High High Low High

Same OS on all

nodesYes Yes No No

Number of copies of

OS1 N N N

Basis for

communication

Shared

memoryMessages Files

Model

specific

Resource

management

Global,

central

Global,

distributedPer node Per node

Scalability No Moderately Yes Varies

Openness Closed Closed Open Open

Kết luận

• Tổng quan về hệ phân tán, ứng dụng phân tán vàphần mềm phân tán– Tại sao phải phân tán ?

– Ví dụ thực tế của các hệ phân tán ?

– Khả năng mở rộng/tiến hóa của các hệ thống này?

• Phát triển phần mềm phân tán : mục đích, cáchtiếp cận và các vấn đề cần giải quyết– Tại sao việc phát triển phần mềm phân tán lại khó khăn

hơn phát triển phần mềm thông thường ?

• Vai trò của phần dẻo, truyền thông và hệ điềuhành cũng như các dịch vụ hỗ trợ khác trong quátrình phát triển phần mềm phân tán, ví dụ minh họa

Page 22: Dsd01 sta

2/15/2011

22

Tại sao phải phát triển các phần mềmphân tán

• Nhu cầu ứng dụng

– Tích hợp các ứng dụng riêng rẽ đang có

– Tích hợp các nguồn tài nguyên đang có

• Lưới tính toán

• Quản lý dữ liệu

– Đưa tin học vào các lĩnh vực ứng dụng mới

• Tích hợp các đối tượng trong cuộc sống thực

• Khả năng kỹ thuật

– Chi phí và hiệu năng của máy tính và truyền thông