Đế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