Top 10 Thuật Toán System Design Các Bạn Nên Biết Và Thường Được Hỏi Trong Phỏng Vấn - Top 2 Distributed Hash Tables

Đến thời điểm hiện tại, cuối năm 2024, từ khoá Decentralization vẫn đang là một từ khoá hot, quang trọng. Từ việc bùng nổ , nở rộ của block chain, đến việc các data center của các tập đoàn lớn nước ngoài được đặt ở nhiều nơi, trong nước thì việc số hoá dữ liệu phát triển mạnh mẽ.

Trong bài viết này, chúng ta sẽ cùng nhau hiểu khái niệm cơ bản của Distributed Hash Tables, ưu điểm và nhược điểm của nó

I. Khái niệm

Distributed Hash Tables - DHT là một hệ thống phân tán phi tập trung cung cấp dịch vụ tra cứu, tựa tựa như hash table.

Hash table: là một bảng dữ liệu key - value. Value được lưu trữ và truy vấn thông qua key. Key được sử dụng để xác định nơi lưu trữ value.

Ví dụ

key :a, value:/data/2024/02/01/12/01/01/a.txt key :b, value:/data/2024/02/01/12/01/01/b.txt

Distributed Hash Tables: dữ liệu cũng dạng key - value, nhưng dữ liệu được lưu trữ phân tán trên nhiều node trong một network, khác với Hash table là chỉ lưu trữ trong 1 node.

trong Distributed Hash Tables, mỗi node chịu trách nhiệm lưu trữ một phần dữ liệu. Khi người dùng truy vấn hoặc lưu dữ liệu lên Distributed Hash Tables, người dùng sẽ đẩy dữ liệu lên network. Yêu cầu của người dùng sẽ được dẩy lên node tương ứng với khoá của dữ liệu. Node đó sẽ chịu trách nhiệm lưu trữ và truy vấn dữ liệu của người dùng.

Vậy nên, một Distributed Hash Tables cần có ít nhất 3 thành phần chính

  • Distributed application: Chịu trách nhiệm giao tiếp với người dùng qua 2 phương thức là push ( key, value) để người dùng đẩy dữ liệu lên network và get(key) để người dùng lấy dữ liệu thông qua key. App có thể được lưu trữ phân tán ở trên nhiều node.

  • Distributed hash table: hay còn gọi là DHash, chịu trách nhiệm lấy ra node đang lưu dữ liệu của key. Data có thể được lưu trữ trên nhiều node.

  • Lookup service: thành phần này Ở trên node, trả dữ liệu của key.

II. Distributed Hash Table được sử dụng ở đâu

là một hệ thống phân tán phi tập trung, Distributed Hash Table được sử dụng dưới nhiều mục đích khác nhau, gom nhóm lại thì đến thời điểm hiện tại, chúng ta có 4 nhóm chính

1. Peer-to-peer (P2P) networks

Ở đây, mình đề cập tới BitTorrent cho đơn giản hen

Ví dụ , mình muốn download file tên là abc.txt

chúng ta sẽ dùng Distributed application như BitTorrent

Distributed hash table:

  • key sẽ là hash (‘abc.txt’)

  • value là ip máy có chứa file ‘abc.txt’

Lookup service:

gọi đến máy có ip do Distributed hash table trả về và kèm theo một số lệnh xác thực để lấy file abc.txt

2. Distributed databases

Ngày nay, với dự phát triển mạnh mẽ của big data, iot, một máy khủng long cũng có thể chưa đủ đáp ứng tải và tài nguyên để lưu trữ dữ liệu.

3. Content delivery networks

Chúng ta tưởng tượng hệ s3 của amazone á, chắc chắn nó phải được lưu trên nhiều node rồi.

4. Event Notification

Giống firebase.

5. Distributed File Systems

Quản lý file trong hệ thống lưu trữ dữ liệu phân tán

Các yêu cầu của một lookup algorithm tốt

Autonomy và decentralization

Các node tự động phối hợp với nhau tạo lên hệ thống, không cần node trung tâm

Fault tolerance

Hệ thống đáng tin cậy, khi có một node trong hệ thống bị lỗi, thì hệ thống vẫn hoạt động bình thường

Scalability

Hệ thống phải hoạt động hiệu quả ngay cả khi có hàng ngàn, hàng triệu node.

Load balance

Các key cần phải phân bố đều giữa các node, tránh cho quá tải 1 node nào đó

Low maintenance overhead

Khi có 1 node mới tham gia vào hệ thống hoặc một node rời khỏi hệ thống, một vấn đề gặp phải là chúng ta sẽ tốn kha khá bandwidth để gửi thông báo tới các node còn lại rằng có node mới hoặc có node rời khỏi hệ thống. Nên, thay vì gửi thông báo tới toán bộ node trong network, chúng ta có thể chỉ gửi thông báo tới các neighbors thôi.

Điểm mạnh của Distributed Hash Table

Scalability

Distributed Hash Table có khả năng mở rộng cao vì chúng có thể lưu trữ và truy xuất lượng lớn dữ liệu mà không cần điều phối tập trung hoặc máy chủ để quản lý hệ thống. Distributed Hash Table phù hợp với các hệ thống phân tán quy mô lớn.

Efficiency

Distributed Hash Table cung cấp cách thức lưu trữ và truy vấn dữ liệu một cách hiệu quả, sử dụng khoá dữ liệu để xác định ví trị của dữ liệu trong hệ thống. Chính điều đó giúp cho Distributed Hash Table có thể xác định và truy vấn dữ liệu nhanh chóng mà không cần phải tìm kiếm trên toàn bộ node của hệ thống.

Fault tolerance

Distributed Hash Table đảm bảo toàn vẹn dữ liệu, có thể quản lý và cô lập node lỗi mà không cần server trung tâm quản lý. Dữ liệu được lưu trữ phân tán trên các node nên khi có node bị lỗi, node sẽ bị cô lập và dữ liệu sẽ được trả về cho người dùng từ các node còn lại trong hệ thống

Decentralization

Distributed Hash Table là hệ quản lý phi tập trung, không cần central authority (CA) hoặc server quản lý trung tâm, do đó hệ thống ít bị khai thác lỗ hổng bảo mật hơn khi bị tấn công. Ít chứ không phải là không có

Security

Distributed Hash Table cung cấp các cơ chế bảo mật để lưu trữ và truy vấn dữ liệu, khi dữ liệu được lưu phân tán trên nhiều node của hệ thống thay vì chỉ lưu trên một node, điều này giúp giảm thiểu rủi ro khi kẻ gian muốn thay đổi dữ liệu vì mục đích không tốt.

Điểm không mạnh của Distributed Hash Table

Complexity

Distributed Hash Table khá khoai khi triển khai và bảo trì, hệ thống cần một lượng lớn nodes để các chức năng hoạt động một cách trơn tru, hiệu quả. Do phải quản lý quá nhiều node, người quản lý sẽ gặp thách thức khi có sự cố xui xẻo xảy ra, ngoài ra người quản lý còn phải hiểu kỹ hệ thống của mình

Performance

Trong một số trường hợp xấu, Distributed Hash Table có hiệu năng lởm hơn so với các hệ distributed systems khác, đặc biệt lởm khi hệ thống đang gần quá tải (heavy load) hoặc khi hệ thống quá lớn, người quản trị config số lượng neighbors hoặc số hop nhiều.

Security

Bản thân Distributed Hash Table có trang bị một vài cách thức bảo mật dữ liệu để đảm bảo toàn vẹn dữ liệu của người dùng khi lưu trữ và truy vấn dữ liệu, nhưng về mặt thiết kế thì hệ thống có thể tồn tại các lỗi hổng về bảo mật hoặc bị tấn công kiến trúc hệ thống, ví dụ như tấn công từ chối dịch vụ (DDoS) hoặc tấn công mạo nhận - Sybil attack, là hình thức tấn công vào các mạng lưới ngang hàng được thực hiện bằng cách tạo nhiều thực thể ảo (tài khoản, node hoặc máy tính) để chiếm quyền kiểm soát mạng lưới.

Compatibility

Distributed Hash Table có thể không tương thích với toàn bộ kiểu dữ liệu của ngừoi dùng. Một số kiến trúc yêu cầu một cấu trúc hoặc định dạng đặc biệt để hoạt động

Limited functionality

Distributed Hash Table được thiết để để lưu trữ và lấy dữ liệu, và không hỗ trợ các hàm bổ trợ

III. Tham khảo

https://www.cs.princeton.edu/courses/archive/fall18/cos418/docs/L6-dhts.pdf

https://www.cs.cmu.edu/%7Edga/15-744/S07/lectures/16-dht.pdf

https://web.mit.edu/6.829/www/currentsemester/materials/chord.pdf

https://www.tutorialspoint.com/distributed-hash-tables-dhts

https://www.geeksforgeeks.org/distributed-hash-tables-with-kademlia/

https://medium.com/the-code-vault/data-structures-distributed-hash-table-febfd01fc0af

Cảm ơn các bạn đã theo dõi bài viết. Xin cảm ơn và hẹn gặp lại.

Comments