Bộ lƣu trữ Windows Azure

Một phần của tài liệu (LUẬN văn THẠC sĩ) GIẢI PHÁP THỰC tế của điện TOÁN đám mây và ỨNG DỤNG TRONG GIẢNG dạy đại học (Trang 39)

2.2.1. Giới thiệu bộ lƣu trữ Windows Azure

B ộ lưu trữ Windows Azure cho phép các lập trình viên lưu dữ u c a h trên liệ ủ ọ

đám mây. Ứng d ng có th truy xu t d u t bụ ể ấ ữ liệ ừ ất kì nơi đâu, tạ ấi b t kì thời điểm

nào, lưu trữ lượng d li u tùy ý trong kho ng th i gian bữ ệ ả ờ ất kì và nó đảm b o r ng ả ằ

d ữliệu được lưu trữ ề b n v ng và không b ữ ị thất lạc. Bộ lưu trữ Windows Azure cung

c p mấ ột bộtrừu tượng hóa d u phong phú: ữliệ

- Windows Azure Blob - cung cấp lưu trữ cho các m u d u l n. ẫ ữliệ ớ

- Windows Azure Table - cung c p b ấ ộ lưu trữ có cấu trúc để lưu trữ tình trạng s d ng. ử ụ

2.2.2. Windows Azure Blob

2.2.2.1. Giới thiệu

Blob là đối tượng d li u nh phân lữ ệ ị ớn được dùng để ch a video, audio, email, ứ

Blob cho phép ng dứ ụng lưu trữ, truy xu t d ấ ữ liệu có kích thước lớn, lên đến

200GB. Để ử ụ s d ng blob, m t l p trình viên ph i t o m t ho c nhi u container ộ ậ ả ạ ộ ặ ề

trong tài khoản lưu trữ. Mỗi container có thể ch a mứ ột hoặc nhi u blob. ề

Hình 2.10: Mô hình ví d d u Blob tài khoụ ữliệ ản lưu trữ [8]

T t c truy xuấ ả ất đến b ộ lưu trữ Windows Azure đều được th c hi n thông qua ự ệ

tài khoản lưu trữ. M t tài kho n có th có nhi u container. ộ ả ể ề

Blob Container - M t container ch a nhi u blob. ộ ứ ề

M t container có th có metadata k t h p v i chúng. Metadata d ng cộ ể ế ợ ớ ở ạ ặp <tên, giá trị> và chúng có kích thướ ối đa 8KB vớc t i m i container. Container ch ỗ ỉ

chứa các blob và không th ể chứa các thùng ch a khác bên trong. vì th nó không ứ ế

thể ạ t o ra h ệ thống phân c p các blob. Tuy nhiên, tên blob có th ch a kí t "/", vì ấ ể ứ ự

thế ộ m t lập trình viên có th gi l p h ph n c p cho blob khi có nhu c u. ể ả ậ ệ ầ ấ ầ

Blob: Blob được lưu trữ trong container. Kích thước m i blob có th ỗ ể lên đến 200GB. M t blob có m t tên duy nh t trong m t container. Blob có th có metadata ộ ộ ấ ộ ể

k t h p v i chúng, c p <tên, giá trế ợ ớ ặ ị>, và chúng có kích thướ ối đa 8KB vớc t i mỗi blob.

Đường d n URI cho mẫ ột blob được cấu trúc như sau:

http://<account>.blob.core.windows.net/<container>/<blobname> Blob có hai d ng: ạ

Block blob: m i blob lo i này có th ỗ ạ ể chứa đến 200GB d ữ liệu. Để thực hi n ệ

chuyển đổi hi u qu , mệ ả ột block blob được chia nh vào các block. N u m t th t bỏ ế ộ ấ ại

x y ra, vi c truy n l i ti p t c v i kh i g n nhả ệ ề ạ ế ụ ớ ố ầ ất hơn là gử ại l i toàn b blob. M t khi ộ ộ

t t c các block c a mấ ả ủ ột blob đã được t i lên, toàn b blob có th ả ộ ể được commit

đồng th i. ờ (adsbygoogle = window.adsbygoogle || []).push({});

Page blob: Một page blob được chia vào các page có kích thước 512-byte, và

ứng d ng t ụ ự do đọc và ghi các page riêng l m t cách ng u nhiên trong blob. ẻ ộ ẫ

M t khía c nh quan tr ng c a blob là vai trò c a nó trong vi c h XDrive. ộ ạ ọ ủ ủ ệ ỗtrợ

Để ểu đượ hi c vai trò quan trọng đó là gì, chúng ta thấy rõ r ng các th hi n Web ằ ể ệ

role và Worker role đượ ực t do truy xu t h th ng t p tin c c b c a máy o. Theo ấ ệ ố ậ ụ ộ ủ ả

mặc định, lưu trữ này không liên t c: Khi th hi n b t t, máy ụ ể ệ ị ắ ảo và lưu trữ ụ c c b ộ

c a nó s bi n m t. G n m t XDrive vào th hi n. Khi ghi d u vào XDrive thì ủ ẽ ế ấ ắ ộ ể ệ ữ liệ

d ữliệu được ghi ngay vào blob bên dưới. Khi th hi n không hoể ệ ạt động, d u này ữliệ

đã được lưu trữ liên t c trên page blob, sụ ẵn sàng để ắ g n tr l i. ở ạ

2.2.2.2. Giao tiếp REST với Blob

T t c các giao tiấ ả ếp đến Windows Azure Blob được th c hi n thông qua giao ự ệ

tiếp HTTP REST PUT/GET/DELETE.

Các lệnh HTTP/REST được hỗ trợ đểthực thi các thao tác blob bao gồm : - PUT Blob - Thêm m t blob m i hoộ ớ ặc ghi đè blob đã tồ ạn t i.

- DELETE Blob - Xóa một blob đã tồn t ại.

- Copy Blob - Sao chép m t blob t blob nguộ ừ ồn đến blob đích trong

cùng tài khoản lưu trữ. Nó s sao chép toàn b blob, bao g m metadata, property ẽ ộ ồ

và blocklist. có th s d ng Copy Blob cùng v i Delete Ta ể ử ụ ớ Blob để đổ i tên một blob hoặc để di chuyển m t blob gi a các container, ho c t o b n sao d phòng ộ ữ ặ ạ ả ự

cho blob hiện có.

- Get Block List - Lấy danh sách các block đã được tải lên. Có hai lo i danh sách block: ạ

Danh sách block đã commit Đây là danh sách block đã đượ- c commit thành

công qua PutBlockList vào một blob.

Danh sách block chưa commit Đây là danh sách các block đã đượ ả- c t i lên cho m t blob nhộ ững chưa được commit vào blob.

Ta có th t i mể ả ột blob có kích thước lên đến 64MB c h s d ng m t request ỉ ử ụ ộ

PUT blob. Để ải lên các blob có kích thước đế t n 200GB, cta n ph i ghép các block ầ ả

lại với nhau.

2.2.2.3. Với Blob là một danh sách các block

M t trong nh ng chiộ ữ ến lược chính c a Windows Azure Blob là cho phép tủ ải

lên các blob có kích thước lên đến nhiều GB. Điều này được th c hi n b i ự ệ ở

Windows Azure Blob qua những bước sau:

C t blob c n t i thành nhi u block liên ti p nhau. Vd: m t phim 10GB có th ắ ầ ả ề ế ộ ể (adsbygoogle = window.adsbygoogle || []).push({});

c t thành 2500 kh i, m i khắ ố ỗ ối có kích thước 4MB, khối đầu tiên đại di n cho byte ệ

thứ 1 đến 4194304, khối thứ 2 đại diện cho byte 4194305 đến 8388608.

Đặt m i block m t tên/ID duy nh t. ID duy nhỗ ộ ấ ất này được gi i h n b i tên ớ ạ ở

blob đượ ảc t i lên. Ví dụ, block đầu tiên được g i là "Block 0001", block th hai ọ ứ

Đặt mỗi block vào đám mây vớ ệnh PUT. Điều này đượi l c th c hi n v i m t ự ệ ớ ộ

l nh PUT ch nh URL trên v i truy v n xáệ ỉ đị ở ớ ấ c định rằng đây là lệnh PUT block cùng với ID c a block. ủ

Sau khi t t c ấ ả các block đã được lưu trữ trong b ộ lưu trữ Windows Azure,

chúng ta commit danh sách các block đã tải lên vào blob mà chúng thu c vộ ề. Điều

này được th c hi n v i mự ệ ớ ộ ệt l nh PUT ch nh URL trên v i truy vỉ đị ở ớ ấn xác định

rằng đây là lệnh blocklist. Sau đó, header HTTP chứa danh sách các block được

commit cho blob này. Khi thao tác này th c hi n thành công, danh sách các block, ự ệ

theo th t ứ ự mà chúng được li t kê, bây gi i di n cho phiên b n có th c cệ ờ đạ ệ ả ể đọ ủa

blob. Blob sau đó có thể được đọc b ng cách s d ng l nh GET blob. ằ ử ụ ệ

Hình 2.11: Khái niệm lưu trữBlob Block [8]

Như mô tảtrước đó, blob có thể được truy xu t qua PUT và GET b ng cách s ấ ằ ử

d ng URL sau:. ụ

http://<account>.blob.core.windows.net/<container>/<blobname>. Khi s d ng m t lử ụ ộ ệnh PUT đơn, block có kích thước lên đến 64MB có th ể

PUT t t c ấ ả các block, và sau đó PUT blocklist để ợ h p thành phiên b n có th ả ể đọc

được c a blob này. ủ

Mỗi block được xác định bởi Block ID và nó được giới h n b i tên blob. Vì ạ ở

thế, nh ng blob khác nhau có th có các block v i cùng ID. M i block có kích ữ ể ớ ỗ

thước lên đến 4MB, và các block trong cùng blob có th ể có kích thước khác nhau.

Windows Azure Blob cung c p các thao tác cấ ấp block như sau:

PUT block - t i m t block vào m t blob. Chú ý mả ộ ộ ột block đượ ảc t i lên thành công v i thao tác PUT block không tr thành m t ph n c a blob ch khi nào nó ớ ở ộ ầ ủ ỉ được commit v i thao tác PUT blocklist. ớ

PUT blocklist - commit m t blob bộ ằng cách xác định danh sách các ID block

tạo nên blob. Các block được xác định trong hoạt động này phải đượ ảc t i lên thành

công b ng cách s d ng l i g i PUT block. Th t các block trong thao tác PUT ằ ử ụ ờ ọ ứ ự

blocklist s h p thành phiẽ ợ ên bản có th ể đọc của blob.

GET blocklist - lấy danh sách block đã được commit trước đó cho blob bằng

thao tác PUT blocklist. Danh sách block được tr ả ra định rõ ID và kích thước c a ủ (adsbygoogle = window.adsbygoogle || []).push({});

m i block. Chỗ ức năng này có thể được s dử ụng để ấ l y các danh sách block chưa được commit.

2.2.2.4. Windows Azure Table

2.2.2.4.1. Gii thiu

Windows Azure Table là b ộ lưu trữ có cấu trúc được cung c p b i Windows ấ ở

Azure Platform. Nó h các Table có kh ỗ trợ ả năng mở ộ r ng c c lự ớn trên đám mây.

Nó có th ểchứa hàng t entity và terabyte d u. H ỉ ữliệ ệthống s t ng m r ng mẽ ự độ ở ộ ột cách hi u qu n hàng ngàn máy ch . M t s ệ ả đế ủ ộ ố điểm n i b t c a Windows Azure ổ ậ ủ

Table:trợ LINQ, ADO.NET Data Service và REST. T p h p các ki u d li u phong ậ ợ ể ữ ệ

H ỗtrợ lượng table và entity không gi i h n và không gi i h n v ớ ạ ớ ạ ề kích thước table.

Hình 2.12: Windows Azure Table [8]

Storage Account (Tài khoản lƣu trữ) - Ứng d ng ph i s d ng mụ ả ử ụ ột tài kho n h p l truy xuả ợ ệ để ất bộ lưu trữ Windows Azure.

Table (B ng) - chứa m t b các entity. Mộ ộ ột ứng d ng có th t o ra nhi u table ụ ể ạ ề

chỉ ớ v i m t tài khoộ ản lưu trữ.

Entity (Th c th ) - Entity (một entity tương tự như một dòng) là m u d u ẫ ữliệ

cơ bản được lưu trữ trong m t table. M t entity ch a m t t p các property. Mộ ộ ứ ộ ậ ỗi

table có 2 property tên là "PartitionKey" và "RowKey" t o ra khóa duy nh t cho ạ ấ

m i entity. ỗ

Property (Thuc tính) - Đại di n cho m t giá tr duy nh t trong entity. Tên ệ ộ ị ấ

property phân biệt hoa, thường. Một tập h p phong phú các ki u d ợ ể ữliệu được hỗ trợ

cho giá trị property.

PartitionKey - Đây là property khóa đầu tiên c a m i table. H ủ ỗ ệthống s d ng ử ụ

RowKey - là property khóa th hai cứ ủa table. Đây là ID duy nhấ ủt c a entity trong phân vùng mà nó thu c v . PartitionKey k t h p vộ ề ế ợ ới RowKey xác định duy nh t m t entity trong mấ ộ ột table.

Timestamp - là property có giá tr ị Datetime, được lưu giữ ở b i h ệ thống để

ghi lại thời điểm thay đổi entity l n cu ầ ối.

Partition - M t t p h p các entity trong m t table v i cùng giá tr khóa ộ ậ ợ ộ ớ ị

PartitionKey.

Sort Order (Th t s p x p) ứ ự ắ ế - Các entity trong table được s p x p theo ắ ế

PartitionKey vào sau đó là theo RowKey. Điều này có nghĩa là các truy vấn xác

định theo các khóa này s hi u qu ẽ ệ ả hơn và tấ ảt c các k t qu ế ả được tr v ả ề được s p ắ

x p theo ế PartitionKey và sau đó theo RowKey.

Sau đây là mộ ốt s thông tin chi ti t b sung cho Table, Entity và Property ế ổ (adsbygoogle = window.adsbygoogle || []).push({});

Table:

Tên table chỉ ch a các kí t và s . ứ ự ố

Tên table không bắt đầu v i m t kí t s . ớ ộ ự ố

Tên table phân biệt hoa - thường.

Tên table phải có độ dài t ừ 3 đến 63 kí t . ự

Property: tên property chỉ được chứa các kí t ựch cái và dữ ấu „_‟. Entity: m t entity có tộ ối đa 255 property bao gồm các property b t bu ắ ộc. PartitionKey, RowKey và Timestamp. T t c các property khác trong entity có ấ ả

tên được định nghĩa theo nhu c u ng d ng. ầ ứ ụ

PartitionKey và RowKey có ki u chu i và mể ỗ ỗi khóa kích thướ ối đa 1 KB. c t - Không có giản đồ ố đị c nh - Không có giản đồ được lưu trữ ở b i Windows

Azure Table, vì th t t c ế ấ ả các property được lưu trữ theo c p <tên, ki u d ặ ể ữ

liệu>. Điề này có nghĩa rằu ng 2 entity trong cùng m t table có th có property khác ộ ể

nhau. M t table có th có hai entity v i tên property giộ ể ớ ống nhau, nhưng có kiểu d ữ

liệu khác nhau cho giá tr property. Tuy nhiên, tên property ph i là duy nh t vị ả ấ ới mỗi entity.Kết hợ kích thướp c c a t t c các d u trong m t entity không th ủ ấ ả ữliệ ộ ể vượt quá

1MB. Kích thước này bao gồm kích thước của tên property cũng như kích thước

c a giá tr property ho c ki u c a chúng, bao g m c hai property khóa b t buủ ị ặ ể ủ ồ ả ắ ộc (PartitionKey và RowKey).

B ng 2.1: Các ki u d u Windows Azure Table h . ể ữliệ ỗtrợ

2.2.2.4.2. Phân vùng Table

Windows Azure Table cho phép các table m rở ộng đến hàng ngàn nút lưu trữ

b ng cách phân ph i các entity trong table. Khi phân phằ ố ối các entity, nó mong muốn

Các giá tr c a Patition Key. 13:

Hình 2. ị ủ

Hình mình h a mô t m t table ch a nhi u phiên b n c a nhi u tài li u khác ọ ả ộ ứ ề ả ủ ề ệ

nhau. Mỗi entity trong table tương ứng v i m t phiên b n c a m t tài li u c ớ ộ ả ủ ộ ệ ụ thể. Trong ví d này, PartitionKey c a table là tên tài li u và RowKey là tên phiên ụ ủ ệ

b n.Tên tài li u cùng v i tên phiên bả ệ ớ ản xác định duy nh t m t entity trong table. ấ ộ

Trong ví d này, t t c các phiên b n c a cùng m t tài li u t ụ ấ ả ả ủ ộ ệ ổ chức vào m t phân ộ

vùng riêng l . ẻ

2.2.2.4.3. Tác động c a vi c phân vùng

Bây gi chúng ta mô t mờ ả ục đích của các phân vùng và làm th ế nào để chọn một PartitionKey cho t t.ố

Việc phân vùng table ảnh hưởng đến kh ả năng mở ộ r ng c a table. H th ng ủ ệ ố

lưu trữ đạt được kh ả năng mở ộ r ng khá l n b ng cách phân b các phân vùng qua ớ ằ ố (adsbygoogle = window.adsbygoogle || []).push({});

nhiều nút lưu trữ. H ệthống quan sát mô th c s d ng các phân vùng và t ng cân ứ ử ụ ự độ

b ng các phân vùng này qua t t c ằ ấ ả các nút lưu trữ. Điều này cho phép h ệ thống và

ứng d ng c a ta m rụ ủ ở ộng để đáp ứng nhu cầu lưu thông của các table.

H ỗ trợ giao d ch nhóm cho table. Ngoài ra, vi c các entity trong phân vùng ị ệ

được lưu trữ cùng nhau giúp cho vi c truy xu t hi u qu ệ ấ ệ ả hơn.

2.2.2.4.4. Ch n m t PartitionKey

Việ ực l a ch n mọ ột PartitionKey đóng vai trò quan trọng để ộ m t ứng d ng có ụ

entity, ở đó tađạt được nh ng truy v n hiữ ấ ệu quả qua các entity trong cùng m t phân ộ

vùng và kh ả năng mở ộ r ng c a các table, càng nhi u phân vùng trong table thì càng ủ ề

d dàng cho Windows Azure Table lan truy n tễ ở ề ải qua nhiều máy ch . ủ

2.2.2.4.5. L p trình Table

2.2.2.5. Windows Azure Queue

2.2.2.5.1. Gii thiu

Windows Azure Queue cung c p mấ ột cơ chế phân phối message đáng tin cậy. Nó cung cấp cơ chế điều phối không đồng bộ, được s dử ụng để ế ố k t n i các thành ph n khác nhau cầ ủa ứng dụng đám mây. Windows Azure Queue có tính s n sàng ẵ

cao, b n và hi u qu ề ệ ả thực thi cao. L p trình ng ậ ữ nghĩa của nó đảm b o r ng mả ằ ột message có th ể được xửlí ít nhất một lần.

Windows Azure Queue cho phép tách các thành ph n khác nhau cầ ủa ứng d ng ụ

đám mây, cho phép ứng dụng đám mây được xây d ng m t cách d dàng v i nhi u ự ộ ễ ớ ề

Một phần của tài liệu (LUẬN văn THẠC sĩ) GIẢI PHÁP THỰC tế của điện TOÁN đám mây và ỨNG DỤNG TRONG GIẢNG dạy đại học (Trang 39)