Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 16 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
16
Dung lượng
1,65 MB
Nội dung
BÁO CÁO CUỐI KỲ MÔN HỌC: HỆ PHÂN BỐ ĐỀ TÀI: ỨNG DỤNG WEB CHAT – PEER TO PEER GVHD: NGUYỄN THIÊN BẢO THỰC HIỆN: NHÓM SVTH: MSSV: VÕ ĐÌNH VĨNH CHƯƠNG 19133012 TƠN THẤT GIA BẢO 19133009 DƯƠNG THANH TUẤN19133004 NGUYỄN ĐỨC TỒN 19133058 TP Hồ Chí Minh, tháng 05 năm 2022 MỤC LỤC CHƯƠNG 1: TỔNG QUAN ĐỀ TÀI .3 CHƯƠNG 2: KHÁI NIỆM PEER TO PEER NETWORK .4 Khái niệm Mơ hình peer to peer Mạng khơng có cấu trúc Mạng có cấu trúc Mơ hình kết hợp Ứng dụng mạng ngang hàng Peer to peer .6 Cung cấp nội dung Mạng chia sẻ file CHƯƠNG 3: CÀI ĐẶT ỨNG DỤNG Tải framework GUN Tải extension Svelte cho VS Code Cài đặt chức 3.1 3.2 3.3 3.4 Cấu trúc ứng dụng Chức Đăng kí - Đăng nhập 10 Chức Chat 11 Xác thực người dùng 12 CHƯƠNG 4: DEMO ỨNG DỤNG 13 CHƯƠNG 1: TỔNG QUAN ĐỀ TÀI Tên đề tài: ỨNG DỤNG WEB CHAT – ứng dụng mạng ngang hàng PEER TO PEER Mơi trường lập trình: Visual Studio Code Ngơn ngữ lập trình: JavaScript Các framework sử dụng: - GUN.Js : Cơ sở liệu Đồ thị Phân tán – P2P Database : Cơ sở liệu không lưu máy chủ, lưu Peers (Node) - Svelte : JavaScript Front-end frameworks CHƯƠNG 2: KHÁI NIỆM PEER TO PEER NETWORK Khái niệm Mạng peer to peer (P2P) kiến trúc ứng dụng phân tán nhằm phân vùng nhiệm vụ khối lượng công việc peer Các peer thiết bị tham gia ứng dụng có đặc quyền Chúng tạo thành mạng lưới node ngang hàng Các peer tạo phần tài nguyên chúng, chẳng hạn processing power, lưu trữ đĩa băng thơng mạng, có sẵn cho participant khác mà không cần điều phối trung tâm server host ổn định Các peer vừa nhà cung cấp vừa người tiêu thụ tài nguyên Nó khác với mơ hình client-server truyền thống chỗ việc tiêu thụ cung cấp tài nguyên phân chia Trước hệ thống Peer to peer sử dụng nhiều lĩnh vực ứng dụng Kiến trúc phổ biến hệ thống chia sẻ file Napster, phát hành vào năm 1999 Khái niệm truyền cảm hứng cho cấu trúc triết lý nhiều lĩnh vực tương tác người Trong bối cảnh xã hội vậy, peer-to-peer as meme đề cập đến mạng xã hội bình đẳng xuất tồn xã hội, kích hoạt cơng nghệ Internet nói chung Mơ hình peer to peer Mạng peer to peer triển khai dạng mạng lớp phủ ảo cấu trúc liên kết mạng vật lý Trong node lớp phủ tạo thành tập hợp node mạng vật lý Dữ liệu trao đổi trực tiếp qua mạng TCP/IP bên dưới, lớp ứng dụng ngang hàng giao tiếp với trực tiếp, thông qua liên kết lớp phủ logic (mỗi liên kết tương ứng với đường dẫn qua mạng vật lý bên dưới) Lớp phủ sử dụng để index khám phá peer, đồng thời làm cho hệ thống Peer to peer độc lập với cấu trúc liên kết mạng vật lý Dựa cách node liên kết với mạng lớp phủ cách tài nguyên index định vị, phân loại mạng thành loại mạng khơng có cấu trúc mạng có cấu trúc (hoặc kết hợp hai mạng này) Mạng khơng có cấu trúc Mạng ngang hàng peer to peer khơng có cấu trúc khơng áp đặt cấu trúc cụ thể lên mạng lớp phủ theo thiết kế, mà tạo node hình thành kết nối ngẫu nhiên với (Gnutella, Gossip Kazaa ví dụ giao thức Peer to peer khơng có cấu trúc) Vì khơng có cấu trúc áp đặt toàn cầu nên mạng khơng có cấu trúc dễ xây dựng cho phép tối ưu hóa địa hóa cho vùng khác lớp phủ Ngoài ra, vai trị tất peer mạng nhau, mạng khơng có cấu trúc mạnh tốt đối mặt với tỷ lệ “churn” cao (khi số lượng lớn peer thường xuyên tham gia rời khỏi mạng) Tuy nhiên, hạn chế mạng phi cấu trúc phát sinh từ thiếu cấu trúc Đặc biệt, peer muốn tìm phần liệu mong muốn mạng, truy vấn tìm kiếm phải flood mạng để tìm nhiều peer chia sẻ liệu tốt Flooding gây lượng lớn lưu lượng báo hiệu mạng, sử dụng nhiều CPU không đảm bảo truy vấn tìm kiếm ln giải Hơn nữa, khơng có mối tương quan peer nội dung quản lý, khơng có đảm bảo flooding tìm thấy peer có liệu mong muốn Nội dung phổ biến có sẵn số peer peer tìm kiếm nội dung có khả tìm thấy nội dung tương tự Nhưng peer tìm kiếm liệu chia sẻ số peer khác, khả thành cơng cao Mạng có cấu trúc Trong mạng peer to peer có cấu trúc, lớp phủ tổ chức thành cấu trúc liên kết cụ thể giao thức đảm bảo node tìm kiếm file tài nguyên mạng cách hiệu quả, tài nguyên Loại mạng P2P có cấu trúc phổ biến triển khai distributed hash table (DHT), biến thể hash quán sử dụng để gán quyền sở hữu file cho peer cụ thể Điều cho phép peer tìm kiếm tài nguyên mạng hash table Nghĩa là, cặp (key, value) lưu trữ DHT node tham gia truy xuất value liên kết với key định Mơ hình kết hợp Các mơ hình kết hợp kết hợp mơ hình client-server mơ hình peer-to-peer Kiểu mơ hình kết hợp phổ biến server trung tâm giúp peer tìm thấy Spotify ví dụ mơ hình kết hợp Có nhiều mơ hình kết hợp, tất tạo cân chức tập trung cung cấp mạng server/client có cấu trúc Hiện tại, mơ hình kết hợp có hiệu suất tốt so với mạng khơng có cấu trúc túy Đó số chức định, chẳng hạn tìm kiếm, yêu cầu chức tập trung hưởng lợi từ kết hợp khơng tập trung node mạng khơng có cấu trúc cung cấp Ứng dụng mạng ngang hàng Peer to peer Cung cấp nội dung Trong mạng Peer to peer, client vừa cung cấp vừa sử dụng tài nguyên Không giống hệ thống client -server, khả phục vụ nội dung mạng peer to peer tăng lên nhiều user bắt đầu truy cập nội dung (đặc biệt với giao thức Bittorrent yêu cầu user chia sẻ, tham khảo nghiên cứu đo lường hiệu suất) Thuộc tính lợi lớn việc sử dụng mạng Peer to peer chi phí thiết lập thấp Mạng chia sẻ file Nhiều mạng chia sẻ file ngang hàng, chẳng hạn Gnutella, G2 mạng eDonkey phổ biến công nghệ peer to peer Mạng phân phối nội dung peer to peer Dịch vụ nội dung peer to peer, ví dụ: nhớ cache để cải thiện hiệu suất, chẳng hạn Correli Caches CHƯƠNG 3: CÀI ĐẶT ỨNG DỤNG Tải framework GUN lệnh terminal : npm install gun Tải extension Svelte cho VS Code Cài đặt chức 3.1 Cấu trúc ứng dụng 3.2 Chức Đăng kí - Đăng nhập import { user } from './user'; let username; let password; function login() { user.auth(username, password, ({ err }) => err && alert(err)); } function signup() { user.create(username, password, ({ err }) => { if (err) { alert(err); } else { login(); } }); } Username Password Login Sign Up 3.3 Chức Chat + Tự động cuộn chat (khi có tin nhắn mới): function autoScroll() { setTimeout(() => scrollBottom?.scrollIntoView({ behavior: 'auto' }), 50); unreadMessages = false; } function watchScroll(e) { canAutoScroll = (e.target.scrollTop || Infinity) > lastScrollTop; lastScrollTop = e.target.scrollTop; } + Tải liệu tin nhắn (qua mã xác thực E2E) // Get Messages db.get('chat') map(match) once(async (data, id) => { if (data) { // Key for end-to-end encryption const key = '#foo'; var message = { // transform the data who: await db.user(data).get('alias'), // a user might lie who they are! So let the user system detect whose data it is what: (await SEA.decrypt(data.what, key)) + '', // force decrypt as text when: GUN.state.is(data, 'what'), // get the internal timestamp for the what property }; if (message.what) { messages = [ messages.slice(-100), message].sort((a, b) => a.when - b.when); if (canAutoScroll) { autoScroll(); } else { unreadMessages = true; } } } }); }); + Gửi tin nhắn: function sendMessage() { const secret = await SEA.encrypt(newMessage, '#foo'); const message = user.get('all').set({ what: secret }); const index = new Date().toISOString(); db.get('chat').get(index).put(message); newMessage = ''; canAutoScroll = true; autoScroll(); } 3.4 Xác thực người dùng import GUN from 'gun'; import 'gun/sea'; import 'gun/axe'; import { writable } from 'svelte/store'; // Database export const db = GUN(); // Gun User export const user = db.user().recall({sessionStorage: true}); // Current User's username export const username = writable(''); user.get('alias').on(v => username.set(v)) db.on('auth', async(event) => { const alias = await user.get('alias'); // username string username.set(alias); console.log(`signed in as ${alias}`); }); CHƯƠNG 4: DEMO ỨNG DỤNG + Chạy ứng dụng : + Mở ứng dụng local: Đăng kí -> Đăng nhập + Test chức năng: + TEST P2P: Đăng nhập vào user khác -> thấy tin nhắn user khác ... truyền thống chỗ việc tiêu thụ cung cấp tài nguyên phân chia Trước hệ thống Peer to peer sử dụng nhiều lĩnh vực ứng dụng Kiến trúc phổ biến hệ thống chia sẻ file Napster, phát hành vào năm 1999... CHƯƠNG 2: KHÁI NIỆM PEER TO PEER NETWORK Khái niệm Mạng peer to peer (P2P) kiến trúc ứng dụng phân tán nhằm phân vùng nhiệm vụ khối lượng công việc peer Các peer thiết bị tham gia ứng dụng có đặc quyền... triết lý nhiều lĩnh vực tương tác người Trong bối cảnh xã hội vậy, peer-to-peer as meme đề cập đến mạng xã hội bình đẳng xuất tồn xã hội, kích hoạt cơng nghệ Internet nói chung Mơ hình peer to peer