Kiến trúc JXTA

Một phần của tài liệu Nghiên cứu và đánh giá hiệu năng của giao thức chord trên mạng ngang hàng (Trang 43)

Hình 2.2. Mô hình kiến trúc JXTẠ

Theo mô hình kiến trúc này thì JXTA gồm 3 lớp là:

Lp lõi (JXTA core): Phụ trách việc tạo peer, xóa peer, quảng bá peer… ðồng thời lớp này cũng có nhiệm vụ quản lý truyền thông giữa các peer với nhau trong mạng như:

- ðịnh tuyến (routing). - Thăm dò (plumbing).

Lp dch v (JXTA Services): Cung cấp dịch vụ cho các ứng dụng P2P như:

- Tìm kiếm (Search). - Chỉ mục (Indexing). - Chia sẻ file (file sharing). - Discoverỵ

- Membership.

Lp ng dng (JXTA Applications): Ứng dụng P2P hoạt ñộng ở lớp nàỵ Lớp ứng dụng quản lý các ứng dụng P2P do người dùng xây dựng và tích

hợp các ứng dụng P2P, có thể phối hợp các ứng dụng P2P khác nhaụ Lớp ứng dụng ñáp ứng các ứng dụng tích hợp như chia sẻ file, lưu trữ phân tán và nhiều hơn nữạ

2.4. Các giao thc trong JXTA

Trong JXTA có rất nhiều giao thức. Chúng ta có thể phân cấp cho các giao thức JXTA như hình 2.3 dưới ñâỵ

Hình 2.3. Các giao thc trong JXTẠ

Giao thc phát hin peer (peer discovery protocol): Cho phép một peer tìm thấy thông báo quảng bá (advertisement) trên các peer khác hoặc dùng ñể tìm bất cứ peer, nhóm peer hay thông báo quảng bá nàọ

Giao thc phân tích ñịa ch peer(peer resolver protocol): Cho phép một peer gửi và nhận các truy vấn (queries) ñể tìm peer, nhóm peer, ống và các thông tin khác.

Giao thc thông tin peer (peer information protocol): Cho phép một peer tìm hiểu ñược khả năng và trạng thái của peer khác. Ví dụ: Lệnh ping.

Giao thc hi nhóm (Rendezvous Protocol): Cho phép một peer phát tán thông ñiệp trong phạm vi của một nhóm peer.

Giao thc ni ng (Pipe Binding protocol): Cho phép các peer thiết lập kênh truyền thông ảo như một ñường ống (pipe) giữa chúng và các peer khác. Các peer gửi thông ñiệp qua ống.

Giao thc ñịnh tuyến ñim cui (Endpoint routing protocol): Cho phép một peer hỏi một peer ñịnh tuyến về các ñường chuyển thông ñiệp tới một peer ñích. Peer ñịnh tuyến (router peer) là peer thực hiện các thủ tục ñịnh tuyến ñiểm cuối (Endpoint routing protocol).

2.5. Tng quan mô hình mng JXTA

Hình 2.4 mô tả mạng JXTA ảo hoạt ñộng ở lớp trên cùng của bất kỳ mạng nào như Internet hoặc non-IP và cho phép các peer tương tác trực tiếp và tổ chức một cách ñộc lập.

Hình 2.4. Mô hình mng JXTẠ

Theo mô hình mạng JXTA ta có thể thấy JXTA có các ñặc tính như:

Kh năng phi hp hot ñộng (Interoperability): ðây là một ñặc tính quan trọng của JXTA, tức là các peer dễ dàng ñịnh vị lẫn nhau và dễ dàng trao ñổi thông tin với nhau cũng như các peer dễ dàng tham gia vào các hệ thống P2P khác nhaụ Do vậy các hệ thống P2P khác nhau có thể dễ dàng

phối hợp hoạt ñộng với nhaụ Ví dụ: Có thể phối hợp hệ thống P2P chia sẻ file nói chung (Gnuttela) và chia sẻ nhạc (Napster).

Không ph thuc vào platform (Platform independence): Tức là nó không phụ thuộc vào ngôn ngữ lập trình, không phụ thuộc vào hệ ñiều hành và không phụ thuộc vào thủ tục mạng, giao thức mạng (TCP/IP, Bluetooth…). Tóm lại JXTA có thể chạy trên nhiều ngôn ngữ lập trình, nhiều giao thức và hệ ñiều hành khác nhaụ

Tính ph biến (Ubiquity): Tức là JXTA có thể hoạt ñộng trên tất cả các thiết bị số (digital device):

- Thiết bị ñiện tử dân dụng. - Sensor. - PDẠ - Mobile phonẹ - PC. 2.6. Ưu nhược ñim ca JXTA Ưu ñim:

• Các hệ thống xây dựng dựa trên JXTA có khả năng tương tác với các ứng dụng khác. Nhiều ứng dụng và dịch vụ xây dựng trên cùng framework có thể tương tác với nhau một cách dễ dàng. Chúng có thể thuộc về các tổ chức khác nhau và hệ thống P2P khác nhaụ Vai trò của JXTA trong mạng P2P tương tự như vai trò của trình duyệt trên trong internet. Và những người phát triển JXTA không cần sử dụng quá nhiều thời gian cho việc phát triển các lớp bên dưới bởi vì nó ñã ñược phát triển và họ chỉ cần tập trung vào ứng dụng ñang phát triển.

• Công nghệ JXTA ñược dựa trên việc sử dụng các giao thức, như thế người phát triển không cần làm việc với platform cụ thể. JXTA không cần phiên bản ứng dụng khác nhau cho các platform khác nhaụ JXTA ñộc lập với các ngôn ngữ lập trình và như thế người phát triển C có thể làm giống như người phát triển Javạ

• Kỹ thuật P2P hiện tại phụ thuộc vào kỹ thuật vận chuyển như TCP hay UDP... JXTA cố gắng ñể ñộc lập với lớp vận chuyển khác nhau như TCP, UDP...

• Các peer JXTA có thể là bất cứ thiết bị số nào như ñiện thoại di ñộng, PC, router... Như thế JXTA chiến thắng giới hạn giao tiếp hiện tại giữa các PC.

• JXTA sử dụng ñịnh dạng XML ñể gửi quảng bá và messagẹ JXTA tăng sự mở rộng của nó bằng việc sử dụng ñịnh dạng chuẩn như XML nhưng nó cần làm việc nhiều hơn với XML parser cho các thiết bị như ñiện thoại di ñộng.

Nhược ñim: Vì JXTA vẫn ñang trong giai ñoạn phát triển. Một vài thay ñổi sẽ ñến trong giao diện, giao thức, và sự bổ sung sẽ ảnh hưởng ñến ứng dụng phát triển hiện tạị

2.7. Các phiên bn và tương lai ca JXTA Các phiên bn JXTA : Các phiên bn JXTA : • JXTA 1.0 (2001) - Chỉ hỗ trợ J2MẸ - Hỗ trợ ngôn ngữ C, Javạ • JXTA 2.0 (2004) - Hỗ trợ cho J2SE, J2MẸ

- Hỗ trợ các ngôn ngữ Java, C, Perl, Python, Rubỵ

Tương lai ca JXTA :

• Cộng ñồng phát triển mở:

- JXTA là dự án mã nguồn mở.

- Xây dựng bởi rất nhiều chuyên gia trên thế giớị

- Môi trường cộng tác phát triển trên nền Web (jxtạorg). - ðược sự hỗ trợ rất lớn của cộng ñồng các nhà phát triển P2P.

• Ứng dụng ngày càng rộng rãi:

- Truyền thông không dây: JXTA for J2MẸ - Chính phủ: Video conference, e-Government.

- Giải trí: Game online, Music sharing.

- Các ứng dụng truyền thông và cộng tác: File sharing, chat, các ứng dụng chia sẻ có thể sử dụng cho quản lý, giáo dục…

Chương 3

NGHIÊN CỨU GIAO THỨC CHORD TRÊN MẠNG NGANG HÀNG

Chương này sẽ trình bày những vấn ñề cơ bản của giao thức Chord. Mở ñầu chương là những giới thiệu qua về mạng ngang hàng dựa trên bảng băm phân tán (thế hệ mạng ngang hàng thứ ba) bao gồm những khái niệm về: Bảng băm phân tán (Distributed Hash Table) và những ñặc ñiểm chính của mạng ngang hàng dựa trên bảng băm phân tán. Phần tiếp theo của chương này sẽ tập trung vào vấn ñề cốt lõi của chương ñó là giao thức Chord. ðây là một trong những DHTs ñơn giản nhưng hiệu quả. Phần này sẽ trình bày về mô hình hệ thống, cấu trúc vòng tròn Chord, phân tích tiến trình tìm kiếm dữ liệu, vấn ñề ổn ñịnh khi các Node gia nhập và rời khỏi mạng, ñồng thời ñưa ra các giải pháp ñể nâng cao hiệu năng của Chord dưới ñiều kiện churn rate caọ

3.1. Thế h mng P2P da trên bng băm phân tán

Mạng ngang hàng ñã trải qua ba thế hệ. Trong ñó thế hệ thứ ba ñược biết ñến với cái tên là mạng ngang hàng dựa trên bảng băm phân tán. Thế hệ thứ ba ñược bắt ñầu với các dự án nghiên cứu như Chord, Patry, P-grid và Tapestrỵ Các dự án này ñều tập trung nghiên cứu về bảng băm phân tán (Distributed Hash Table). Một Node trong các hệ thống này có thể ñược nhận dạng dựa trên việc băm một vài thuộc tính ñặc trưng của Node như ñịa chỉ IP của Nodẹ

3.1.1.Bảng băm phân tán 3.1.1.1.Hàm băm

Vào những năm 1953, nhà toán học Hans P.Luhn, lúc ñó ñang làm việc cho IBM ñã mô tả và thử một hàm toán học mới mà nó có thể tạo ra các biến ngẫu nhiên với một ñịnh dạng duy nhất. Khái niệm này có thể cho phép tìm ñược dữ liệu nhanh hơn mà máy tính không cần phải ñọc mọi dòng của văn bản, thay vào ñó nó cho phép truy nhập tới các chỉ số trong một mảng tuyến tính sau này ñưa ra khái niệm về chuỗị Với chuỗi (chaining) này, Luhn ñã nảy ra một ý tưởng là sử dụng một không gian ảo trong ma trận ñể lưu trữ dữ liệu theo thứ tự và từ ñó thực hiện các tìm kiếm bên ngoàị

Mặc dù Luhn ñã ñưa ra thuật ngữ “băm” nhưng nó chưa ñược viết thành tài liệụ Dumey ñã mô tả về kỹ thuật băm ñầu tiên trong cuốn sách của ông “Computers and Automation”. Năm 1956, Dumey ñã tiến xa hơn một bước khi ông ñề xuất một hàm băm ñơn giản ñó là thực hiện phép chia cho một số nguyên tố và số dư ñược sử dụng như ñịa chỉ băm.

Bảng băm (Hash Table) bao gồm nhiều mảng kết hợp và ñược biết ñến như là bảng tìm kiếm. Những bảng này lần lượt ñược sử dụng ñể liên kết ñến nguồn tài nguyên. ðể có thể ánh xạ một giá trị ñến một khóa thì hàm băm ñược sử dụng. Hàm băm sẽ thực hiện băm giá trị có liên quan ñến thông tin về tài nguyên ñể thu ñược một khóạ Khi một khóa ñược tạo ra thì nó sẽ ñược ánh xạ tới không gian ma trận, trong không gian ma trận này thì mỗi tài nguyên ñược kết hợp với một khóạ Một hàm băm tốt khi ñó ta có thể xem rằng các khóa ñược phân tán và ngẫu nhiên.

Giả sử ta có một từ “can” và từ này có thể ñược biểu diễn bởi x, và ta thực hiện băm x bởi một hàm băm h. Tức là:

0 h(x) n – 1

Ở ñây n là số không gian có trong bảng băm. Giả sử n = 97, các bước thực hiện có thể ñược diễn tả như sau:

• Bước 1: Chuyển giá trị của trường khóa “can” thành một chuỗi các giá trị thập phân sử dụng bảng mã ASCII (American Standard Code for Information Interchange), kết quả là: 99, 97, 110.

• Bước 2: Cộng các giá trị ta ñược kết quả là 306.

• Bước 3: thực hiện phép tính: 306 mod 97 ta ñược số dư là 15.

• Bước 4: Gán từ “can” với số 15.

Ví dụ ở trên chỉ là một hàm băm ñơn giản. Nó có thể tránh ñược những xung ñột bởi vì kích thước của bảng băm là một số nguyên cố ñịnh (n = 97). Tuy nhiên, nếu bảng này có kích thước không xác ñịnh thì rất khó ñể xác ñịnh các khóa ñược ánh xạ ở ñâu trong không gian của bảng băm và vấn ñề xung ñột hoàn toàn có thể xảy rạ

Các hàm mật mã (Criptographic Hashs) thường ñược sử dụng trong DHTs nhằm tạo ra các message digests, ñể kết hợp một tài nguyên với một khóạ Hàm mật mã

thường ñược sử dụng là SHẠ Phiên bản hàm mật mã SHA-1 vẫn ñược sử dụng rộng rãi ngày nay. Chuẩn của thuật toán SHA bao gồm bốn thuật toán tính hash code ñó là: SHA-1, SHA-256, SHA-384, và SHA-512 dùng ñể tính rút gọn dữ liệu ñiện tử (Message). Khi message có ñộ dài nhỏ hơn 264 bit (dùng SHA-1 và SHA- 256) hoặc nhỏ hơn 2128 bit (dùng SHA-384 và SHA-512) sẽ cho output ra là gọi là message digest. Message digest này có ñộ dài từ 160 ñến 512 bit tùy thuộc vào thuật toán ñược dùng. SHA ñược mặc ñịnh sử dụng với một thuật toán mã hóa khác như thuật toán chữ ký số (Digital Signature Algorithms). Những thuật toán này luôn luôn ñảm bảo sự an toàn, bởi vì sự tính toán ñều là không thể trong cả hai trường hợp sau:

• Không thể tìm ra ñược message gốc khi mà biết ñược message digest.

• Không thể có hai message gốc khác nhau mà lại có cùng message digest. Mỗi thuật toán SHA trên ñều tiến hành qua hai quá trình, quá trình thứ nhất là tiền xử lý (Preprocessing) và quá trình thứ hai là quá trình tính hash (Hash Computation). Quá trình tiền xử lý ban ñầu sẽ chuyển message thành một khối m bit và ñồng thời thiết lập các giá trị sẽ ñược sử dụng trong quá trình tính hash. Quá trình tính hash sẽ tạo ra một sự sắp xếp các message, lặp ñi lặp lại quá trình tạo ra một chuỗi các hash code, và giá trị cuối cùng sẽ ñược dùng ñể tạo message digest.

Trong bốn thuật toán về SHA nói trên, các thuật toán khác nhau về kích cỡ của khối dữ liệu ñầu vào, về khối dữ liệu ñầu rạ Bảng 3.1 sau ñây mô tả chi tiết về các thuật toán SHA nói trên:

3.1.1.2.Khái niệm bảng băm phân tán

Như vậy, chúng ta có thể hình dung về bảng băm là cấu trúc dữ liệu sử dụng hàm băm nhằm ánh xạ các khóa (Keys) với các giá trị băm (Hash Values) ñể xác ñịnh nơi lưu trữ tài nguyên. Bảng băm cho phép truy cập tới các khóa một cách nhanh chóng thông qua thuật toán tìm kiếm.

Bảng băm phân tán (Distributed Hash Table) tức là bảng băm ñược phân tán trên tất cả các Node tham gia trong mạng. Một tên ñược sử dụng ñể nhận dạng một Nodẹ Bảng băm phân tán cung cấp một dịch vụ tìm kiếm giống như một bảng băm (gồm tên và khóa) ñược cất giữ tại DHT và bất kỳ Node tham gia nào cũng có thể khôi phục hiệu quả khóa có liên hệ với tên ñã chọ Chịu trách nhiệm về việc bảo trì sự ánh xạ từ tên ñến khóa ñược phân cho các Node, như vậy một sự thay ñổi trong tập hợp những người tham gia mạng sẽ gây ra sự tan rã là nhỏ nhất. ðiều này cho phép DHT với quy mô số Node rất lớn có thể xử lý các Node khi ñi vào hoặc ra khỏi mạng.

3.1.1.3.Mô hình bảng băm phân tán

Trong mạng, các máy ñược gọi là các Node và tài nguyên ñược gọi là các ñối tượng. Một tên ñược sử dụng ñể nhận dạng một Node và nói chung mỗi Node chỉ có một tên trong một không gian tên. Một tên tiêu biểu cho một Node trong Internet chính là ñịa chỉ IP của nó. Mỗi Node sẽ ñược tham chiếu ñến một số nhận dạng duy nhất trong một không gian nhận dạng. Trong mạng ngang hàng thì số nhận dạng của Node có ñược từ việc băm tên của Node (chính là ñịa chỉ IP của Node): P = hash(IP). Một khoá là nhận dạng duy nhất của tài nguyên và có thể có ñược từ việc băm tên của tài nguyên giống như K = hash(V). Trong kỹ thuật DHT của mạng ngang hàng, các tài nguyên có liên hệ với các khoá (tạo ra bằng cách băm tên tài nguyên), mỗi Node trong hệ thống sẽ xử lý một phần không gian băm và chịu trách nhiệm cất giữ một phạm vi nhất ñịnh của khoá. Chức năng DHT cho phép các Node lưu vào và lấy ra ñược các tài nguyên dựa trên khoá của chúng, và nó tỏ ra rất hữu ích cho những hệ thống phân tán lớn. Hình 3.1 thể hiện mô hình bảng băm phân tán.

Hình 3.1. Bng băm phân tán.

Theo mô hình này thì bảng băm phân tán chứa các Key và Datạ Key ở ñây chính là thông tin về tài nguyên ñược chia sẻ trên mạng ngang hàng còn Data là thông tin về các Node ñang chia sẻ tài nguyên ñó. Khi một Node chia sẻ một tài nguyên nào ñó thì ñầu tiên hàm băm sẽ thực hiện băm ñịa chỉ IP của Node ta ñược Data và băm tên của tài nguyên ñược chia sẻ ñể ñược Keỵ Sau ñó, Key và Data sẽ ñược lưu trữ trong bảng băm phân tán thể hiện bằng thủ tục: Insert(Key,Data). Khi một Node tìm kiếm tài nguyên trên mạng thì tên tài nguyên cần tìm kiếm cũng ñược băm ra ñể ñược Keỵ Sau ñó Key sẽ ñược tìm kiếm trên bảng băm phân tán thể hiện bằng hàm: Lookup(Key). Bảng băm phân tán sẽ trả kết quả cho Node ñang tìm kiếm. Kết quả tìm kiếm ở ñây chứa thông tin về ñịa chỉ IP của những Node ñang nắm giữ tài nguyên cần tìm kiếm. Từ ñó, Node tìm kiếm có thể liên kết trực tiếp tới Node nguồn ñể lấy tài nguyên.

Bảng băm phân tán hỗ trợ nhiều loại giao thức như: Chord, CAN, Kademlia, Pastry, Tapestry, P_Grid, Kelips. Bài luận này sẽ tập trung nghiên cứu về Chord.

Một phần của tài liệu Nghiên cứu và đánh giá hiệu năng của giao thức chord trên mạng ngang hàng (Trang 43)