Các thủ tục chuyển đổi

Một phần của tài liệu Xây dựng dịch vụ tính toán phân bố (distributed computing environment DCE) (Trang 46 - 64)

2 Cơ SỞ LÝ THUYẾT

2.6.3Các thủ tục chuyển đổi

String 7 chuỗi ký tự

Fixed array 7 mảng có kích thước cô" định Counted array 7 mảng có kích thước nhỏ hơn một sô" cô"

định nào đó

Structure 7 câu trúc

Discriminate

Union 7 giông kiểu Union của c

void 0 Không có dữ liệu

Symbolic

constant 7

Optional data 7 Có tôi đa 1 item

Thủ tục Các đôi số Kiểu dữ liệu chuyển

đổi

Xdr_bool xdrs, ptrbool Boolean (int)

Xdr_byte

s xdrs, ptrstr, strsize, maxsize char *

Xdr_char xdrs, ptrchar char

Xdr_doubl

e xdrs, ptrdouble double

Xdr_enu

m xdrs, ptrint enum

Xdr_float xdrs, ptríloat float

Xdr_int xdrs, ptrint int

Xdr_long xdrs, ptrlong long

Xdr_opaq xdrs, ptrchar, count không chuyển đổi

Xây dưng dich vu tính toán phân bô" CBHD : K.S. THOAI NAM

Mỗi cấu trúc đều có những tiện lợi và bất tiện.

Group membership và group addressing là rất cần thiết trong quản lý group. Trong group Communications, phải có send và receive primitive để các thành viên trong group có thề trao đổi thông tin với nhau.

Một đặc tính quan trọng của group Communications là tính chất all-or- nothing (tính atomic). Một group được thiết kế ra để khi một message được gởi đến

group thì nó phải đến chính xác các thành viên của group hoặc là không đến thành

viên nào cả.

Một tính chất khác cũng rất quan trọng của group Communications là (adsbygoogle = window.adsbygoogle || []).push({});

SVTH :NGUYỄN VĂN Nổi - 59406114 58

Xây dưng dich vu tính toán phân bô" CBHD : K.S. THOAI NAM Các group có thể overlapping lẫn nhau.

Tính scalability phải được xem xét khi dùng mô hình group Communications.

2.6 XDR (eXternal Data Representation)

2.6.1 Tại sao lại phải sử dụng XDR

Do các kiến trúc máy tính khác nhau sử dụng các cách biểu diễn dữ liệu khác nhau. Thí dụ, việc chứa một sô" nguyên , ở một sô" máy tính, byte thâ"p

chứa ở

địa chỉ thấp, byte cao ở địa chỉ cao nhưng ở một sô" máy khác, byte thâ"p nhâ"t lại

được chứa trong bộ nhớ ở địa chỉ cao nhâ"t.

Nếu chỉ lập chương trình chạy trên một máy thì không cần quan tâm đến vân

đề trên .

MSB LSB

---Địa chì tăng---► (b)

Hai kiểu biểu diễn thông dụngcủa một sô" nguyên 32 bit 1230h. "big endian", (b) "little endian".

Để giải quyết vân đề trên ta có các giải pháp sau :

• Máy A muôn truyền dữ liệu cho máy B thì nó sẽ chuyển dữ liệu đó theo dạng

câu trúc của máy B.

• Các máy khi chuyển dữ liệu đi thì đổi thành dạng chuẩn nào đổ. Các máy

SVTH :NGUYỄN VĂN Nổi - 59406114 59

Xây dưng dich vu tính toán phân bô" CBHD : K.S. THOAI NAM Phương pháp 1 : Đòi hỏi một máy phải biết rỏ cấu trúc của các máy khác.

Điều này dẫn đến khả năng khó mở rộng chương trình và làm tăng tính phức tạp

của chương trình nếu có nhiều máy có cấu trúc khác nhau.

Phương pháp 2 : Khắc phục những nhược điểm của phương pháp 1. Tuy nhiên nếu chương trình chạy trên các máy có cấu trúc giông nhau hoàn toàn thì vấn

2.6.2 Các kiểu dữ liệu chuẩn của XDR chuẩn của XDR

SVTH :NGUYỄN VĂN Nổi - 59406114 60

Xây dưng dich vu tính toán phân bô" CBHD : K.S. THOAI NAM

2.6.3 Các thủ tục chuyển đổi chuyển đổi

Xdr_point

er xdrs, ptrobj, objsize, xdrobj void *

Xdr_short xdrs, ptrshort short (adsbygoogle = window.adsbygoogle || []).push({});

Xdr_strin

g xdrs, ptrstr, maxsize char *

Xdr_u_ch

ar xdrs, ptruchar unsigned char

Xdr_u_in

t xdrs, ptrint unsigned int

Xdr_u_lon

g xdrs, ptrulong unsigned long

Xdr_u_sh

ort xdrs, ptrushort unsigned short

Xdr_unio

n xdrs, ptrdiscrim, ptrunion,choicefcn,default Union Xdr_vect

or xdrs, ptrarray, size, elemsize,elemproc void *

3 Phân tích .thiết kế và hiên thức

3.1 Tổng kết phẩn cơ sử lý thuyết

Những đặc tính chính của hệ phân bô" là : hỗ trợ dùng chung tài nguyên

, tính

mở , tính đồng thời , khả năng chịu lỗi và tính trong suốt. Và đó cũng là điều phải

quan tâm khi xây dựng các ứng dụng trên hê phân bô".

TCP/ĨP cung câ"p cho người lập trình hai dich vụ sơ câ"p là sự phân

phôi các

gói dữ liệu và vận chuyển các dòng dữ liệu một cách tin cậy. TCP/IP có những đặc

điểm nổi bật làm cho nó phổ biến một cách rộng rãi là : • Không phụ thuộc vào sơ đồ vật lý của mạng. • Không phụ thuộc vào phần cứng câu tạo trên mạng. • Chuẩn giao thức mở.

• Tổ chức địa chỉ toàn cầu.

• Làm theo mô hình Client-Server một cách tiện lợi. • Chuẩn giao thức cho nhiều ứng dụng khác.

Mô hình Client-server là một mô hình rất phổ biến trong thiết kê" các ứng

dụng phân bô". Mô hình này với Concurrent và Connection-Oriented Server dùng

TCP đảm bảo truyền tin cậy nhưng vẫn có những nhược điểm: • Client phải biết địa chỉ server.

• Khó có thể bảo vệ Server khi địa chỉ giao tiếp không còn được bảo mật .

Xây dưng dich vu tính toán phân bô" CBHD : K.S. THOAI NAM Tại sao phải là Multicast ? Khi nào ? (adsbygoogle = window.adsbygoogle || []).push({});

• Khi gởi cùng một dữ liệu đến nhiều nơi nhận. • Sử dụng băng thông tốt hơn.

• Xử lý host/router ít hơn.

• Không cần biết địa chỉ nới nhận. ưu điểm của Multicast:

• Tăng hiệu quả : điều khiển lưu lượng mạng và giảm tải CPU và các Server . • Hiệu suất tôi ưu: loại bỏ bớt dư thừa về lưu thông trên mạng.

• ứng dụng phân bô": làm cho các ứng dụng nhiều điểm có thể . Một nhược điểm lớn của Multicast vẫn là UDP .

3.2 Phân tíc h 3.2.1 Bài toán

Bài toán đặt ra cho luận văn này như sau :

Một hệ thông máy tính gồm các máy tính chuyên dụng có khả năng tính toán

lớn (các Server) được kết nôi trên mạng LAN. Những Server này có thể đảm nhận

các dịch vụ tính toán khoa học đặc biệt gọi là các Service.Người sử dụng từ một

máy tính PC bình thường (Client) bằng môi trương lặp trình có thể sử dụng - truy

xuất các dịch vụ tính toán trên các Server. Người quản trị hệ thông (Admin) quản

lý hoạt động các server . Ngừời phát triển dịch vụ xây dựng thêm các dịch vụ trên

Xây dưng dich vu tính toán phân bô" CBHD : K.S. THOAI NAM

• Làm sao để Admin có thể quản lý ,kiểm soát và thông kê hoạt động của các server và việc truy xuất các dịch vụ từ các Client để cho hệ thông các server hoạt động đạt hiệu quả cao nhất.

• Làm sao để có cơ chế thuận lợi cho người phát triển thêm các dịch vụ tính toán

trên các server mà không cần quan tâm việc truyền nhận dữ liệu từ Client....

3.2.2 Các giả thuyết của bài toán:

1- Các Server có khả năng tính toán lớn hơn các máy tính PC bình

thường và

chỉ đảm nhận các dịch vụ tính toán mà không làm thêm chức năng nào khác, nghĩa

là không là không có một User nào (trừ Admin) được login trực tiếp vào các Server

để chạy các ứng dụng khác.

2- Các Server được kết nối trên cùng một mạng LAN (một subnet của mạng

LAN không thông qua router) để bảo đảm các message gởi bằng Multicast có thể

đến được các Server.

3- Thời gian mà các Server chạy các Service để phục vụ cho Client là lớn

hơn rất nhiều so với thời gian truyền dữ liệu từ Client đến Server.

4- Các message điều khiển hoạt hệ thông sẽ ưu tiên xử lý trước so với các

packet dữ liệu. (adsbygoogle = window.adsbygoogle || []).push({});

5- Nếu hai Server A và Server B trong hệ thông còn đường kết nối thì các

message do Server A gởi cho Server B phải đến được Server B và đúng thứ tự có

nghĩa là bỏ qua sự mất mát hay suy giảm tín hiệu trên đường truyền.

3.2.3 Phân tích bài toán và các giả thuyết

Hệ thông cần xây dựng là tập hợp các Server.

Các Server kết nôi trên mạng LAN nên sô" lượng các Server là ít, điều này

giới hạn là tính châ"t của mạng LAN.Các Server này có thể có kiến trúc khác nhau.

Các Server kết nôi trên mạng LAN nên nếu một Server nào đó gởi một packet thì hoặc là đụng độ hoặc là thành công. Vì vậy trên mạng nếu có thì chỉ

Ba loại người tham gia vào hoạt động của hệ thống : người quản trị hệ thông

, người phát triển các dịch vụ , người sử dụng các dịch vụ. Ngoài ra , còn một loại

người cô" tình phá hoại hệ thông của chúng ta. • Người quản trị hệ thông :

-phải nắm toàn bộ thông tin của hệ thông :

Thông tin về các Server : hệ thông gồm các Server nào , trạng thái ra

sao ,

tải hiện tại là bao nhiêu , Server có những dịch vụ nào và những dịch vụ nào đang

chạy.

Thông tin về dịch vụ :các dịch vụ có Server nào ,...

Thông tin về User xác User nào được phép trên hệ thông ,điíỢc phép

với dịch

vụ nào, và hiện tại User đang truy xuất dịch vụ nào ở Server nào ...

-có quyền điều khiển toàn bộ hoạt động của hệ thông : thêm Server ,bỏ Server , restart lại hệ thông , hủy tất cả các giao dịch mà Server đang phục vụ . • Người phát triển các dịch vụ xhỉ quan tâm đến giải thuật trong chương trình

của

dịch vụ mà họ không quan tâm đến hệ thông Server và họ càng không quan tâm

đến truyền nhận dữ liệu từ Client. Do đó ,hệ thông phải cung câ"p cho họ

một cơ

chế truyền nhận dữ liệu tiện lợi cho họ viết các chương trình dịch vụ.

• Người sử dụng các dịch vụ (Client) :không biết hệ thông gồm có các Server nào

và địa chỉ các Server là bao nhiêu mà họ chỉ quan tâm hệ thông có thể có được

những dịch vụ nào,cách sử dụng như thế nào. Với những dịch vụ này ,không

phải bất kỳ User nào cũng được phép mà chỉ những User đăng ký dịch vụ với (adsbygoogle = window.adsbygoogle || []).push({});

Admin là User được phép sử dụng dịch vụ này tôi đa bao nhiêu lần ,khi đó User

được câ"p accout với username và password. Khi đó User mới được quyền sử

dụng dịch vụ đã đăng ký.

Như vậy, tới đây thì hệ thông gồm 4 chương trình : chương trình điều

Xây dưng dich vu tính toán phân bô" CBHD : K.S. THOAI NAM và giải thuật cho từng dịch vụ cũng khác nhau. Điều này gây ra khó khăn về mặt

giao tiếp ở phiá Client khi người sử dụng truy xuất các dịch vụ khác nhau. Một câu hỏi đặt ra là tại sao không đặt chương trình dịch vụ này chung với

chương trình Server như mô hình Client -Server đã làm? Nên nhớ chương trình Server là chương trình quản lý thì nó không được phụ thuộc vào dịch vụ. Mà

nếu để

chương trình dịch vụ chung với chương trình Server thì sau này không thể nào thêm

một dịch mới vào hệ thông ( nếu thêm thì mở chương trình Server ra dịch lại !). Điều này đã vi phạm tính mở trong hệ phân bô?

Môi trường giao tiếp ở Client được chọn là môi trường lập trình bằng ngôn

ngữ c trên Unix.( Có thể mở rộng giao tiếp ở Client bằng Web chẳng hạn.) Client

là một module để người sử dụng liên kết vào chương trình c khi truy xuất một dịch

vụ , khi đó Client module nên là một hàm tổng quát nhất và duy nhất cho tất cả các

dịch vụ để đơn giản vấn đề lập trình ở Client nhất là những người không có kinh

nghiệm nhiều về lập trình thì cần đơn giản hóa trong vấn đề giao tiếp với hệ

thông .

VI là lập trình c trên Unix,nên User của hệ thống dịch vụ cũng là User của hệ thống

Unix đơn giản trong vấn đề quản lý User.

3.3 Các mỏ hình và lưa chon mô hình

Với một yêu cầu của Client ,có thể có nhiều Server hoặc không có Server

nào có khả năng đáp ứng. Việc lựa chọn mô hình sao cho nếu còn Server thì phải

đáp ứng cho Client mà vẫn bảo đảm rằng thông tin của hệ thông không bị mất. Có

ba mô hình được đề nnghị như sau :

3.3.1 Chỉ dùng mô hình Client -Server

Client lần lược gởi yêu cầu đến các Server. Khi tìm được Server đúng yêu

Thông tin về User sử dụng dịch vụ rất khó quản lý vì quyết định chọn Server

nào là do Client.

Hoạt động hệ thông theo mô hình này là tự phát vì tất cả xuất phát từ Client.

Hoạt động của hệ thống theo mô hình này có thể xem như sau : (adsbygoogle = window.adsbygoogle || []).push({});

Client là một người khách , hệ thông Server là một siêu thị ,dịch vụ là món

hàng. Người khách vào siêu thị với nhu cầu tìm món hàng và cứ đi tìm mà không

biết món hàng đó có trong siêu thị hay không ,cứ đi tìm hết nếu không có thì thôi

và nếu tìm có thì một lần nữa lại lựa chọn và lựa chọn xong rối khách hàng có chi

phí hay không ? và hay là người khách đó vào trong siêu thị không với mục

đích tìm

kiếm mà là phá hoại hệ thông của chúng ta? Nếu như mà hệ thông có người đứng

ngay cửa siêu thị để giúp dở khách hàng với mặt hàng này thì siêu thị chúng tôi không có để khách hàng khỏi mất công tìm kiếm, với mặt hàng đó thì siêu thị chúng

tôi có và anh có thề tìm ở vị trí X hay anh cứ ở đây tôi sẽ cử người mang ra cho anh Như vậy thì có lẽ tốt hơn ,tốt hơn cho Client mà cả hệ thông cũng được bảo vệ. Người giúp đỡ ở trên vừa làm nhiệm vụ giúp đỡ vừa gián tiếp làm nhiệm vụ giám sát ,bảo vệ hệ thông .

Mô hình Client -Server này sẽ không được chọn trong hệ thông của

chúng ta

nhưng mô hình này vẫn là nền tảng của các ứng dụng trong hệ phân bô".

3.3.2 Dùng Client -Server kết hỢp với Peer Group

Các Server thuộc vào một group với địa chỉ group là địa chỉ Multicast . Client dùng Multicast gởi yêu cầu đến group. Nếu Server nào thỏa yêu cầu thì trả

lời cho Client. Các Server là ngang hàng nhau ,không có Server nào ưu tiên

hơn cả.

Đây là sự kết hơp giữa mô hình Client -Server và mô hình Peer Group . • Ưu điểm :

Client chỉ cần gởi một bản yêu cầu đến group các Server nhằm làm giảm

lưu thông trên mạng

Client không cân biết tất cả các địa chỉ của các Server mà chỉ cần biết SVTH :NGUYỄN VĂN Nổi - 59406114

Xây dưng dich vu tính toán phân bô" CBHD : K.S. THOAI NAM Khắc phục hai nhược điểm trên , ta có mô hình thứ ba .

3.3.3 Dùng Client -Server kết hỢp với Hierarchical Group

Client vẫn dùng Multicast gởi yêu cầu đến group các Server như ở mô hình

thứ hai . Nhưng trong các Server , chỉ có một Server chính sẽ trả lời cho Client biết

Server nào là thích hợp nhất. Mô hình này cải tiến mô hình thứ hai trong viêc khắc

phục lỗi và giảm lưu lượng thông tin trên mạng. Phần tử Server chính trả lời cho

Client được gọi là Agent. • Ưu điểm :

Client chỉ cần gởi một yêu cầu đến group các Server và chỉ có 1 Server chính trả lời cho Client.

Client không cân lưu danh sách địa chỉ các Server mà chỉ cần biêt địa chỉ

group các Server. (adsbygoogle = window.adsbygoogle || []).push({});

Thông tin được giảm cả hai chiều . Client không cần tính toán chọn Server .

Client không cần biết hệ thông có agent hay không mà chỉ gởi yêu cầu vào

nhóm. Nếu hệ thông không có Agent, thì các Server bằng giải thuật bầu cử sẽ chọn

ra một agent mới để trả lời cho Client.

Có khả năng khắc phục lỗi cao khi Server bi lỗi Client yêu cầu , agent gởi

một địa chỉ Server khác. • Nhược điểm :

Trong hệ thông luôn có một phần tử yếu là Agent. Khi chọn mô hình này

cần xem xét vấn đề bầu chọn lại Agent khi Agent cũ không còn nũa.

Mô hình rất phù hợp với hoạt động trên mạng LAN và được chọn để hiện

thực trong hoạt độn của hệ thông .

3.4 Cấu trúc của hê thông

Một Agent : điều khiển hoạt động các Server , xữ lý yêu cầu của Client , phục vụ Admin . Agent luôn luôn tồn tại trong hệ thông và sẽ do Admin chỉ định

hoặc do Server bầu ra. Nó phải được Admin program start trước tiên trên một server

do người quản trị hệ thông chỉ định .

Server : quản lý các dịch vụ trên Server và chiụ sự điều khiển của Agent ,ứng củ để trở thành Agent khi Agent không còn nữa. Chỉ một Server trên một máy

và Admin program gọi chạy từ xa.

Một phần của tài liệu Xây dựng dịch vụ tính toán phân bố (distributed computing environment DCE) (Trang 46 - 64)