Thứ sáu, 18/08/2017 | 00:00 GMT+7

Lưu trữ đối tượng so với Dịch vụ lưu trữ khối

Lưu trữ dữ liệu linh hoạt và có thể mở rộng là yêu cầu cơ bản đối với hầu hết các ứng dụng và dịch vụ đang được phát triển với các kỹ thuật và công cụ hiện đại. Cho dù lưu trữ lượng lớn hay nhỏ hình ảnh, video hoặc các mảng văn bản, các nhà phát triển ứng dụng cần có giải pháp để lưu trữ và truy xuất nội dung, log , bản backup do user tạo, v.v.

Với việc triển khai phức tạp ngày nay, containers và cơ sở hạ tầng tạm thời, những ngày chỉ cần lưu file vào đĩa trên một server đã không còn nữa. Các nhà cung cấp cloud đã phát triển các dịch vụ để đáp ứng nhu cầu lưu trữ của việc triển khai ứng dụng hiện đại và chúng hầu như phù hợp với hai loại: lưu trữ đối tượng và lưu trữ khối.

Ta hãy xem xét cả hai và thảo luận về những ưu điểm, nhược điểm chung và các trường hợp sử dụng cho từng loại.

Lưu trữ khối là gì

Các dịch vụ lưu trữ khối tương đối đơn giản và quen thuộc. Họ cung cấp một block storage device truyền thống - như ổ cứng - qua mạng. Các nhà cung cấp dịch vụ cloud thường có các sản phẩm có thể cung cấp block storage device ở bất kỳ kích thước nào và gắn nó vào máy ảo của bạn.

Từ đó, bạn sẽ coi nó như một chiếc đĩa bình thường. Bạn có thể định dạng nó bằng một hệ thống file và lưu trữ các file trên đó, kết hợp nhiều thiết bị thành một mảng RAID hoặc cấu hình database để ghi trực tiếp vào thiết bị khối, tránh hoàn toàn chi phí hệ thống file . Ngoài ra, các block storage device gắn mạng thường có một số lợi thế riêng so với ổ cứng thông thường:

  • Bạn có thể dễ dàng chụp nhanh trực tiếp toàn bộ thiết bị cho mục đích backup
  • Thiết bị lưu trữ khối có thể được thay đổi kích thước để đáp ứng nhu cầu ngày càng tăng
  • Bạn có thể dễ dàng tháo rời và di chuyển các block storage device giữa các máy

Đây là một cài đặt rất linh hoạt có thể hữu ích cho hầu hết mọi loại ứng dụng. Hãy tóm tắt một số ưu điểm và nhược điểm của công nghệ.

Một số ưu điểm của lưu trữ khối là:

  • Lưu trữ khối là một mô hình quen thuộc. Con người và phần mềm hiểu và hỗ trợ các file và hệ thống file gần như phổ biến
  • Các thiết bị khối được hỗ trợ tốt. Mọi ngôn ngữ lập trình đều có thể dễ dàng đọc và ghi file
  • Quyền đối với hệ thống file và kiểm soát truy cập đã quen thuộc và được hiểu rõ
  • Các block storage device cung cấp IO có độ trễ thấp, vì vậy chúng phù hợp để sử dụng cho database .

Nhược điểm của lưu trữ khối là:

  • Bộ nhớ được gắn với một server tại một thời điểm
  • Các khối và hệ thống file có metadata giới hạn về các đốm thông tin mà chúng đang lưu trữ (ngày tạo, chủ sở hữu, kích thước). Mọi thông tin bổ sung về những gì bạn đang lưu trữ sẽ phải được xử lý ở cấp ứng dụng và database , đây là mức độ phức tạp bổ sung mà nhà phát triển phải lo lắng
  • Bạn cần phải trả tiền cho tất cả không gian lưu trữ khối mà bạn đã phân bổ, ngay cả khi bạn không sử dụng nó
  • Bạn chỉ có thể truy cập bộ nhớ khối thông qua một server đang chạy
  • Lưu trữ khối cần nhiều công việc và cài đặt thực hành hơn so với lưu trữ đối tượng (lựa chọn hệ thống file , quyền, lập version , backup , v.v.)

Do đặc điểm IO nhanh, các dịch vụ lưu trữ khối rất phù hợp để lưu trữ dữ liệu trong database truyền thống. Ngoài ra, nhiều ứng dụng cũ yêu cầu lưu trữ hệ thống file thông thường cần sử dụng block storage device .

Nếu nhà cung cấp dịch vụ cloud của bạn không cung cấp dịch vụ lưu trữ khối, bạn có thể chạy dịch vụ của riêng mình bằng OpenStack Cinder , Ceph hoặc dịch vụ iSCSI tích hợp sẵn có trên nhiều thiết bị NAS.

Lưu trữ đối tượng là gì

Trong thế giới điện toán cloud hiện đại, lưu trữ đối tượng là lưu trữ và truy xuất các khối dữ liệu và metadata phi cấu trúc bằng cách sử dụng API HTTP. Thay vì chia nhỏ file thành các khối để lưu trữ trên đĩa bằng hệ thống file , ta xử lý toàn bộ các đối tượng được lưu trữ qua mạng. Các đối tượng này có thể là một file hình ảnh, log , file HTML hoặc bất kỳ khối byte độc lập nào. Chúng không có cấu trúc vì không có schemas hoặc định dạng cụ thể mà chúng cần tuân theo.

Lưu trữ đối tượng đã thành công vì nó đơn giản hóa trải nghiệm của nhà phát triển. Bởi vì API bao gồm các yêu cầu HTTP tiêu chuẩn, các thư viện nhanh chóng được phát triển cho hầu hết các ngôn ngữ lập trình. Việc lưu một khối dữ liệu trở nên dễ dàng như một yêu cầu HTTP PUT đến repository đối tượng. Truy xuất file và metadata là một yêu cầu GET bình thường. Hơn nữa, hầu hết các dịch vụ lưu trữ đối tượng cũng có thể phân phát công khai file cho user của bạn, loại bỏ nhu cầu duy trì web server để lưu trữ nội dung tĩnh.

Trên hết, các dịch vụ lưu trữ đối tượng chỉ tính phí cho không gian lưu trữ mà bạn sử dụng (một số còn tính phí theo yêu cầu HTTP và cho băng thông truyền). Đây là một lợi ích cho các nhà phát triển nhỏ, những người có thể nhận được dung lượng lưu trữ và lưu trữ nội dung đẳng cấp thế giới với chi phí phù hợp với quy mô sử dụng.

Tuy nhiên, lưu trữ đối tượng không phải là giải pháp phù hợp cho mọi tình huống. Ta hãy xem xét một bản tóm tắt những lợi ích và bất lợi.

Một số ưu điểm của lưu trữ đối tượng là:

  • Một API HTTP đơn giản, với các ứng dụng client có sẵn cho tất cả các hệ điều hành và ngôn ngữ lập trình chính
  • Cấu trúc chi phí nghĩa là bạn chỉ trả tiền cho những gì bạn sử dụng
  • Việc phân phát công khai nội dung tĩnh được tích hợp sẵn nghĩa là một server ít hơn để bạn tự điều hành
  • Một số object stores cung cấp tích hợp CDN tích hợp sẵn, giúp lưu trữ nội dung của bạn trên phạm vi global để download và tải trang nhanh hơn cho user của bạn
  • Lập version tùy chọn nghĩa là bạn có thể truy xuất version cũ của các đối tượng để khôi phục sau các lần overrides dữ liệu tình cờ
  • Các dịch vụ lưu trữ đối tượng có thể dễ dàng mở rộng quy mô từ nhu cầu khiêm tốn đến các trường hợp sử dụng thực sự cao mà nhà phát triển không cần phải chạy thêm tài nguyên hoặc kiến trúc lại để xử lý tải
  • Sử dụng dịch vụ lưu trữ đối tượng nghĩa là bạn không phải duy trì ổ cứng và mảng RAID, vì điều đó được xử lý bởi nhà cung cấp dịch vụ
  • Có thể lưu trữ các khối metadata cùng với blob dữ liệu có thể đơn giản hóa hơn nữa kiến trúc ứng dụng của bạn

Một số nhược điểm của lưu trữ đối tượng là:

  • Bạn không thể sử dụng các dịch vụ lưu trữ đối tượng để backup database truyền thống, do độ trễ cao của các dịch vụ đó
  • Lưu trữ đối tượng không cho phép bạn thay đổi chỉ một phần của khối dữ liệu, bạn phải đọc và ghi toàn bộ đối tượng cùng một lúc. Điều này có một số ý nghĩa về hiệu suất. Ví dụ: trên hệ thống file , bạn có thể dễ dàng nối thêm một dòng vào cuối file log . Trên hệ thống lưu trữ đối tượng, bạn cần truy xuất đối tượng, thêm dòng mới và ghi lại toàn bộ đối tượng. Điều này làm cho việc lưu trữ đối tượng ít lý tưởng hơn đối với dữ liệu thay đổi rất thường xuyên
  • Hệ điều hành không thể dễ dàng mount một repository đối tượng như một đĩa thông thường. Có một số ứng dụng client và bộ điều hợp để trợ giúp việc này, nhưng nói chung, việc sử dụng và duyệt một object stores không đơn giản như lướt qua các folder trong trình duyệt file

Do các thuộc tính này, lưu trữ đối tượng hữu ích cho việc lưu trữ nội dung tĩnh, lưu nội dung do user tạo như hình ảnh và phim, lưu trữ file backup và lưu trữ log chẳng hạn.

Có một số giải pháp lưu trữ đối tượng tự lưu trữ, mặc dù bạn sẽ từ bỏ một số lợi ích của giải pháp được lưu trữ (chẳng hạn như không phải lo lắng về ổ cứng và các vấn đề mở rộng). Bạn có thể thử Minio , một server lưu trữ đối tượng phổ biến được viết bằng ngôn ngữ Go, Ceph hoặc OpenStack Swift .

Kết luận

Lựa chọn giải pháp lưu trữ có thể là một quyết định phức tạp đối với các nhà phát triển. Trong bài này, ta đã thảo luận về những ưu điểm và nhược điểm của cả dịch vụ lưu trữ khối và đối tượng. Có khả năng là bất kỳ ứng dụng nào đủ phức tạp cần cả hai loại bộ nhớ để đáp ứng mọi nhu cầu của nó.


Tags:

Các tin liên quan