Định nghĩa Theo Gartner: “Điện toán đám mây là một kiểu tính toán trong đó các năng lực CNTT có khả năng mở rộng rất lớn được cung cấp “dưới dạng dịch vụ” qua mạng Internet đến nhiều khá
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TINCHUYÊN NGÀNH KHOA HỌC MÁY TÍNH
TÊN ĐỀ TÀI TIỂU LUẬN
TÌM HIỂU WINDOWS AZURE
VÀ XÂY DỰNG ỨNG DỤNG THỬ NGHIỆM
Giảng viên hướng dẫn:
PGS.TS Nguyễn Phi Khứ Học viên thực hiện:
Võ Anh Tuấn – CH1301113
TP.HCM, 07/06/2014
LỜI MỞ ĐẦU
Trang 2mạng Internet Thuật ngữ “đám mây” ở đây là lối nói ẩn dụ chỉ mạng Internet (dựavào cách được bố trí của nó trong sơ đồ mạng máy tính) và như một liên tưởng về
độ phức tạp của các cơ sở hạ tầng chứa trong nó Ở mô hình điện toán này, mọi khảnăng liên quan đến công nghệ thông tin đều được cung cấp dưới dạng các "dịch vụ",
cho phép người sử dụng truy cập các dịch vụ công nghệ từ một nhà cung cấp nào đó
“trong đám mây” mà không cần phải có các kiến thức, kinh nghiệm về công nghệ
đó, cũng như không cần quan tâm đến các cơ sở hạ tầng phục vụ công nghệ đó
Với việc nghiên cứu điện toán đám mây, cụ thể là công nghệ Azure củaMicrosoft, bài tiểu luận này chủ yếu tập trung tìm hiểu những khái niệm cơ bản vềđiện toán đám mây nói chung, công nghệ Azure nói riêng, các vấn đề về WindowsAzure Platform như kiến trúc, thành phần, chức năng, lợi ích, các mô hình ứng dụngnhằm đưa ra một tầm nhìn tổng quan về Windows Azure Platform và ứng dụng vàophân tích, xây dựng thử nghiệm một hệ thống mạng xã hội ảo cho cựu sinh viên
Trang 31.1 Đặt vấn đề 1
1.2 Mục tiêu đề tài 2
1.3 Nội dung thực hiện 2
Chương 2 Tổng quan Windows Azure Platform 3
2.1 Tổng quan điện toán đám mây 3
2.1.1 Định nghĩa 3
2.1.2 Các giải pháp 3
2.1.3 Các tầng tạo nên đám mây 5
2.1.4 Lợi ích của điện toán đám mây 6
2.1.5 Xu hướng phát triển 6
2.2 Tổng quan Windows Azure Platform 6
2.2.1 Giới thiệu 6
2.2.2 Giới thiệu Windows Azure 7
2.2.3 Giới thiệu SQL Azure 8
2.2.4 Windows Azure Platform AppFabric 10
Chương 3 Giới thiệu về Windows Azure 12
3.1 Tổng quan Windows Azure 12
3.2 Các thành phần Windows Azure 12
3.2.1 Dịch vụ tính toán (Compute Service) 13
3.2.2 Dịch vụ lưu trữ (Storage Service) 14
3.2.3 Windows Azure Fabric 15
Chương 4 Giới thiệu bộ lưu trữ Windows Azure 18
4.1 Giới thiệu bộ lưu trữ Windows Azure 18
4.2 Windows Azure Blob 18
4.2.1 Giới thiệu 18
4.2.2 Giao tiếp REST với Blob 19
4.2.3 Với Blob là một danh sách các block 20
Trang 44.3.2 Phân vùng Table 24
4.3.3 Lập trình Table 25
4.4 Windows Azure Queue 27
4.4.1 Giới thiệu 27
4.4.2 Mô hình dữ liệu Queue: 28
4.4.3 Thực tiễn tốt nhất 29
Chương 5 Giới thiệu SQL Azure 31
5.1 Giới thiệu 31
5.2 Tổng quan kiến trúc 31
5.2.1 Mô hình Provisioning 31
5.2.2 Mô hình dữ liệu quan hệ 32
5.2.3 Kiến trúc truy xuất dữ liệu 32
5.2.4 Mô hình bảo mật 32
5.2.5 Triển khai 33
5.3 Ứng dụng của SQL Azure 33
Chương 6 Tổng quan Windows Azure Platform AppFabric 34
6.1 Giới thiệu 34
6.2 Giới thiệu AppFarbic Service Bus 34
6.2.1 Giới thiệu 34
6.2.2 Kiến trúc Service Bus 34
6.2.3 Message Buffer 40
6.3 Tổng quan Fabric Access Control 42
6.3.1 Giới thiệu 42
6.3.2 Xây dựng Web Services Trust Access Control 43
6.3.3 Access Control Management Service 48
Chương 7 Ứng dụng mạng xã hội ảo cho cựu sinh viên 50
7.1 Giới thiệu 50
Trang 57.3.2 Danh sách Use-case 53
7.4 Kiến trúc hệ thống 55
7.4.1 Theo góc nhìn thiết kế 55
7.4.2 Ở góc nhìn ứng dụng 56
7.4.3 Kiến trúc Application 57
7.5 Sơ đồ lớp 59
7.6 Thiết kế dữ liệu 65
7.7 Thiết kế giao diện 68
7.7.1 Trang chủ 69
7.7.2 Thông tin cá nhân 71
7.7.3 Bạn bè 71
7.7.4 Diễn đàn 74
7.7.5 Trang quản lí 75
7.8 Cấu hình và triển khai ứng dụng 75
Chương 8 Kết luận 81
8.1 Đánh giá 81
8.1.1 Về cơ sở lý thuyết 81
8.1.2 Về ứng dụng 81
8.2 Hướng phát triển 83
8.2.1 Về cơ sở lý thuyết 83
8.2.2 Về ứng dụng 83
Trang 6Hình 2.2 - Minh họa về các dịch vụ 4
Hình 2.3 - Các tầng tạo nên đám mây 5
Hình 2.4 – Tổng quan Windows Azure Platform 7
Hình 2.5 – Windows Azure cung cấp dịch vụ tính toán và dịch vụ lưu trữ 7
Hình 2.6 - SQL Azure cung cấp dịch vụ định hướng dữ liệu trong đám mây 9
Hình 2.7 - Ứng dụng truy xuất dữ liệu trong Cơ sở dữ liệu SQL Azure 10
Hình 2.8 - Windows Azure Platform AppFabric cung cấp cơ sở hạ tầng 11
Hình 3.1 - Ứng dụng Windows Azure 12
Hình 3.2 - Các thành phần Windows Azure 12
Hình 3.3 - Ứng dụng Windows Azure có thể chứa Web role và Worker role 13
Hình 3.4 - Bộ lưu trữ Windows Azure: Blob, Table, Queue 14
Hình 3.5 - Fabric Controller 15
Hình 3.6 - Fabric Controller và Fault Domain 16
Hình 3.7 - Fabric Controller và Update Domain 17
Hình 4.1 - Mô hình ví dụ dữ liệu Blob 18
Hình 4.2 - Khái niệm lưu trữ Blob Block 21
Hình 4.3 - Windows Azure Table 22
Hình 4.4 – Hình minh họa phân vùng 24
Hình 4.5 – Các thao tác với message 27
Hình 6.1 - Kiến trúc Service Bus 35
Hình 6.2 - Mô hình tích hợp Service bus và Access Control 35
Hình 6.3 – Sơ đồ tên gọi của Service Bus 38
Trang 7Hình 6.6 - Lược đồ tài nguyên Access Control 48
Hình 7.1 - Sơ đồ Use-case 53
Hình 7.2 – Sơ đồ kiến trúc tổng quan hệ thống 55
Hình 7.3 – Sơ đồ kiến trúc chi tiết hệ thống 56
Hình 7.4 – AlumniNetworking ở góc nhìn ứng dụng 57
Hình 7.5 – Sơ đồ kiến trúc Application 57
Hình 7.6 – Cấu trúc AppPage 58
Hình 7.7 – Sơ đồ module Account, Profile, Friend 59
Hình 7.8 – Sơ đồ lớp Forum, Group 61
Hình 7.9 – Sơ đồ lớp module Message, Photo, Comment, Rating 61
Hình 7.10 – Sơ đồ lớp module Job, Scholarship 63
Hình 7.11 – Lược đồ CSDL 65
Hình 7.12 – Màn hình trang chủ 69
Hình 7.13 – Màn hình đăng nhập 69
Hình 7.14 – Màn hình đăng ký 70
Hình 7.15 – Màn hình thông tin cá nhân 71
Hình 7.16 – Màn hình bạn bè của tôi 71
Hình 7.17 – Màn hình tìm kiếm bạn bè 72
Hình 7.18 – Màn hình nhập địa chỉ mail từ Outlook 72
Hình 7.19 – Màn hình giới thiệu nhóm 73
Hình 7.20 – Màn hình thành viên nhóm 73
Hình 7.21 – Màn hình diễn đàn 74
Trang 8Hình 7.24 – Đóng gói ứng dụng 76
Hình 7.25 – Đóng gói ứng dụng 76
Hình 7.26 – Màn hình đăng nhập tài khoản Windows Live 77
Hình 7.27 – Màn hình Microsoft Azure sau khi đăng nhập 78
Hình 7.28 – Màn hình tạo Azure cloud service 78
Hình 7.29 – Màn hình tạo Azure SQL database 78
Hình 7.29 – Màn hình tạo Azure storage account 79
Hình 7.31 – Các bước lấy chuỗi Connection Strings 79
Hình 7.32 – Màn hình hiển thị chuỗi Connection Strings 80
Hình 7.33 – Màn hình cấu hình dịch vụ 80
Hình 8.1 – Các application và plugin đã xây dựng 82
Trang 9Bảng 4.2 – Bảng tóm tắt các API cho Windows Azure Table 25
Bảng 6.1 – Bảng giá trị của TransportClientCredentialType 36
Bảng 6.2 – Bảng giá trị của Message Security 37
Bảng 6.3 – WCF và AppFabric Service Bus Binding 39
Bảng 6.4 – Giá trị ConnectivityMode 40
Bảng 6.5 – Key trong một SWT Token 45
Bảng 6.6 – Các kiểu yêu cầu Access Control 47
Bảng 7.1 – Danh sách các Use-case 53
Bảng 7.2 – Các thành phần kiến trúc Application 57
Bảng 7.3 – Các lớp/quan hệ của sơ đồ module Account, Profile, Friend 59
Bảng 7.4 – Các lớp/quan hệ của sơ đồ module Forum, Group 61
Bảng 7.5 – Các lớp/quan hệ của sơ đồ lớp Message, Photo, Comment, Rating 62
Bảng 7.6 – Các lớp/quan hệ của sơ đồ module Job, Scholarship 63
Bảng 7.7 – Các table của ứng dụng AlumniNetworking 65
Trang 10CNTT Công nghệ thông tin.
IDC International Data Corporation
On-premise Chỉ các ứng dụng hoặc dịch vụ được triển khai và quản lí bởi một
doanh nghiệp sở hữu nó và đặt tại vị trí doanh nghiệp đó
Trang 11Chương 1 Tổng quan
1.1 Đặt vấn đề
Trong lĩnh vực công nghệ thông tin, ngày nay ngoài các ứng dụng đểbàn, một xu hướng mới đáng chú ý là phát triển các ứng dụng web và cácứng dụng cho thiết bị di động Tất cả các ứng dụng này đều cần được lưu ởmột máy chủ để người dùng có thể truy cập được thông qua mạng
Để phát triển kinh doanh, các công ty thường có website riêng giúpquảng bá sản phẩm và thông tin liên lạc hoặc cung cấp dịch vụ trên môitrường mạng Tuy nhiên khi số lượng khách hàng tăng lên, việc đáp ứngnhu cầu của người dùng truy cập vào các máy chủ này sẽ gặp rất nhiều vấn
đề Thường các trang web này được đặt trên một máy chủ nào đó và cáccông ty phải mua vùng lưu trữ, cài đặt trang web của họ trên máy chủ Cách
đó được gọi là “hosting” và công ty phải tự cài đặt, quản lý và trả phí duy trìhàng tháng
Điện toán đám mây ra đời mang lại rất nhiều lợi ích Trước hết, điệntoán đám mây có thể cắt giảm các chi phí liên quan đến việc cung cấp cácdịch vụ công nghệ thông tin Bạn có thể giảm cả vốn và chi phí vận hành bằngcách nhận được tài nguyên thỉ khi bạn cần chúng và chỉ trả tiền cho những gìbạn sử dụng Ngoài ra, do làm giảm một số trong các món chi tiêu bắt buộckết hợp với việc quản lý nguồn tài nguyên khác nhau trên toàn doanh nghiệp,nhân viên chủ chốt của bạn có thể tập trung nhiều hơn vào giá trị sản xuất vàđổi mới nghiệp vụ Cuối cùng, các mô hình điện toán đám mây cung cấp sựnhanh nhẹn kinh doanh Kể từ khi toàn bộ cơ sở hạ tầng công nghệ thông tin
có thể điều chỉnh mở rộng lên hoặc giảm xuống để đáp ứng nhu cầu, cácdoanh nghiệp có thể đáp ứng dễ dàng hơn các nhu cầu thay đổi nhanh chóngcủa thị trường để đảm bảo các nhu cầu luôn đứng hàng đầu cho những ngườitiêu dùng của họ
Microsoft là một trong những nhà cung cấp dịch vụ điện toán đám mâyhiện nay, trong đó Azure Services Platform là một nền tảng chiến lược của
Trang 12Microsoft Azure cung cấp cho lập trình viên nhiều tiện ích và hạ tầng để xâydựng các ứng dụng trên nềm web.
1.2 Mục tiêu đề tài
Hiện này, đất nước đang thực hiện công cuộc công nghiệp hóa, hiện đại hóa,trong đó việc rút ngắn sự tụt hậu, phát triển về khoa học công nghệ là yếu tố thenchốt quyết định sự thành công của công cuộc đổi mới Song song với quá trình pháttriển, ngày càng có nhiều bài toán mới, đòi hỏi năng lực xử lí lớn xuất hiện trongkhoa học, thương mại và quản lí đất nước Việc nghiên cứu, áp dụng WindowsAzure Platform là một giải pháp tốt để giải quyết những vấn đề này
Mục tiêu của bài tiểu luận này là tìm hiểu công nghệ đám mây nói chung,công nghệ Azure của Microsoft nói riêng và ứng dụng vào xây dựng hệ thống mạng
xã hội ảo trên Azure
1.3 Nội dung thực hiện
Với tinh thần tham gia nghiên cứu, học hỏi công nghệ, đề tài nghiên cứu
“Tìm hiểu Windows Azure và xây dựng ứng dụng thử nghiệm” được thực hiện
nhằm đi những bước đầu tiên trong quá trình nghiên cứu, phát triển, ứng dụngWindows Azure vào thực tế Đề tài nghiên cứu các vấn đề chung của WindowsAzure Platform, xây dựng mạng xã hội ảo dành cho cựu sinh viên trên ứng dụngWindows Azure
Báo cáo lý thuyết tổng quan và các thành phần của Windows AzurePlatform: Windows Azure, Bộ lưu trữ Windows Azure (Blob, Table, Queue), SQLAzure, Windows Azure platform AppFabric (Service Bus, Access Control)
Xây dựng được ứng dụng mạng xã hội cho cựu sinh viên trên Windows Azuregồm những thành phần sau: tài khoản, thông tin, tin nhắn, bạn bè, nhóm, blog, diễnđàn, hình ảnh, quyên góp, trung tâm công việc Ứng dụng phát huy được một sốtính năng Windows Azure hỗ trợ như: mở rộng lưu trữ, xử lí song song, xử lí nền
Trang 13Chương 2 Tổng quan Windows Azure Platform
2.1 Tổng quan điện toán đám mây
2.1.1 Định nghĩa
Theo Gartner:
“Điện toán đám mây là một kiểu tính toán trong đó các năng lực CNTT có khả
năng mở rộng rất lớn được cung cấp “dưới dạng dịch vụ” qua mạng Internet đến nhiều khách hàng bên ngoài.”
Theo Forrester Research:
“Điện toán đám mây là một kho tài nguyên cơ sở hạ tầng ảo hóa, có khả năng
mở rộng cao và được quản lý, có thể hỗ trợ các ứng dụng của khách hàng cuối và được tính tiền theo mức độ sử dụng.”
Theo NIST (National Institute of Standards and Technology):
“Điện toán đám mây là một mô hình cho phép truy cập mạng thuận tiện, theo
nhu cầu đến một kho tài nguyên điện toán dùng chung, có thể định cấu hình: mạng, máy chủ, lưu trữ, ứng dụng,…có thể được cung cấp và thu hồi một cách nhanh chóng với yêu cầu tối thiểu về quản lý hoặc can thiệp của nhà cung cấp dịch vụ.”
Hình 2.1 - Mọi thứ đều tập trung vào đám mây.
2.1.2 Các giải pháp
Điện toán đám mây ra đời để giải quyết các vấn đề sau:
Trang 14- Vấn đề về lưu trữ dữ liệu:
o Dữ liệu được lưu trữ tập trung ở các trung tâm dữ liệu khổng
lồ Các công ty lớn như Microsoft, Google có hàng chục trung tâm dữliệu nằm rải rác khắp nơi trên thế giới Các công ty lớn này sẽ cungcấp các dịch vụ cho phép doanh nghiệp có thể lưu trữ và quản lý dữliệu của họ trên các trung tâm lưu trữ
- Vấn đề về sức mạnh tính toán: có 2 giải pháp chính
o Sử dụng các siêu máy tính để xử lý tính toán
o Sử dụng các hệ thống tính toán song song, phân tán
- Vấn đề về cung cấp tài nguyên, phần mềm
o Cung cấp các dịch vụ như IaaS (infrastructure as a service), PaaS(platform as a service), SaaS (software as a service)
Hình 2.2 - Minh họa về các dịch vụ.
Trang 152.1.3 Các tầng tạo nên đám mây
Hình 2.3 - Các tầng tạo nên đám mây.
Các dịch vụ ứng dụng (SaaS)
Tầng dịch vụ ứng dụng này lưu trữ các ứng dụng phù hợp với mô hình SaaS.Đây là những ứng dụng chạy trong một đám mây và được cung cấp theo yêu cầu.Đôi khi các dịch vụ này được cung cấp miễn phí và các nhà cung cấp dịch vụ tạo radoanh thu từ những thứ khác như các quảng cáo Web và nhiều khi các nhà cung cấpứng dụng tạo ra doanh thu trực tiếp từ việc sử dụng dịch vụ Nếu bạn đã kiểm trathư của bạn khi sử dụng Gmail hoặc Yahoo Mail hoặc được nhắc các cuộc hẹn khi
sử dụng Google Calendar, thì bạn đã quen thuộc với tầng trên cùng của đám mây.Đây chỉ là một vài ví dụ về các kiểu ứng dụng này
Các ứng dụng được cung cấp qua mô hình SaaS làm lợi cho người tiêu dùngbằng cách giải phóng cho họ khỏi việc cài đặt và bảo trì phần mềm và các ứng dụng
có thể được sử dụng thông qua các mô hình cấp phép có hỗ trợ trả tiền để sử dụng
Các dịch vụ nền tảng
Đây là tầng ở đó chúng ta thấy cơ sở hạ tầng ứng dụng nổi lên như là một tậphợp các dịch vụ Các dịch vụ ở đây được dành để hỗ trợ cho các ứng dụng Các ứngdụng này có thể đang chạy trong đám mây và chúng có thể đang chạy trong mộttrung tâm dữ liệu doanh nghiệp truyền thống Để đạt được khả năng mở rộng cầnthiết trong một đám mây, các dịch vụ khác nhau được đưa ra ở đây thường được ảohóa Các ví dụ trong phần này của đám mây bao gồm Amazon Web Services,Boomi, và Google App Engine Các dịch vụ nền tảng này cho phép khách hàngchắc chắn rằng các ứng dụng của họ được trang bị để đáp ứng các nhu cầu củangười dùng bằng cách cung cấp cơ sở hạ tầng ứng dụng dựa theo yêu cầu
Trang 16Các dịch vụ cơ sở hạ tầng
Ở đây, chúng ta thấy một tập hợp các tài sản vật lí như các máy chủ, các thiết
bị mạng và các đĩa lưu trữ được đưa ra như là các dịch vụ được cung cấp cho ngườitiêu dùng Các dịch vụ ở đây hỗ trợ cơ sở hạ tầng ứng dụng và nhiều người tiêudùng hơn Cũng như với các dịch vụ nền tảng, sự ảo hóa là một phương phápthường được sử dụng để tạo ra chế độ phân phối các nguồn tài nguyên theo yêu cầu
Ví dụ về các dịch vụ cơ sở hạ tầng bao gồm IBM Bluehouse, VMware, AmazonEC2, Microsoft Azure Platform, Sun ParaScale Cloud Storage và còn nữa
2.1.4 Lợi ích của điện toán đám mây
Nhanh nhẹn: Có khả năng cung cấp các tài nguyên cơ sở hạ tầng, công nghệ
có sẵn một cách nhanh chóng và ít tốn kém
Chi phí thấp: Giảm chi phí đầu tư, nâng cấp, bảo trì các cơ sở hạ tầng tốn
kém như: máy chủ, mạng, các thiết bị lưu trữ, phần mềm…và việc tính chi phí dựatrên nhu cầu sử dụng giúp tiết kiệm chi phí
Độc lập với các thiết bị và vị trí: Người dùng có thể truy cập vào ứng dụng
đám mây bằng nhiều thiết bị và tại bất cứ vị trí nào thông qua Internet
Hỗ trợ nhiều người thuê: cho phép chia sẻ tài nguyên và chi phí giữa một
phạm vi lớn người dùng nhằm:
- Tập trung cơ sở hạ tầng tại một vùng với chi phí thấp
- Khả năng chịu tải cao
- Cải thiện việc sử dụng và nâng cao hiệu suất cho hệ thống
Khả năng co giãn linh độngm(theo nhu cầu): Doanh nghiệp cũng có thể dễ
dàng điều chỉnh thêm, bớt người sử dụng và bổ sung dịch vụ tùy theo nhu cầu sửdụng
Bảo mật: Vấn đề bảo mật cải thiện nhờ vào việc tập trung hóa dữ liệu, tăng
chi phí đầu tư cho việc bảo mật
2.1.5 Xu hướng phát triển
Thuật ngữ “điện toán đám mây” ra đời từ giữa năm 2007, cho đến nay đãkhông ngừng phát triển mạnh mẽ và được hiện thực bởi nhiều công ty lớn trên thếgiới như IBM, Sun, Amazon, Google, Microsoft, Yahoo, SalesForce, …
2.2 Tổng quan Windows Azure Platform
2.2.1 Giới thiệu
Windows Azure Platform là một nhóm các công nghệ đám mây, mỗi côngnghệ cung cấp một tập các dịch vụ đặc trưng để phát triển ứng dụng
Trang 17Hình 2.4 – Tổng quan Windows Azure Platform.
Các thành phần của Windows Azure Platform:
- Windows Azure: cung cấp môi trường nền tảng Windows để chạy ứng dụng
và lưu trữ dữ liệu trên máy chủ trong trung tâm dữ liệu của Microsoft
- SQL Azure: cung cấp dịch vụ lưu trữ dữ liệu quan hệ trên đám mây dựa trên
SQL Server
- Windows Azure Platform AppFabric: cung cấp các dịch vụ đám mây để
kết nối các ứng dụng chạy trên đám mây hoặc on-premise
2.2.2 Giới thiệu Windows Azure
Windows Azure được hiểu đơn giản là một nền tảng để chạy ứng dụngWindows và lưu trữ dữ liệu trên đám mây
Hình 2.5 – Windows Azure cung cấp dịch vụ tính toán và dịch vụ lưu trữ.
Trang 18Windows Azure chạy trên nhiều máy tính đặt trong trung tâm dữ liệu củaMicrosoft và truy xuất qua Internet Một Windows Azure fabric liên kết chặt chẽnhiều sức mạnh xử lí này thành một thể thống nhất
Dịch vụ tính toán dựa trên Windows Lập trình viên có thể xây dựng ứng dụng
sử dụng NET Framework, native-code,… Các ứng dụng này được viết bằng cácngôn ngữ thông thường như: C#, Visual Basic, C++ và cả Java, sử dụng VisualStudio hoặc công cụ phát triển khác Lập trình viên có thể tạo ứng dụng Web, sửdụng công nghệ như ASP.Net, WCF và PHP, ứng dụng cũng có thể chạy như một
xử lí nền độc lập, hoặc kết hợp cả Web và xử lí nền
Cả ứng dụng Windows Azure và ứng dụng on-premise có thể truy xuất dịch
vụ lưu trữ Windows Azure, và cả hai cùng truy xuất bằng REST API Dịch vụ lưutrữ cho phép lưu trữ các đối tượng dữ liệu lớn qua blob, cung cấp các queue để liênlạc giữa các thành phần trong ứng dụng, và cung cấp dạng table với ngôn ngữ truyvấn đơn giản Đối với các ứng dụng có nhu cầu lưu trữ dữ liệu quan hệ truyềnthống, Windows Azure Platform cung cấp cơ sở dữ liệu SQL Azure
Tuy nhiên, để đạt được những thuận lợi trên đòi hỏi phải quản lí hiệu quả.Trong Windows Azure, mỗi ứng dụng có một tập tin cấu hình Bằng cách cấu hìnhtập tin này, người chủ ứng dụng có thể cấu hình nhiều thành phần như thiết lập sốthể hiện mà ứng dụng Windows Azure nên chạy Sau đó, Windows Azure fabricgiám sát ứng dụng để duy trì trạng thái mong muốn
2.2.3 Giới thiệu SQL Azure
Mục tiêu của SQL Azure cung cấp các dịch vụ dựa trên đám mây để lưu trữ và
xử lí dữ liệu Trong khi đó Microsoft nói rằng SQL Azure sẽ bao gồm một loạt cáctính năng định hướng dữ liệu, đồng bộ hóa dữ liệu, báo cáo, phân tích dữ liệu vànhững chức năng khác
Trang 19Hình 2.6 - SQL Azure cung cấp dịch vụ định hướng dữ liệu trong đám mây.
Cơ sở dữ liệu SQL Azure cung cấp một hệ thống quản lí cơ sở dữ liệu dựa trênđám mây Công nghệ này cho phép ứng dụng on-premise và ứng dụng đám mây lưutrữ dữ liệu quan hệ và những kiểu dữ liệu khác trên các máy chủ trong trung tâm dữliệu của Microsoft Cũng như các công nghệ đám mây khác, người dùng chỉ trả chonhững gì họ sử dụng
Cơ sở dữ liệu SQL Azure được xây dựng dựa trên Microsoft SQL Server.Công nghệ này cung cấp môi trường SQL Server trong đám mây, bổ sung index,view, store procedure, trigger,… Dữ liệu này có thể được truy xuất bằng ADO.Net
và các giao tiếp truy xuất dữ liệu Windows khác
Khi ứng dụng sử dụng Cơ sở dữ liệu SQL Azure thì yêu cầu về quản lí sẽđược giảm đáng kể Thay vì lo lắng về các công việc như giám sát việc sử dụng đĩa
và theo dõi tập tin nhật ký (log file), khách hàng sử dụng Cơ sở dữ liệu SQL Azurechỉ tập trung vào dữ liệu Microsoft sẽ xử lí các hoạt động chi tiết
Trang 20Hình 2.7 - Ứng dụng truy xuất dữ liệu trong Cơ sở dữ liệu SQL Azure
Một ứng dụng sử dụng Cơ sở dữ liệu SQL Azure có thể chạy trên WindowsAzure, trong một trung tâm dữ liệu của doanh nghiệp, trên thiết bị di động,…Mộtứng dụng Cơ sở dữ liệu SQL Azure có thể sử dụng thư viện client SQL Server hiện
có Bao gồm ADO.Net, ODBC, và PHP Và bởi vì Cơ sở dữ liệu SQL Azure giốngnhư hệ thống SQL Server thông thường nên các công cụ hỗ trợ có thể được sửdụng, bao gồm: SQL Server Management Studio, SQL Server Integration Service,
…
Như trong bộ lưu trữ Windows Azure, tất cả các dữ liệu được lưu trữ trong Cơ
sở dữ liệu SQL Azure được sao ba bảng Mục đích là để cung cấp việc lưu trữ dữliệu đáng tin cậy ngay cả khi đối mặt với lỗi của hệ thống và mạng
2.2.4 Windows Azure Platform AppFabric
Windows Azure Platform AppFabric cung cấp dịch vụ cơ sở hạ tầng dựa trênđám mây
Trang 21Hình 2.8 - Windows Azure Platform AppFabric cung cấp cơ sở hạ tầng
Các thành phần của Windows Azure Platform AppFabric:
Service Bus: Mục tiêu của Service Bus là cho phép ứng dụng expose các
endpoint để có thể được truy xuất bởi các ứng dụng khác Mỗi endpoint đã exposeđược gán một URI Client sử dụng URI này để xác định vị trí và truy xuất dịch vụ.Service Bus cũng xử lí việc chuyển đổi địa chỉ mạng và vượt qua tường lửa màkhông cần mở port mới để expose ứng dụng
Access Control: Dịch vụ này cho phép ứng dụng client chứng thực chính nó
và cung cấp một ứng dụng server với thông tin xác thực Máy chủ sau đó có thể sửdụng thông tin này để quyết định những gì ứng dụng này được phép làm
Trang 22Chương 3 Giới thiệu về Windows Azure
3.1 Tổng quan Windows Azure
Nhìn một cách tổng quan, Windows Azure là một hệ điều hành dùng để chạycác ứng dụng Windows và lưu dữ liệu của nó trên đám mây Nhưng khác với một
hệ điều hành bình thường, người dùng phải cài đặt và chạy trên máy tính của mình,Windows Azure là một dịch vụ: Khách hàng dùng nó để chạy ứng dụng và lưu trữ
dữ liệu trên các máy chủ ở trung tâm dữ liệu của Microsoft, có thể truy cập quaInterner Các ứng dụng này có thể cung cấp dịch vụ cho doanh nghiệp và kháchhàng
Hình 3.9 - Ứng dụng Windows Azure.
3.2 Các thành phần Windows Azure
Hình 3.10 - Các thành phần Windows Azure
Trang 23Dịch vụ tính toán sẽ chạy ứng dụng, trong khi dịch vụ lưu trữ lưu dữ liệu.Thành phần thứ ba, Windows Azure Fabric, cung cấp cách thức để quản lý và theodõi các ứng dụng sử dụng nền tảng đám mây này.
3.2.1 Dịch vụ tính toán (Compute Service)
Dịch vụ tính toán Windows Azure có thể chạy nhiều kiểu ứng dụng khácnhau Mục tiêu chính của kiến trúc này là hỗ trợ các ứng dụng có lượng người sửdụng truy cập đồng thời cực lớn Windows Azure được thiết kế để hỗ trợ chạy nhiềubản sao của cùng một mã nguồn trên nhiều máy chủ khác nhau
Để đạt được điều này, ứng dụng Windows Azure có thể có nhiều thể hiện, mỗithể hiện được thực thi trên một máy chủ ảo
Dịch vụ tính toán hỗ trợ 2 loại thể hiện: Web role và Worker role
Hình 3.11 - Ứng dụng Windows Azure có thể chứa Web role và Worker role
Một thể hiện Web role có thể chấp nhận một request HTTP/HTTPS Để thựchiện điều này, thể hiện Web role chạy trên một máy ảo có cài Internet InformationServices 7 (IIS 7) Lập trình viên có thể tạo ra Web role bằng ASP.NET, WCF, haybất kì kĩ thuật NET khác có thể hoạt động được với IIS 7 Ngoài ra, lập trình viên
có thể viết các ứng dụng với native code, có nghĩa là có thể chạy các ứng dụng sửdụng kĩ thuật khác như PHP, Java Khi một request được gửi đến Web role, nó sẽđược truyền qua bộ cân bằng tải đến các thể hiện của Web role trong cùng một ứngdụng Do đó, không đảm bảo rằng, các yêu cầu từ một người dùng có thể được gửiđến cùng một thể hiện của ứng dụng
Một thể hiện Worker role không giống như Web role, nó không chấp nhậnrequest từ bên ngoài, các máy ảo của nó không chạy IIS Một Worker role cho bạnkhả năng để chạy các xử lý ngầm liên tục trên đám mây Một Worker role có thểlàm việc với queue, table, blob trong dịch vụ lưu trữ Nó chạy hoàn toàn độc lập với
Trang 24thể hiện Web role, mặc dù có thể cùng thuộc một phần của dịch vụ Việc liên lạcgiữa Web role và Worker role có thể thông qua queue của dịch vụ lưu trữ
Lập trình viên có thể chỉ sử dụng thể hiện Web role, hay Worker role, hoặc kếthợp cả hai để tạo ra ứng dụng Windows Azure Sử dụng Windows Azure portal đểthay đổi số lượng thể hiện của Web role, Worker role tùy theo yêu cầu của ứngdụng
Khi chạy các thể hiện Web role hay Worker role, các máy ảo cũng chạy đồngthời các Fabric agent Các agent phục vụ cho việc tương tác giữa các thể hiện vớiWindows Azure Fabric Các agent này trình bày các API được định nghĩa để các thểhiện có thể làm một số việc như: ghi chép, tìm thư mục gốc của tài nguyên lưu trữcục bộ trên máy ảo của nó
Windows Azure cho phép lập trình viên chọn cấu hình máy ảo: một nhân, hainhân, bốn nhân và tám nhân Và để tăng hiệu suất, người sở hữu ứng dụng có thểtăng số lượng thể hiện đang chạy được đặt tả trong tập tin cấu hình ứng dụng.Windows Azure fabric sẽ thêm máy ảo mới, gán thêm nhân và bắt đầu chạy ứngdụng Fabric cũng dò khi một thể hiện Web role hoặc Worker role bị chết, nó sẽ tạomột thể hiện mới
3.2.2 Dịch vụ lưu trữ (Storage Service)
Dịch vụ lưu trữ Windows Azure hỗ trợ 3 kiểu dịch vụ: blob, table, queue
Hình 3.12 - Bộ lưu trữ Windows Azure: Blob, Table, Queue
Một cách đơn giản nhất để lưu trữ dữ liệu là sử dụng blob Windows Azureblob có kiến trúc đơn giản: một tài khoản lưu trữ có một hoặc nhiều container, mỗicontainer có một hoặc nhiều blob Blob có thể rất lớn – mỗi blob có thể chứa vàiterabyte dữ liệu Blob có thể kết hợp với metadata, như thông tin về nơi chụp ảnhhoặc người sáng tác bài hát
Trang 25Một cách khác để sử dụng blob là Windows Azure XDrive, được gắn với mỗithể hiện Web role và Worker role Lưu trữ bên dưới một XDrive là một blob, nhưvậy mỗi blob là một ổ đĩa được gắn kết, mỗi thể hiện có thể đọc và ghi dữ liệu như
hệ thống tập tin
Để cho phép ứng dụng làm việc với dữ liệu hiệu quả hơn, bộ lưu trữWindows Azure cung cấp table Không giống với bảng quan hệ, các table lưu trữmột tập các entity với các property Một table không có giản đồ và các property cónhiều kiểu dữ liệu khác nhau như int, string, bool, hoặc datetime Một ứng dụng cóthể truy xuất dữ liệu của table sử dụng ADO.Net Data Service hoặc LINQ Mộttable có thể rất lớn, với vài triệu entity chứa vài terabyte dữ liệu, và bộ lưu trữWindows Azure có thể phân vùng nó qua nhiều máy chủ nếu cần cải thiện hiệu suất.Blob và table tập trung vào lưu trữ dữ liệu, thành phần lưu trữ thứ ba là queuelại có một mục đích khác Mục đích chính của queue là cung cấp cách thức để thểhiện Web role liên lạc với thể hiện Worker role Ví dụ, một người dùng có thể gửimột request để thực hiện các nhiệm vụ tính toán chuyên sâu qua trang Web đượcthực thi bởi Web role Thể hiện Web role nhận request này và viết một message vàoqueue - mô tả công việc được thực hiện Một thể hiện Worker role đợi queue này,sau đó đọc message và thực hiện nhiệm vụ
Bộ lưu trữ Windows Azure có thể được truy xuất bởi một ứng dụng WindowsAzure hoặc bởi một ứng dụng khác Cả 3 thành phần của bộ lưu trữ Windows Azuređều sử dụng giao thức REST để truy xuất dữ liệu
3.2.3 Windows Azure Fabric
Tất cả các ứng dụng Windows Azure và dữ liệu của nó đều tồn tại trên trungtâm dữ liệu của Microsoft Bên trong trung tâm dữ liệu này, một tập hợp các máy
dành cho Windows Azure được tổ chức thành một fabric.
Hình 3.13 - Fabric Controller
Trang 26Như hình trên, Windows Azure Fabric chứa một một nhóm các máy, tất cả các
máy được quản lý bởi một phần mềm gọi là fabric controller Fabric controller
được tái tạo qua mỗi nhóm từ 5 đến 7 máy, nó sở hữu tất cả các tài nguyên: máytính, switch, bộ cân bằng tải (load balancer),… Vì nó có thể giao tiếp với một fabricagent trên mỗi máy tính nên nó nhận biết được tất cả các ứng dụng Windows Azuretrong fabric
Với các thông tin có được, cho phép fabric controller có thể làm được nhiềuviệc rất hữu ích Nó theo dõi tất cả các ứng dụng đang chạy Nó quản lý hệ điềuhành, quản lý việc vá lỗi cho phiên bản của Windows Server 2008 Nó quyết địnhkhi một ứng dụng mới được tải lên sẽ được chạy trên dịch vụ nào Để làm đượcđiều này, fabric controller phụ thuộc vào tập tin cấu hình của mỗi ứng dụng được tảilên Trong đó, chỉ ra bao nhiêu thể hiện cần được tạo ra và kích thước các máy ảo làthế nào Dựa vào đó, fabric controller tạo ra các máy ảo tương ứng Khi tạo ra cácmáy ảo này, fabric controller sẽ theo dõi các ứng dụng đó Nếu một ứng dụng cần
có 5 thể hiện và một trong số đó có 1 thể hiện bị “chết”, fabric controller sẽ tự độngkhởi tạo một thể hiện mới Nếu một máy ảo đang chạy bị chết, fabric controller sẽ
tự động khởi tạo một thể hiện khác của ứng dụng trên một máy ảo khác, sau đó khởiđộng lại bộ cân bằng tải để chỉ đến máy mới này
Nhằm phục vụ cho tính sẵn sàng của dịch vụ, fabric controller nhóm các máy
nó làm chủ thành một số miền gọi là fault domain Mỗi miền là một phần của trung
tâm dữ liệu
Hình 3.14 - Fabric Controller và Fault Domain
Trong hình trên, giả sử ứng dụng cần 2 thể hiện Web role và trung tâm dữ liệuđược chia làm 2 miền lỗi Khi fabric controller triển khai ứng dụng này, nó sẽ đặtmỗi thể hiện Web role vào một miền Khi có lỗi xảy ra ở một miền nào đó cũng sẽkhông thể làm chết hoàn toàn ứng dụng của bạn
Trang 27Ngoài ra, fabric controller nhóm các thể hiện của ứng dụng thành các miền
cập nhật “update domain”
Hình 3.15 - Fabric Controller và Update Domain
Khi mã của ứng dụng cần cập nhât, fabric controller sẽ thực hiện cập nhậttrong từng miền Ví dụ trong hình trên, fabric controller sẽ tiến hành tắt hai thể hiện
1 và 2 của ứng dụng trước, cập nhật và khởi động lại hai thể hiện này Sau đó, tiếnhành tương tự cho 2 thể hiện ở miền còn lại Mục đích của việc này là làm cho ứngdụng không bị gián đoạn, khi một ứng dụng đang cập nhật, người dùng vẫn có thểtruy cập đến với phiên bản cũ của ứng dụng cho đến khi nó cập nhật xong
Trang 28Chương 4 Giới thiệu bộ lưu trữ Windows Azure
4.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ữ liệu của họ trênđám mây Ứng dụng có thể truy xuất dữ liệu từ bất kì nơi đâu, tại bất kì thời điểmnà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 cungcấp một bộ trừu tượng hóa dữ liệu phong phú:
- Windows Azure Blob – cung cấp lưu trữ cho các mẫu dữ liệu lớn
- Windows Azure Table – cung cấp bộ lưu trữ có cấu trúc để lưu trữ tình trạng
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 đến200GB Để sử dụng blob, một lập trình viên phải tạo một hoặc nhiều containertrong tài khoản lưu trữ Mỗi container có thể chứa một hoặc nhiều blob
Hình 4.16 - Mô hình ví dụ dữ liệu Blob
- Tài khoản lưu trữ – 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ạngcặp <tên, giá trị> và chúng có kích thước tối đa 8KB với mỗi container
Trang 29 Container chỉ chứa các blob và không thể chứa các thùng chứa khácbê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ênblob 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 choblob 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ó metadatakết hợp với chúng, cặp <tên, giá trị>, và chúng có kích thước tối đa 8KB với mỗiblob
Đườ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ạixả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 khitấ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
- 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ỗ trợXDrive Để hiểu được vai trò quan trọng đó là gì, chúng ta thấy rõ rằng các thể hiệnWeb 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ữ liệu vàoXDrive thì dữ liệu được ghi ngay vào blob bên dưới Khi thể hiện không hoạt động,
dữ liệu này đã được lưu trữ liên tục trên page blob, sẵn sàng để gắn trở lại
4.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 giaotiế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
- GET Blob – Lấy một entity blob hoặc lấy một dãy các byte trong blob sửdụng thao tác GET chuẩn HTTP
- 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àikhoản lưu trữ Nó sẽ sao chép toàn bộ blob, bao gồm metadata, property vàblocklist Bạn có thể sử dụng CopyBlob cùng với DeleteBlob để đổi tên một blob
Trang 30hoặc để di chuyển một blob giữa các container, hoặc tạo bản sao dự phòng cho blobhiệ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 committhà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 đã đượctải lên cho một blob những chưa được commit vào blob
Bạn có thể tải một blob có kích thước lên đến 64MB chỉ sử dụng một requestPUT blob Để tải lên các blob có kích thước đến 200GB, bạn cần phải ghép cácblock lại với nhau
4.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ảilê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ởiWindows 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ể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 bytethứ 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ênblob được tải lên Ví dụ, block đầu tiên được gọi là “Block 0001”, block thứ hai
“Block 0002”, …
- Đặt mỗi block vào đám mây với lệnh PUT Điều này được thực hiện với mộtlệnh PUT chỉ định URL ở trên với truy vấn xác định rằng đây là lệnh PUT blockcù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ềunà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 địnhrằng đây là lệnh blocklist Sau đó, header HTTP chứa danh sách các block đượccommit 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ủablob Blob sau đó có thể được đọc bằng cách sử dụng lệnh GET blob
Trang 31Hình 4.17 - Khái niệm lưu trữ Blob Block
Như mô tả trước đó, blob có thể được truy xuất qua PUT và GET bằng cách
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íchthướ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ànhcô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 blocktạ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ànhcông bằng cách sử dụng lời gọi PUT block Thứ tự các block trong thao tác PUTblocklist sẽ hợp thành phiên bản có thể đọc của blob
Trang 32- GET blocklist – lấy danh sách block đã được commit trước đó cho blob bằngthao tác PUT blocklist Danh sách block được trả ra định rõ ID và kích thước củamỗ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.
4.3 Windows Azure Table
Hỗ trợ LINQ, ADO.NET Data Service và REST
Tập hợp các kiểu dữ liệu phong phú cho giá trị của property
Hỗ trợ số lượng table và entity không giới hạn và không giới hạn về kíchthước table
Hình 4.18 - Windows Azure Table
- 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ữ
liệu 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
Trang 33table có 2 property tên là “PartitionKey” và “RowKey” tạo ra khóa duy nhất chomỗi entity.
- Property (Thuộc 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 khóa này để tự động cấp phát các entity của table qua nhiều nút lưu trữ
- 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 duynhấ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ắpxế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
- 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ước tối đa 1 KB
- Không có giản đồ cố định – Không có giản đồ được lưu trữ bởi WindowsAzure Table, vì thế tất cả các property được lưu trữ theo cặp <tên, kiểu dữ liệu>.Điều này có nghĩa rằ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ệukhác nhau cho giá trị property Tuy nhiên, tên property phải là duy nhất với mỗientity
- Kết hợp kích thước của tất cả các dữ liệu trong một entity không thể vượtquá 1MB Kích thước này bao gồm kích thước của tên property cũng như kích
Trang 34thước của giá trị property hoặc kiểu của chúng, bao gồm cả hai property khóa bắtbuộc (PartitionKey và RowKey).
Bảng 4.1 – Các kiểu dữ liệu Windows Azure Table hỗ trợ
Kiểu property
DateTime Kiểu thời gian 64-bit Miền giá trị được hỗ trợ từ ngày
1/1/1601 đến 12/31/9999
GUID Kiểu dữ liệu để chỉ định ID 128-bit
String Kiểu chuỗi Giá trị chuỗi có thể lên đến 64 KB
4.3.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đảm bảo một tập hợp các entity luôn cùng nằm trên một nút lưu trữ Một ứng dụngđiều chỉnh thiết lập này bằng cách chọn giá trị thích hợp cho PartitionKey trong mỗientity
Hình 4.19 – Hình minh họa phân vùng
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ácnhau 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ể
Trang 35Trong 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ùngriêng lẻ
4.3.2.1 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ọnmộ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ốnglư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 quanhiề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ânbằ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 bạn 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
4.3.2.2 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ókhả năng mở rộng tốt Có một sự cân nhắc giữa việc cố gắng để được lợi từ miềnentity, ở đó bạn đạt được những truy vấn hiệu quả qua các entity trong cùng mộtphâ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ủ
4.3.3 Lập trình Table
Các hoạt động cơ bản sau đây được hỗ trợ trên các table và các entity
Tạo table hoặc entity
Lấy một table hoặc entity - với bộ lọc
Cập nhật một entity (không có cập nhật table)
Xóa một table hoặc entity
Giao dịch nhóm entity - hỗ trợ các giao dịch qua các entity trong cùng mộttable và cùng một phân vùng
Để sử dụng table trong ứng dụng Net, bạn có thể sử dụng dịch vụ dữ liệuADO.NET
Bảng 4.2 – Bảng tóm tắt các API cho Windows Azure Table
Trang 36Tài nguyên
Mô tả
Truy vấn LINQ Query GET Table Trả về danh sách các
table trong tài khoản lưutrữ Nếu một bộ lọc hiện
có, nó sẽ trả về các tabletương ứng với bộ lọc này.Entity Trả về tất cả các entity
trong một table xác địnhhoặc tập con các entitynếu các tiêu chuẩn lọcđược xác định
PUT Entity Cập nhật giá trị property
trong một entity Thao tácPUT thay thế toàn bộentity và có thể được sửdụng để thay thế cácproperty
POST Table Tạo một table mới trong
tài khoản lưu trữ
Entity Thêm một entity mới vào
POST $batch Hỗ trợ giao dịch nhóm
entity được cung cấpthông qua một loạt hoạtđộng trên các entity cócùng partition key trongmột table duy nhất
Trang 374.4 Windows Azure Queue
4.4.1 Giới thiệu
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ànhphần khác nhau của ứng dụng đám mây Windows Azure Queue có tính sẵn sàngcao, 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ộtmessage 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ềucông nghệ khác nhau và dễ dàng mở rộng theo nhu cầu lưu thông
Hình 4.20 – Các thao tác với message.
Trong kịch bản điển hình, nhiều thể hiện Web role đang chạy, mỗi thể hiệnnhận công việc từ người dùng (bước 1) Để đẩy công việc đến thể hiện Worker role,một thể hiện Web role viết một message vào queue(bước 2) Message này, chứa tối
đa 8KB, có thể chứa đường dẫn URI đến một blob hoặc một entity trong table hoặcnhững nội dung khác Thể hiện Worker role đọc message từ queue này (bước 3).Sau đó thực hiện công việc mà queue yêu cầu Khi thể hiện Worker role đã hoànthành công việc message yêu cầu, nó phải xóa hẳn message từ queue (bước 5).Kiến trúc này có nhiều thuận lợi, bởi vì:
- Có khả năng mở rộng
Ứng dụng có thể mở rộng một cách dễ dàng theo nhu cầu lưu thông
Số lượng web role và số lượng worker role được điều chỉnh độc lập
mà không ảnh hưởng đến logic ứng dụng
Một queue riêng biệt có thể được sử dụng cho các mục công việc theo
độ ưu tiên khác nhau
- Tách rời Front-End Role khỏi Back-End Role:
Trang 38 Các thành phần khác nhau của ứng dụng được tách rời do sử dụngqueue Các message trong queue theo định dạng chuẩn và mở rộng, ví dụ như XML,
để các thành phần giao tiếp ở cả hai đầu của queue không có sự phụ thuộc lẫn nhaumiễn là họ có thể hiểu được các thông điệp trong queue
Các công nghệ và ngôn ngữ lập trình khác nhau có thể được sử dụng
để thực thi các phần khác nhau của hệ thống Hơn nữa, những thay đổi trong mộtthành phần là trong suốt với phần còn lại của hệ thống
Hơn nữa, việc sử dụng queue cũng làm giảm nhẹ các ảnh hưởng khimột thành phần riêng lẻ bị lỗi Trong ví dụ trên, nếu một vài thể hiện worker role bịsụp đổ, thay vì mất tất cả các mục công việc, queue có thể làm bộ nhớ đệm cho tất
cả các mục công việc Khi thể hiện worker role được phục hồi, chúng có thể tiếp tục
xử lí các mục công việc trong queue Nên nhớ rằng các mục công việc đang được
xử lí bởi worker role cũng không bị mất, chúng được xuất hiện trở lại trong queuesau thời gian VisibilityTimeout do đó đảm bảo không mất dữ liệu khi các thànhphần xảy ra lỗi
4.4.2 Mô hình dữ liệu Queue:
- Storage Account (Tài khoản lưu trữ).
Một tài khoản có nhiều queue
- Queue (Hàng đợi) – Một queue chứa nhiều message (thông báo).
Không có giới hạn về số lượng các message được lưu trữ trong queue
Một message được lưu trữ nhiều nhất một tuần Hệ thống sẽ dọn cácmessage đã lưu trữ nhiều hơn một 1 tuần
Queue có metadata Metadata là cặp <tên, giá trị> và chúng có kíchthước lên đến 8KB với mỗi queue
- Message (Thông báo) – Message được lưu trữ trong queue Mỗi message có
kích thước lên đến 8KB Để lưu trữ dữ liệu lớn hơn, chúng ta lưu trữ nó vào bộ lưutrữ Blob hoặc Table, và sau đó lưu trữ tên blob/entity trong message Chú ý khi bạnđặt một message vào bộ lưu trữ, dữ liệu của message là binary Nhưng khi bạn lấymessage ra thì dữ liệu message được trả về dạng encoded base64
- Định nghĩa một vài tham số:
1 MessageID: một giá trị GUID để nhận biết message trong queue.
2 VisibilityTimeout: một giá trị nguyên định rõ visibility timeout của
message Giá trị mặc định là 30 giây Giá trị tối đa là 2 giờ
3 PopReceipt: một chuỗi, chuỗi này cùng với MessageID được yêu cầu
để xóa một message từ queue
Trang 394 MessageTTL: Xác định khoảng thời gian sống cho message Thời
gian sống tối đa là 7 ngày Nếu một message không được xóa trong thời gian sống,thì sau thời gian sống nó sẽ được dọn và xóa bởi hệ thống lưu trữ
URI cho một queue cụ thể có cấu trúc như sau:
http://<account>.queue.core.windows.net/<QueueName>
4.4.3 Thực tiễn tốt nhất
4.4.3.1 Chọn thời gian ẩn cho GetMessage
Việc chọn thời gian ẩn là một sự cân nhắc giữa thời gian xử lí và thời gianphục hồi ứng dụng
Khi một message được lấy khỏi queue, ứng dụng định rõ thời gian màmessage được ẩn Thời gian này phải đủ lớn để hoàn thành xử lí được xác địnhtrong message queue
Nếu thời gian ẩn quá lớn, ứng dụng sẽ mất thời gian hoàn thành xử lí message
bị ảnh hưởng khi ứng dụng gặp lỗi Ví dụ, nếu thời gian ẩn được gán là 30 phút vàứng dụng bị sự cố tại phút thứ 10, message sẽ phải đợi 20 phút sau để được hiển thịlại trong queue
Nếu thời gian này quá nhỏ, message sẽ hiển thị trong khi nó vẫn đang được xử
lí Vì vậy nhiều worker có thể xử lí cùng một message
4.4.3.2 Xóa một message khỏi queue
Một khi message đã được xử lí, nó nên được xóa khỏi queue Nếu xử lí hoànthành trong thời gian ẩn, việc xóa sẽ thành công
Một message chỉ nên được xóa khi message đã được xử lí thành công Nếu nóđược xóa trước thi thực hiện xử lí, thì công việc trong message có thể không hoànthành nếu ứng dụng bị sự cố
Thao tác xóa sẽ bị lỗi nếu thời gian ẩn đã qua và một xử lí khác lấy cùngmessage này ra khỏi queue
Mục tiêu chính ở đây là message phải được xóa trước khi hết thời gian ẩn
4.4.3.3 Điều chỉnh số thể hiện Worker Role dựa vào độ dài Queue
Độ dài queue phản ánh các nút xử lí backend có bắt kịp toàn bộ tải công việchay không? Chiều dài queue tăng lên cho biết backend không thể xử lí công việchiệu quả Trong trường hợp này, ứng dụng có thể muốn tăng số lượng các nútbackend để công việc có thể được hoàn thành nhanh hơn Nếu độ dài queue luôn ởgần mức 0, nghĩa là năng lực xử lí ở các backend nhiều hơn nhu cầu lưu thông.Trong trường hợp này, ứng dụng có thể giảm số nút backend để tiết kiệm tài
Trang 40nguyên Quan sát độ dài của queue và điều chỉnh số nút phù hợp, ứng dụng có thể
mở rộng một cách hiệu quả và trôi chảy