Chương 1. Mạng ngang hàng Mạng ngang hàng được định nghĩa như sau: một cấu trúc mạng phân tán, nếu như các thành phần tham gia chia sẻ tài nguyên của chúng (như khả năng tính toán của vi xử lý, dung lượng lưu trữ, đường truyền…). Các tài nguyên được chia sẻ này dùng để cung cấp các dịch vụ và nội dung. Chúng được truy cập một các trực tiếp bởi các nút khác, không thông qua các nút trung gian.
Các thành phần tham gia trong mạng vừa đóng vai trò cung cấp tài nguyên và yêu cầu tài nguyên.[6] Ta có thể phân biệt mô hình mạng ngang hàng với mô hình khách chủ thông qua vai trò của các thành phần tham gia trong mạng. Mỗi thành phần trong mạng ngang hàng có thể được gọi là Servent được tạo nên từ hai phần: Serv trong từ server (máy chủ) và ent trong từ client (máy khách), nhằm thể hiện khả năng của một nút trong mạng ngang hàng có thể vừa đóng cả hai vai trò máy chủ và máy khách trong cùng một thời điểm. Điều này hoàn toàn khác biệt với môi hình khách chủ khi nút tham gia chỉ có thể đóng một trong hai vai trò, hoặc máy khách, hoặc máy chủ tại một thời điểm. Hoạt động của bất cứ hệ thống mạng ngang hàng nào cũng phụ thuộc vào mạng bao gồm các nút và kết nối giữa chúng.
Mạng này được tạo ở tầng trên và độc lập với mạng vật lý phía dưới (thường là mạng IP), nên được gọi là “mạng phủ”. Mô hình, cấu trúc, mức độ tập trung của mạng phủ, và cách thức định tuyến, định vị trong mạng ảnh hưởng lớn đến hoạt động của hệ thống, do chúng sẽ quyết định tới khả năng tự bảo trì, tự ổn định mạng, chống lỗi, hiệu năng, khả năng mở rộng và mức độ bảo mật. Mạng phủ có thể phân biệt dựa vào mức độ phân tán và cấu trúc [1] 1. Mức độ phân tán Mặc dù thiết kế mong muốn của mạng phủ là hoàn toàn phân tán, tuy nhiên trong thực tế có thể không đúng như vậy.
Dưới đây liệt kê các mô hình dựa trên mức độ phân tán của chúng Mô hình phân tán hoàn toàn: Tất cả các nút trong mạng thực hiện các vai trò như nhau. Vừa đóng vai trò là máy chủ, vừa là máy khách. Do đó không cần phải có bất kỳ thành phần nào đóng vai trò là trung tâm điều phối. LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 4 Hình 1: Mạng ngang hàng phân tán hoàn toàn Mô hình phân tán một phần: Về cơ bản mô hình này tương tự như mô hình phân tán hoàn toàn.
Tuy nhiên có một số nút đóng vai trò quan trong hơn các nút khác, trở thành các điểm điều phối cho một số các nút khác. Các nút này được gọi là siêu nút (supernode) và chúng có thể đảm nhận các vai trò khác nhau tùy thuộc vào từng thiết kế. Hình 2: Mạng ngang hàng phân tán một phần Có một điểm quan trọng cần lưu ý là hệ thống sẽ không lệ thuộc vào một nút nào, dù nút đó có là supernode, do các nút này được gán động và nếu có lỗi sẽ được thay thế bằng nút khác. LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 5 Mô hình phân tán lai: Trong những hệ thống này, tồn tại một máy chủ trung tâm đóng vai trò duy trì thông tin về các nút và tài nguyên trên các nút.
Hình 3: Mạng ngang hàng lai Mặc dù việc trao đổi tài nguyên có thể thực hiện trực tiếp giữa các nút, nhưng máy chủ trung tâm sẽ đóng vai trò tổng hợp và tìm kiếm tài nguyên trên nút. Về cơ bản mô hình này sẽ xuất hiện single point of failure chính là máy chủ trung tâm. Mô hình này sẽ khó mở rộng, và tạo các nguy hiểm tiềm tàng cho hệ thống khi máy chủ trung tâm có sự cố hoặc bị tấn công. Cấu trúc mạng Cấu trúc ở đây mang nghĩa xác định rõ việc hình thành mạng phủ, cũng như việc nút và các tài nguyên được đưa vào mạng có theo một quy luật nhất định nào đó không.
Nhờ đó ta phân loại ra như sau Không có cấu trúc: Vị trí của nội dung hoàn toàn không liên quan tới mô hình của mạng phủ. Trong mạng không có cấu trúc nội dung cần phải được định vị. Phương thức tìm kiếm rất đa dạng từ việc sử dụng các phương pháp bruteforce, đẩy truy vấn ra tất cả các nút cho tới khi có được kết quả, cho đến sử dụng các thuật toán phức tạp và tiết kiệm tài nguyên hơn truy vấn ngẫu nhiên (random walks) hay dùng bảng đinh tuyến. LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 6 Phương pháp tìm kiếm có liên hệ mật thiết và tác động sâu sắc tới tính ổn định, khả năng mở rộng và độ tin cậy của mạng.
Mạng không cấu trúc thương được sử dụng trong môi trường mà các nút trong mạng luôn thay đổi. Có cấu trúc: Mạng không cấu trúc gặp nhiều khó khăn khi mở rộng, để giải quyết vấn đề này mạng có cấu trúc được đưa ra. Trong mạng có cấu trúc, mô hình của mạng phủ được kiểm soát chặt chẽ, các tài nguyên trong mạng được đặt ở các vị trí xác định. Hệ thống đảm nhận trách nhiệm ánh xạ giữa tài nguyên và vị trí của nút chứa tài nguyên đó, dưới dạng bảng định tuyến phân tán.
Khi đó truy vấn có thể tới được nút chứa tài nguyên một cách hiệu quả. Mạng có cấu trúc cung cấp khả năng mở rộng cho việc tìm kiếm chính xác truy vấn (truy vấn với định danh chính xác). Nhược điểm của mạng có cấu trúc là việc duy trì mạng sẽ gặp khó khăn khi có quá nhiều nút ra vào mạng. Mạng ngang hàng có cấu trúc Mạng không cấu trúc với sự phân bố tự do của nút và tài nguyên sẽ tồn tại nhược điểm về phương thức tìm kiếm gây tốn kém tài nguyên, đồng thời không đảm bảo sẽ luôn tìm được kết quả cho mỗi truy vấn.
Vấn đề này càng trở nên khó giải quyết khi số lượng nút trong mạng tăng. Lý do đó khiến mạng không cấu trúc không được áp dụng trong các hệ thống yêu cầu khả năng mở rộng cao. Để khắc phục nhược điểm này ta sử dụng mạng có cấu trúc với kĩ thuật bảng băm phân tán (DHT). [9] Bảng băm phân tán là một hệ thống phân tán cung cấp chức năng tìm kiếm tương tự như bảng băm thông thường.
Một cặp khóa và giá trị được lưu trong DHT và bất cứ nút nào tham gia vào hệ thống cũng có thể lấy được giá trị ứng với một khóa xác định. Việc duy trì bảng ánh xạ giữa khóa và các giá trị được lưu phân tán trên các nút, do đó việc thay đổi của một số nút tham gia vào hệ thống sẽ chỉ ảnh hưởng đến một số nhỏ các khóa liên quan. Điều này giúp cho DHT có thể dễ dàng mở rộng với số lượng lớn nút tham gia, và cung cấp khả năng duy trì hệ thống khi có nút tham gia, rời khỏi mạng, hay bị lỗi. LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 7 Hình 4: Bảng băm phân tán – DHT 1.
Đặc điểm của DHT Các đặc điểm của DHT có thể tóm tắt như sau: Phân tán: DHT là tập hợp các nút mà không cần bất kì một máy trung tâm nào. Chống lỗi: hệ thống hoạt động được trong trường hợp các nút liên tục ra, vào, hoặc bị lỗi Khả năng mở rộng: hệ thống hoạt động ổn định khi có số lượng lớn các nút tham gia. Để đạt được các đặc điểm mô tả ở trên kỹ thuật được sử dụng chủ yếu là mỗi nút phải có liên hệ, trao đổi với một số nút khác có trong mạng – thông thường là O(log n) với mạng có n nút tham gia. Do đó chỉ cần một số ít điều chỉnh khi có sự thay đổi về các nút tham gia mạng.
Ngoài ra một hệ thống DHT cũng như bất kỳ hệ thống phân tán khác còn cần phải quan tâm đến các vấn đề như chống tấn công từ bên trong hay ngoài hệ thống, cân bằng tải, xác thực dữ liệu và hiệu năng của hệ thống 1. Cấu trúc hệ thống Cấu trúc của hệ thống DHT có thể gồm nhiều thành phần chính: Phần quan trọng nhất là không gian khóa ảo, ví dụ như chuỗi có độ dài 160 bit. Cách thức phân vùng của không gian khóa chia không gian khóa cho từng nút trong hệ thống. Một mạng phủ kết nối các nút với nhau, giúp các nút này tìm được nút đang giữ thông tin về một khóa trong không gian khóa.
Với các thành phần như trên DHT có thể sử dụng phương thức sau để lưu trữ và lấy dữ liệu. Giả sử có không gian khóa gồm các khóa có độ dài 160 bit. Để lưu một filie với tên file và dữ liệu của nó trong DHT, thuật toán SHA-1 được sử dụng để tạo mã băm của tên file – là khóa k có độ dài 160 bit. Tiếp đó một thông LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 8 báo put(k,data) được gửi đến các nút trong mạng DHT.
Thông điệp này được chuyển tiếp qua các nút qua mạng phủ cho đến khi tới được nút giữ trách nhiệm lưu giữ khóa k được quy định bởi cách phân bổ không gian khóa. Nút đó sẽ thực hiện lưu giữ khóa và dữ liệu. Các nút khác có thể lấy thông tin của file bằng cách thực hiện hàm băm trên tên file để lấy được khóa k, sau đó truy vấn bất kỳ nút nào trong mạng DHT để tìm kiếm dữ liệu ứng với khóa k bằng thông điệp get(k). Thông điệp này tương tự được truyền trên mạng phủ thông qua các nút cho đến khi tới nút lưu giữ thông tin về khóa k, nút này sẽ trả lại thông tin về dữ liệu ứng với khóa.
Cách thức phân bổ không gian khóa và các thành phần của mạng phủ của một hệ thống DHT cơ bản sẽ được mô tả như ở dưới Phân bổ không gian khóa Phần lớn các hệ thống DHT sử dụng các phương pháp consistent hashing để ánh xạ khóa vào các nút. Kĩ thuật này cung cấp một hàm δ(k1,k2) để tính khoảng cách giữa hai khóa k1 và k2. Khoảng cách này không liên quan gì đến khoảng cách vật lý hay độ trễ của mạng. Mỗi nút được gán cho một khóa định danh ID.
Một nút với ID là ix sẽ có trách nhiệm lưu trữ với tất cả các khóa km nếu như ix là định danh nút gần nhất với các khóa đó, tính toán bằng hàm δ(k1,k2).