1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tìm hiểu tổng quan về dịch vụ Cloud-computing và nền tảng Windows Azure Platform

93 1,1K 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 93
Dung lượng 2,33 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Các nhiệm vụ cụ thể của ĐATN - Tìm hiểu về cloud-computing, định nghĩa, các loại hình dịch vụ, các ưu nhược điểm cũng như thách thức của kiểu hình dịch vụ này - Tìm hiểu về nền tảng Wind

Trang 1

PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP

1 Thông tin về sinh viên

Họ và tên sinh viên: Mai Văn Quân

Đồ án tốt nghiệp được thực hiện tại:

Thời gian làm ĐATN: Từ ngày 1 / 3 /2010 đến 29 / 5 /2010

2 Mục đích nội dung của ĐATN

Tìm hiểu tổng quan về dịch vụ Cloud-computing và nền tảng Windows Azure Platform

3 Các nhiệm vụ cụ thể của ĐATN

- Tìm hiểu về cloud-computing, định nghĩa, các loại hình dịch vụ, các ưu nhược điểm cũng như thách thức của kiểu hình dịch vụ này

- Tìm hiểu về nền tảng Windows Azure Platform, kiến trúc, chức năng của các thành phần trong nền tảng này cũng như một số use cases quan trọng

- Tìm hiểu về lập trình trên nền tảng Windows Azure Platform

4 Lời cam đoan của sinh viên:

Tôi – Mai Văn Quân - cam kết ĐATN là công trình nghiên cứu của bản thân tôi dưới sự hướng

dẫn của Tiến sĩ Nguyễn Hữu Đức

Các kết quả nêu trong ĐATN là trung thực, không phải là sao chép toàn văn của bất kỳ côngtrình nào khác

Hà Nội, ngày tháng năm

Tác giả ĐATN

Mai Văn Quân

5 Xác nhận của giáo viên hướng dẫn về mức độ hoàn thành của ĐATN và cho phép bảo vệ:

Hà Nội, ngày tháng năm

Giáo viên hướng dẫn

Tiến sĩ Nguyễn Hữu Đức

Trang 2

Mục lục

Mục lục 1

Lời nói đầu – Lý do chọn đề tài: 8

Lời cảm ơn: 9

Phần 1: Tổng quan về Cloud Computing 10

1.1 Định nghĩa cloud computing – điện toán đám mây 10

1.2 Các đặc tính của điện toán đám mây 11

1.3 Tại sao lại chọn cloud –computing 17

1.4 Các nền tảng Cloud computing phổ biến : 19

1.4.1 Amazon EC2 20

1.4.2 Google App Engine 20

1.4.3 Microsoft Windows Azure: 21

Phần 2: Windows Azure Platform: 22

2.1.Kiến trúc Windows Azure Platform : 22

2.1.1Hệ điều hành Windows Azure : 22

2.1.2 SQL Azure: 24

2.1.3 NET Services – AppFabric 25

2.1 Windows Azure: 26

2.1.1Compute Service 29

Trang 3

2.3 SQL Azure 77

Các hạn chế đối với SQL Azure: 80

Kết nối dữ liệu trên SQL Azure 81

Phần 3: Windows Azure Platform Development 85

Tổng kết: 90

Trang 4

Danh mục các hình vẽ, bảng biểu

Hình 1.1: Giới thiệu về cloud computing 10

Hình 1.2: Các kiểu hình dịch vụ đối với Cloud computing 13

Bảng 1.3: Lợi ích và thách thức đối với IaaS 14

Bảng 1.4: Lợi ích và thách thức đối với PaaS 14

Bảng 1.4 Lợi ích và thách thức đối với SaaS 15

Bảng 1.5 So sánh giữa Cloud computing và grid computing 17

Hình 1.6: Mối quan tâm đối với cloud computing 19

Hình 2.1 Cấu trúc cơ bản của Windows Azure Platform 22

Hình 2.2: Cấu trúc của hệ quản trị cơ sở dữ liệu SQL Azure 25

Hình 2.3 Vai trò của Fabric Controller trong Windows Azure 26

Bảng 2.4: Đặc tính 3 kiểu lưu trữ trong Windows Azure Storage 28

Hình 2.6: Kiến trúc của Windows Azure Storage 32

Hình 2.7 Kiến trúc của dịch vụ Blob 33

Hình 2.8: Minh hoạ về việc upload và commit các Block 36

Hình 2.9 Các kịch bản khi upload block 39

Hình 2.11 Kiến trúc dịch vụ Table 47

Hình 2.12 Minh hoạ về việc phân vùng Table theo PartitionKey 49

Bảng 2.12 Các loại dữ liệu mà dịch vụ Table hỗ trợ 50

Hình 2.13 Các thao tác trên Bảng bằng ADO.NET Data Service và HTTP Verb 52

Trang 5

Hình 2.18: Mô hình Enterprise Service Bus 64

Hình 2.19 Kiến trúc Relay Service 65

Hình 2.20: Kiến trúc Service bus 66

Hình 2.21: Lược đồ tích hợp Service Bus với Access Control Service 67

Bảng 2.22 Các kiểu truyền Message trong Service Bus 70

Hình 2.23 Lược đồ domain name của Service Bus 71

Hình 2.24 Quá trình giao tiếp client-service thông qua Relay Service 73

Hình 2.25: Hoạt động của Message Buffer 75

Hình 2.25: Khởi tạo kết nối trực tiếp giữa client và Service 76

Hình 2.26: Kiến trúc mức cao của SQL Azure 77

Hình 2.27: Minh hoạ hoạt động của SQL Azure Fabric khi xảy ra lỗi 79

Bảng 2.28: Các tính năng CSDL mà SQL Azure hỗ trợ và không hỗ trợ 80

Bảng 2.29: Các tính năng quản trị mà SQL Azure hỗ trợ và không hỗ trợ 81

Hình 2.30: Kiến trúc Code-near connectivity 82

Hình 2.31: Kiến trúc code-far connectivity 83

Hình 3.1: Khởi tạo Development Storage 85

Hình 3.2: Khởi tạo Development Storage hoàn tất 86

Hình 3.3 Development Storage UI 86

Hình 3.4 Các template trong Visual Studio sau khi cài Windows Azure SDK 87

Hình 3.5 Development Fabric UI 88

Danh mục các từ viết tắt và thuật ngữ

Từ viết tắt và thuật ngữ Ý nghĩa

Trang 6

NIST National Instute Standard and Technology

Trong báo cáo này, có nhiều thuật ngữ tiếng Anh không có thuật ngữ tiếng Việt tương đương, chúng sẽ được giữ nguyên sau khi đã có giải thích về ý nghĩa

Trang 8

Lời nói đầu – Lý do chọn đề tài:

Trong vòng vài năm trở lại đây, điện toán đám mây – cloud computing đã và đang trở thành một trong những thuật ngữ được nhắc đến nhiều nhất trong ngành công nghệ thông tin Điện toán đám mây được hứa hẹn là giải pháp giải quyết được nhiều vấn đề như độ sẵn sàng (availability), khả năng co giãn (scalability), chi phí (cost), điện năng tiêu thụ (power consumption),… Tuy nhiên, hiểu rõ hơn về các khái niệm của cloud computing, các đặc tính, các ưu điểm, nhược điểm cũng như các thách thức đối với công nghệ để có thể khai thác, triển khai khi cần thiết lại là một việc còn chưa được quan tâm đúng mức

Đề tài này nhằm làm rõ phần nào các khía cạnh của cloud-computing, cũng như nghiên cứu sâu hơn về một nền tảng cloud-computing cụ thể Báo cáo sẽ cố gắng đưa ra các định nghĩa về cloud computing, các đánh giá khách quan về ưu nhược điểm cũng nhưtương lai của công nghệ này Đồng thời, báo cáo cũng chọn nền tảng Windows Azure Platform để đào sâu nghiên cứu, vì đây là một nền tảng có nhiều ưu điểm, lại thân thiện với các nhà phát triển và sử dụng nhiều công cụ sẵn có

Bố cục của báo cáo bao gồm:

Phần 1: Tổng quan về cloud computing, các khái niệm, định nghĩa, các ưu nhược điểm của các loại hình dịch vụ trong cloud computing, các nền tảng cloud computing phổ biếnPhần 2: Đi sâu về nghiên cứu về nền tảng Windows Azure Platform, bao gồm nghiên cứu

về cơ sở hạ tầng – infrastructure, về cấu trúc – architect, một số use cases và API lập trình

Phần 3: Giới thiệu về môi trường lập trình cho Windows Azure Platform

Tên của đề tài đồ án này là “Tìm hiểu về điện toán đám mây và nền tảng WindowsAzure Platform”, mặc dù từ “Platform” có nghĩa nền tảng nhưng để tránh nhầm lẫn với

“nền tảng hệ điều hành Windows Azure” (một thành phần của Windows Azure Plaform, nên vẫn giữ từ “nền tảng” trong tiêu đề

Trang 9

Lời cảm ơn:

Để có thể tìm hiểu về một nền tảng còn rất mới, với nhiều yêu cầu như: vừa phải tìm hiểu được nền tảng ở mức khái quát tổng thể, vừa không để sót chi tiết, vừa đánh giá được những điểm mạnh, vừa biết được những điểm yếu,… là một công việc có nhiều thử thách Em đã không thể hoàn thành đồ án này nếu thiếu sự hướng dẫn, chỉ bảo tận tình vànhững định hướng, lời khuyên hữu ích từ thầy giáo hướng dẫn, Tiến Sĩ Nguyễn Hữu Đức Em xin gửi lời cảm ơn chân thành đến Thầy vì sự giúp đỡ quý báu của Thầy trong suốt thời gian qua

Do thời gian thực hiện đồ án là ngắn và do những hạn chế của bản thân, đồ án không thể tránh khỏi những thiếu sót về mặt nội dung, câu chữ Rất mong nhận được sự phản biện, góp ý và phê bình của các thầy cô và các bạn

Trang 10

Phần 1: Tổng quan về Cloud Computing

Lịch sử phát triển hơn 30 năm của ngành công nghệ phần mềm tuy chưa phải là dài, nhưng đã chứng kiến những cuộc cách mạng mang tính nhảy vọt Một trong những thay đổi mang tính quyết định và có ý nghĩa nhiều nhất là sự thay đổi của kiến trúc phần mềm (software architect) Có thể kể đến việc chuyển từ cấu trúc Mainframe sang kiến trúc Client-server những năm cuối thập kỉ 80 của thế kỉ 20

Và đến những năm đầu của thập niên 2010 này, chúng ta lại chứng kiến một cuộc cách mạng nữa khi ngành công nghiệp phần mềm đang từng bước chuyển mình sang một kiến trúc mới: Cloud computing – điện toán đám mây

1.1 Định nghĩa cloud computing – điện toán đám mây

Hình 1.1: Giới thiệu về cloud computing.

Trang 11

Source: http://csrc.nist.gov/groups/SNS/cloud-computing/index.html

Định nghĩa trên đã nêu ra những đặc tính cơ bản nhất của điện toán đám mây, sẽ được trình bày rõ hơn trong phần dưới đây:

1.2 Các đặc tính của điện toán đám mây

Cloud computing – điện toán đám mây liệu có đặc tính gì liên quan đến “đám mây”? Câutrả lời là không “Cloud” hoàn toàn mang nghĩa marketing

5 đặc tính cơ bản (Essential characteristics):

On-demand self-service – Tự phục vụ theo nhu cầu

Khách hàng có thể tự tăng cường năng lực tính toán, ví dụ như thời gian server hay không gian lưu trữ trên network, một cách hoàn toàn tự động dựa theo nhu cầu mà không cần phải thương lượng với nhà cung cấp dịch vụ Đặc tính này thường được biết đến với tên gọi Pay-as-you-go

Broad network access- Truy cập thông qua mạng băng thông rộng.

Truy cập mạng băng rộng Khả năng tính toán được cung cấp thong qua network

và được truy cập thông qua một cơ cấu chuẩn, mà có thể dung bằng nhiều nền tảng client khác nhau (như mobile phones, laptops, và PDA)

Resource pooling – Quay vòng tài nguyên

Tài nguyên điện toán của nhà cung cấp được quay vòng để phục vụ cho nhiều khách hàng sử dụng một mô hình multi-tenant, với các tài nguyên thực và ảo hóa khác nhau được cấp phát và tái cấp phát một cách động (dynamically) tùy thuộc vào yêu cầu của khác hàng Không phụ thuộc vị trí … khách hàng về tổng quát không có quyền hay

Trang 12

thậm chí là không có hiểu biết về vị trí chính xác của các tài nguyên được cung cấp nhưng có thể xác định vị trí của các tài nguyên cấp cao hơn (ví dụ như nước, bang,

datacenter) Các tài nguyên bao gồm không gian lưu trữ, tính toán, bộ nhớ, băng thông mạng và các máy ảo

Rapid elasticity - Co giãn nhanh

Khả năng tính toán có thể được cung cấp một cách nhanh chóng và co giãn, trong một số trường hơp là tự động, để có thể giãn ra hoặc co vào phụ thuộc vào nhu cầu người dùng Đối với khách hàng, tài nguyên hiện có được coi như như vô hạn và có thể mua vớibất kì số lượng nào vào bất kì thời gian nào

Measured Service

Các hệ thống cloud tự động điều khiển và tối ưu hóa tài nguyên sử dụng bằng cáchtrừu tượng hóa tương ứng với kiểu dịch vụ (lưu trữ, khả năng xử lý, băng thông, và số người dùng active) Tài nguyên sử dụng có thể được giám sát, điều khiển và báo cáo một cách trong suốt cho cả nhà cung cấp và khách hàng của dịch vụ đã dùng

5 đặc tính ở trên do NIST đưa ra Một số tài liệu đưa thêm đặc tính không phụ thuộc vào địa điểm – Location Independence Điều này có thể hiểu như có thể sử dụng các dịch vụ của cloud computing từ mọi nơi Tuy nhiên, đặc tính này có thể coi như đồngnhất với đặc tính Broadband network access nên không được xét đến trong báo cáo này

3 mẫu hình dịch vụ (3 service model)

3 mẫu hình dịch vụ cơ bản mà cloud computing đang được triển khai là

Infrastucture as a Service (IssA), Platform as a Service (PaaS) và Software as a Service (SaaS)

Trang 13

Hình 1.2: Các kiểu hình dịch vụ đối với Cloud computing

On-Premises:

Ứng dụng chạy hoàn toàn trên hệ thống của doanh nghiệp Đây là kiểu dịch vụ phổ biến hiện nay Doanh nghiệp quản lý hoàn toàn về hạ tầng mạng, hệ thống lưu trữ, máy chủ,ảo hoá, hệ điều hành, phần mềm tầng giữa, các lớp runtime, dữ liệu và ứng dụng Trong phần còn lại của báo cáo này, các ứng dụng chạy trên hệ thống doanh nghiệpnhư thế này sẽ được gọi chung là các ứng dụng on-premises

Các ứng dụng/dịch vụ On-premises được hiểu như các ứng dụng và dịch vụ chạy trên nền tảng cơ sở hạ tầng của doanh nghiệp, chứ không phải trên cloud Trong phần còn lại của báo cáo này, khái niệm on-premises sẽ được dùng để chỉ các ứng dụng, dịch vụ như vậy.

Cung cấp dịch vụ cơ sở hạ tầng (Infrastructure as as Service):

Khách hàng chỉ quản lý từ phần mềm tầng giữa – middeware trở lên, còn lại các tầng từ hệ điều hành trở xuống do nhà cung cấp dịch vụ quản lý Các dịch vụ dạng IaaS hiện có:

Computers (Amazon EC2, Rackspace, GoGrid )

Storage (Amazon S3, MobileMe, Google Drive )

Trang 14

Elasticity (Rightscale…)

Bandwidth (Limelight, Amazon CloudFront…)

- Hệ thống được quản lý bởi SLA

giảm bớt được các lỗ thủng

- Thu nhập cao hơn trên tài nguyên

- Giảm chi phí do:

+ Ít phần cứng hơn

+Giảm bớt chi phí không gian

+Tăng tính tự động hoá và giảm bớt

sự can thiệp của các nhà quản trị

+ Giảm bớt tiêu thụ năng lượng

- Khả năng đạt được tiêu thụ theo yêu

cầu – consumption on demand

- Tính di động - portability của các ứng dụng

- Sự hoàn thiện của các công cụ quản

lý hệ thống

- Tích hợp qua giới hạn của Cloud

- Các vấn đề về bảo mật bên trong

Bảng 1.3: Lợi ích và thách thức đối với IaaS

Cung cấp dịch vụ cơ sở hạ tầng (Platform as a Service):

Khách hàng chỉ quản lý ứng dụng và dữ liệu của mình, các tầng phía dưới, từ tầng runtime trở xuống do nhà cung cấp dịch vụ quản lý

Các dịch vụ dạng PaaS hiện có:

Salesforce.com, Apprenda SaaSGrid, Google App Engine, Microsoft Azure, Appistry, Talis Platform

- Pay-as-you-go đối với môi trường

phát triển, test và kinh doanh

- Bị trói với nhà cung cấp

- Mở rộng mẫu hình bảo mật với nhà cung cấp

- Khả năng kết nối

- Sự tin cậy đối với SLA của bên thứ 3

Trang 15

Google Apps, Zoho, Acrobat.com, iWork.com, Kashflow, FreeAgent, WordPress.com, MobileMe, Salesforce.com

- Tốc độ

- Giảm chi phí ban đầu, có khả năng

giảm chi phí toàn bộ (life-time cost

- Chuyển một phần/tất cả trách nhiệm

hỗ trợ

- Loại bỏ các nguy cơ về giấy phép

- Loại bỏ nguy cơ về tương thích

phiên bản

- Giảm ảnh hưởng của phần cứng

- Yêu cầu mô hình bảo mật với nhà cung cấp (sự riêng tư và quyển sở hữu dữ liệu)

- Điều hành và quản lý chi phí

- Đồng bộ giữa client và vendor migration

- Hỗ trợ người dùng cuối tích hợp

- Khả năng co giãn

Bảng 1.4 Lợi ích và thách thức đối với SaaS

4 mẫu đóng gói (4 deployment models)

Private cloud

Cloud riêng: Kiến trúc đám mây được điều khiển bởi riêng một tổ chức Nó có thể được

quản lý bởi tổ chức hoặc một bên thứ ba và có thể tồn tại

Cloud mở: Kiến trúc đám mây được được công bố ra cộng đồng hoặc một nhóm các

doanh nghiệp lớn và do một tổ chức cung cấp dịch vụ cloud sở hữu

Hybrid cloud

Cloud lai: Kiến trúc đám mây là một tổ hợp của 2 hay nhiều cloud (private, community

hoặc public), vẫn giữ những thực thể riêng biệt nhưng có cùng một công nghệ chuẩn hóa hay có chủ quyền, cho phép dữ liệu và tính di động của ứng dụng

Cloud computing và grid computing:

Trang 16

Cloud computing có thể coi là một xây dựng – implementation – đặc biệt của kiến trúc client-server Chính vì vậy, nó thường được đem so sánh với distributed computing và cụ thể hơn là grid computing Dưới đây sẽ là so sánh chi tiết về 2 kiến trúc này:

Cloud computing và grid computing đều “co giãn” Khả năng co giãn đạt được bằng việc cân bằng tải các instance của ứng dụng, chạy riêng rẽ trên nhiều hệ điều hành và kết nối với nhau thông qua các Web service CPU và băng thông network được cấp phát và thu hồi theo yêu cầu Khả năng lưu trữ của hệ thống tăng và giảm phụ thuộc vào số người dùng, số instance, và lượng dữ liệu chuyển đổi ở một thời điểm xác định

Cả 2 kiểu điện toán kết hợp multitenacy (sẽ được giải thích ở dưới) và multitask (đa nhiệm) , điều này có nghĩa là nhiều khách hàng có thể thực hiện các công việc khác nhau,truy cập một hay nhiều instance ứng dụng Chia sẻ tài nguyên giữa nhiều user hỗ trợ giảmchi phí cơ cấu hạ tầng và dung lượng tải lớn nhất (peak load capacity) Cloud và Grid computing cung cấp SLA – service-level agreement (thoả thuận mức ứng dụng) với đảm bảo thời gian sẵn sàng (uptime) lên đến 99% Nếu một dịch vụ dưới mức đảm bảo uptime

đó, khách hàng sẽ nhận được tiền bồi thường

Multi-tenacy là một nguyên lý cấu trúc, trong đó một ứng dụng chạy ở một instance phục

vụ đồng thời nhiều user (multitenant)

Đối với cloud computing, việc lưu trữ dữ liệu là rất mềm dẻo, có thể lưu trữ dữ liệu nhỏ 1byte, đến hàng terabytes Grid computing có thể lưu trữ được các đối tượng có kích thước 1 byte, nhưng điều này hoàn toàn không kinh tế Trong mạng lưới data, kích thước của dữ liệu phân tán phải lớn để đem lại lợi ích cao nhất

Grid computing Cloud Computing

Ý tưởng bên dưới Utility computing Utility Computing

Lợi ích chính Giải quyết các vấn đề tính

toán phức tạp Cung câp một môi trường co giãn chuẩn cho việc phát

triển, kiểm tra và triển khai các phần mềm lấy mạng làm

Trang 17

Bảng 1.5 So sánh giữa Cloud computing và grid computing

1.3 Tại sao lại chọn cloud –computing

Trước hết, phải nói rằng cloud-computing hoàn toàn không phải phải là một kiến trúc phần mềm mới Như Lawrence Ellison, chủ tịch tập đoàn Oracle từng phát biểu: Cloud computing chỉ là “những gì chúng ta đã làm” và “việc duy nhất cần thay đổi trong thời gian tới là quảng cáo” (nguồn: http://www.youtube.com/watch?v=0FacYAI6DY0 vàhttp://news.cnet.com/8301-13953_3-10052188-80.html ), có thể thấy qua việc minh họa các dạng dịch vụ cloud computing ở trên, như các dịch vụ máy chủ riêng ảo, hosting, webmail,… đều đã được nhắc đến từ lâu, trước khi thuật ngữ cloud-computing xuất hiện Nhiều người còn cho rằng, cloud computing là một thuật ngữ mang tính marketing hơn làmột xu hướng thật sự Đây còn là vấn đề gây tranh cãi

Tuy nhiên, ko thể phủ nhận cloud-computing đã thật sự hiện hữu và đem lại nhữnglợi ích thật sự cho ngành công nghiệp phần mềm và người dùng Có thể kể đến trường hợp của The New York Times, đã xử lý thành công hàng terabytes (nghìn tỷ byte) dữ liệuvới hàng trăm “compute units” của Amazon EC2 (sẽ được trình bày dưới đây) chỉ trong 36h Nếu không phải là cloud computing, có thể đã mất đến hàng tuần hoặc hàng tháng

để xử lý toàn bộ dữ liệu này, với chi phí cao hơn nhiều

Trong vài năm trở lại đây, với sự tham gia của các tập đoàn phần mềm lớn như Microsoft, Google, hay Amazon, cloud computing đã có những bước tiến mạnh mẽ

Đầu tiên, đó là việc cung cấp một nền tảng lập trình hợp nhất Điều này cho phép các nhà phát triển có thể nhanh chóng xây dựng ứng dụng đám mây trên nền tảng mà công ty cung cấp, với những cấu trúc và API được thiết kế dành riêng cho cloud-

computing Thứ hai, một công cụ quản lý hợp nhất, cho phép khách hàng sử dụng computing có thể tuỳ biến dịch vụ cho phù hợp với nhu cầu của mình một cách đơn giản

cloud-và dễ dàng Những điều này khiến cloud-computing có thể trở thành một xu hướng nổi bật trong thời gian tới

Lợi ích của Cloud-computing

Hãy tưởng tượng một công ty với khoảng 100 nhân viên cần sử dụng các hệ thống phần mềm văn phòng cũng như nghiệp vụ Để hệ thống này có thể là việc một cách hiệu quả, chi phí bỏ ra là không nhỏ: Chi phí mua phần cứng (máy chủ, máy tính cá nhân cho từng nhân viên, các thiết bị mạng), phần mềm (hệ điều hành, các phần mềm văn phòng vànghiệp vụ), chi phí nhân công (thuê người lắp đặt, cài đặt, quản trị, bảo trì hệ thống) Chi

Trang 18

phí này là không nhỏ và khiến nhiều công ty gặp khó khăn trong việc triển khai tin học hóa doanh nghiệp

Ngoài ra, có thể trong hoạt động của doanh nghiệp, có những lúc tải của hệ thống vượt qua năng lực hiện có Để phục vụ điều này thì doanh nghiệp buộc phải nâng cấp hệ thống của mình, thêm máy chủ, cải tiến phần mềm Chi phí này là rất lớn Nhưng sau khi nâng cấp hệ thống, có những lúc tải lại xuống thấp, khiến cho năng lực hệ thống trở nên lãng phí

Với Cloud Computing, những vấn đề này được giải quyết một cách căn bản:

- Không cần hệ thống máy chủ và hệ thống mạng nội bộ trong công ty, chỉ cần các máy client chi phí thấp được kết nối mạng Internet

- Giảm bớt chi phí phần mềm vì không cần các phần mềm nghiệp vụ cài riêng Có thể chỉ cần một hệ điều hành và một trình duyệt để làm việc

- Giảm bớt chi phí nhân công vì không cần quản trị hệ thống

- Giảm bớt chi phí điện năng lãng phí(Go Green)

- Linh hoạt và mềm dẻo khi có thay đổi về tải Khi cần tải nặng, hệ thống có thể tự tăng khả năng xử lý của mình lên mà không cần can thiệp, và cũng tự động giảm năng lực xử lý của mình khi tải thấp

Hạn chế của Cloud computing

Tuy nhiên, cloud computing không phải là giải pháp toàn diện và có thể áp dụng cho mọi trường hợp phần mềm Nói cách khác, cloud computing sẽ không hoàn toàn thay thế các giải pháp dịch vụ phần mềm hiện có:

- Trước hết, dữ liệu của doanh nghiệp, cá nhân được upload lên trên cloud Điều nàyđồng nghĩa với doanh nghiệp, cá nhân phải tin tưởng vào nhà cung cấp dịch vụ

Trang 19

liệu) Nếu người dùng và trung tâm dữ liệu ở xa nhau, thì sẽ dẫn đến hạn chế trongtốc độ truy xuất và tăng độ trễ

Để giải quyết vấn đề này, một số nhà cung cấp đưa ra giải phái CDN – Content Delivery Network, cho phép lưu trữ các dữ liệu mà người dùng thường xuyên truy cập ở một trung tâm dữ liệu gần với họ, nhằm tăng tốc độ truy xuất và giảm độ trễ Ví dụ với Amazon S3 và dịch vụ Blob của Windows Azure Storage

- Ngoài ra, bảo mật là vấn đề rất lớn Nhà cung cấp dịch vụ cam kết bằng hợp đồng, nhưng đối với một số khách hàng bảo mật chỉ có thể đạt được mức độ cần thiết khi

họ toàn quyền kiểm soát dữ liệu (cả về phần cứng và phần mềm – vật lý và logic)

và áp dụng các chính sách phù hợp

Trong đó, bảo mật vẫn là mối quan tâm lớn nhất, theo khảo sát của InformationWeek:

Hình 1.6: Mối quan tâm đối với cloud computing

1.4 Các nền tảng Cloud computing phổ biến :

Như đã nói ở trên, Cloud computing đã và đang trở thành một xu hướng nổi bật trong ngành công nghệ phần mềm và nhận được sự hậu thuẫn mạnh mẽ từ những công ty phần mềm hàng đầu Tuy nhiên, trong khuôn khổ của đề tài này, em chỉ đề cập đến 3 nền tảng được sử dụng phổ biến nhất (đúng hơn là có khả năng phát triển lớn nhất trong tương lai)

Trang 20

1.4.1 Amazon EC2

Website: http://aws.amazon.com/ec2/

EC2 là từ viết tắt của Elastic Cloud Computing Đây là dịch vụ cung cấp khả năng tính toán tuỳ biến trên cloud Để lưu trữ dữ liệu, Amazon cung cấp song song dịch vụ S3 (Simple Storage Service)

Cơ sở của EC2 là các máy ảo mà Amazon gọi là AMI – Amazon Machine Images, chứa một hệ điều hành, các ứng dụng và dữ liệu Khách hàng có thể quản lý bao nhiêu instancecủa mỗi AMI chạy vào mỗi thời điểm Amazon cung cấp 3 lựa chọn cho việc tạo các AMI này: Standard, High-Memory và High-CPU, với kích cỡ từ 1 nhân ảo chạy trên nền 32-bit, cho đến 8 nhân ảo chạy trên nền 64bit Cụ thể:

Standard: dành cho các ứng dụng tổng quát

High-Memory Instances: Dành cho các ứng dụng yêu cầu nhiều bộ nhớ, như các Web

Server

High-CPU: dành cho các ứng dụng cần nhiều tài nguyên CPU hơn RAM, thích hợp với

các ứng dụng yêu cầu tính toán nặng

EC2 hỗ trợ các ngôn ngữ sau:

-Java

-PHP

-Ruby

-Các ngôn ngữ trên nền tảng Microsoft NET

1.4.2 Google App Engine

Website: http://code.google.com/appengine/

Google App Engine là giải pháp chạy ứng dụng trên cơ cấu hạ tầng của Google,

Trang 21

- Python 2.5.2 (phiên bản 2.6 chưa được hỗ trợ, phiên bản 3 đang được cân nhắc), chạy trên nền Python Runtime Environment Ứng dụng phải được viết hoàn toàn trên nền Python, các extensions viết trên nền C không được hỗ trợ

Google App Engine cũng cung cấp một môi trường Sandbox (tương tự như các máy ảo) và một hệ cơ sở dữ liệu Datastore Datastore không phải là CSDL quan hệ truyền thống mà thuộc dạng “schemeless”, với nền tảng lưu trữ là các thực thể - entity và thuộc tính – property Trong báo cáo này, chúng ta sẽ thấy Datastore tương tự như Table

service của Windows Azure Storage Phiên bản App Engine Business dành cho khách hàng lớn sẽ hỗ trợ BigTable, một hệ quản trị cơ sở riêng của Google

Google App Engine cho phép sử dụng các tài khoản Google để xác thực các dịch

vụ, đồng thời có thể sử dụng các công cụ Google khác trong dịch vụ của mình

1.4.3 Microsoft Windows Azure:

Website: http://windowsazure.com

Lý do chọn Windows Azure làm nền tảng nghiên cứu của đề tài này:

Windows Azure là giải pháp cloud computing được đầu tư một cách nghiêm túc nhằm thương mại hóa Microsoft đã xây dựng 16 data centers trên khắp thế giới và vẫn đang tiếp tục xây dựng thêm Điều này đảm bảo cho tương lai của Windows Azure, ít nhất là trong thời gian tới

Windows Azure được xây dựng trên những nền tảng rất quen thuộc của Microsoft:Windows Server 2008 với Hyper-V, SQL Server 2008 và NET Framework Các ứng dụng hiện nay (đặc biệt là các ứng dụng web ASP.NET và dịch vụ web WCF – WindowsCommunication Framework) có thể chạy trên nền Windows Azure mà hầu như không phải sửa đổi hoặc chỉ phải sửa đổi rất ít Điều này tạo thuận lợi rất lớn cho các nhà phát triển cũng như các công ty khi muốn triển khai ứng dụng của mình trên Windows Azure

Chính vì những lý do như vậy, phần 2, phần trọng tâm của đồ án này sẽ đi sâu vào nghiên cứu kiến trúc của Windows Azure Platform dưới góc độ lập trình để có cái nhìn sâu sắc và chi tiết hơn về nền tảng này

Một trong những nhược điểm của Windows Azure Platform hiện nay là tài khoản miễn phí dành cho nhà phát triển đã ngừng cung cấp Các nhà phát triển buộc phải mua các gói dịch vụ nếu như muốn tiếp tục làm việc với nền tảng này Điều này gây nhiều khókhăn trong việc thử nghiệm ứng dụng demo, nhất là Microsoft không cho phép mua dịch

vụ từ Việt Nam!

Trang 22

Phần 2: Windows Azure Platform:

Windows Azue Platform là nền tảng phục vụ cho điện toán đám mây của Microsoft Đây

là nền tảng đầu cuối (end-to-end) cho việc phát triển và triển khai các dịch vụ đám mây Mỗi thành phần của Windows Azure Platform được thiết kế phục vụ một chức năng cụ thể đối với các dịch vụ cloud Trong phần này sẽ trình bày về kiến trúc mức cao của nền tảng Windows Azure:

2.1.Kiến trúc Windows Azure Platform :

Windows Azure Platform bao gồm 3 thành phần chính: Windows Azure, SQL Azure và App Fabric Hình dưới đây minh họa 4 thành phần của Windows Azure:

Hình 2.1 Cấu trúc cơ bản của Windows Azure Platform

2.1.1Hệ điều hành Windows Azure :

Windows Azure là hệ điều hành nằm bên dưới, chịu trách nhiệm chạy các ứng dụng

Trang 23

dựng và kiểm tra các service trước khi chúng được triển khai tới Windows Azure trên cloud 3 dịch vụ chủ chốt của Windows Azure bao gồm:

Compute:

Dịch vụ tính toán cung cấp khả năng hosting các dịch vụ trên nền tảng Windows Server

2008 64-bit với hỗ trợ Hyper-V Nền tảng này được ảo hóa và được thiết kế để mở rộng động (dynamically scalable) theo yêu cầu Nền tảng này chạy trên Internet Information Server (IIS) 7 cho các ứng dụng Web ASP.NET Vào thời điểm này, hệ điều hành

Windows phía dưới và các thành phần cơ sở hạ tầng như IIS không xuất hiện trực tiếp đốivới các nhà phát triển Sự trừu tượng hóa ở mức hệ điều hành, các nhà phát triển có thể viết các dịch vụ managed (nền NET) unmanaged (native code truyền thống) để chạy trênWindows Azure mà không cần quan tâm về cơ sở hạ tầng của hệ điều hành phía dưới

Storage:

Có 3 kiểu lưu trữ được hỗ trợ trong Windows Azure: table, blob và queue Các kiểu lưu trữ này hỗ trợ truy cập trực tiếp dựa trên các API của REST Windows Azure table khôngphải là kiểu bảng cơ sở dữ liệu quan hệ truyền thống như bảng trong SQL Server Thay vào đó, chúng cung cấp khả năng lưu trữ dữ liệu có kiến trúc, với mô hình dữ liệu độc lập, thường được gọi là mô hình thực thể entity Bảng được thiết kế để lưu trữ hàng terabyte dữ liệu có độ sẵn sang cao, ví dụ như thông tin người dùng trên một site thương mại lớn Windows Azure blob được thiết kế để lưu trữ các tập hợp dữ liệu nhị phân – binary lớn như video, ảnh, nhạc trên đám mây Kích thước lớn nhất cho mỗi blob là 50GB Windows Azure queues là các kênh giao tiếp không đồng bộ cho việc kết nối giữacác dịch vụ và ứng dụng, không chỉ trong Windows Azure mà còn cho cả các ứng dụng on-premises Cũng có thể sử dụng queues để giao tiếp giữa các instance của Windows Azure role Kiến trúc của queue được thiết kế để hỗ trợ số lượng không giới hạn các message, nhưng kích thước của mỗi message không được vượt quá 8KB Bất kì tài khoảnnào có thể truy cập đến lưu trữ có thể truy cập đến table, blob và queue

REST: Khái niệm REST được Roy Thomas phát minh trong luận văn tiến sĩ của mình

“Architectual Styles and the Design of Network-based Software Architectures” –

Representation State Transfer – REST là một cấu trúc giao diện cho các hệ thống triển khai và truy cập thông qua network Các entry point của hệ thống được trừu tượng hoá vào web resource Trong REST, mỗi tài nguyên có siêu dữ liệu và được định danh duy nhất bằng một URL Các thao tác trên tài nguyên cũng được mở thông qua URL, mỗi URL tương tác với tài nguyên trả về một đại diện, có thể là bất kì tài liệu hay đối tượng

Trang 24

nhị phân nào Ví dụ, các URL cho blob, queue và table đã trình bày ở trên đại diện REST URL cho các tài nguyên của kiểu lưu trữ đó Truy vấn các REST URL này trả về một đại diện thích hợp cho các tài nguyên, ví dụ như các file blob hay các queue message

Management:

Management services cung cấp cơ sở hạ tầng tự động và khả năng quản lý đối với các dịch vụ Windows Azure trên cloud Các khả năng này bao gồm việc tự động quản lý các máy ảo và các dịch vụ đã triển khai, cấu hình switch, bộ định tuyến truy cập (access router) và các bộ cân bằng tải (load-balancer) để duy trì trạng thái của dịch vụ mà người dùng đã định nghĩa Management services bao gồm một fabric controller chịu trách nhiệm bảo trì dịch vụ Fabric controller trừu tượng hóa cơ sở hạ tầng ảo hóa phía dưới đốivới các dịch vụ tính toán và lưu trữ Nó cũng hỗ trợ việc nâng cấp động các dịch vụ mà không gây ra bất kì downtime hay giảm tốc độ nào Dịch vụ quản lý của Windows Azure đồng thời hỗ trợ ghi lại file log cũng như tuỳ chọn dò vết – tracing và giám sát sử dụng dịch vụ

2.1.2 SQL Azure:

SQL Azure là một cơ sở dữ liệu quan hệ trên nền tảng Windows Azure Nó cung cấp các khả năng cơ bản của hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) như một dịch vụ, và nó được xây dựng trên nền tảng của SQL Server Trong phiên bản hiện tại các nhà phát triển có thể truy cập đến SQL Server dử dụng tabular data stream (TDS), là cơ cấu

chuyển để truy cập các instance SQL Server on-premises thong qua các SQL client SQL client có thể là bất kì client nào, như ADO.NET, LINQ, ODBC, JDBC, ADO.NET EntityFramework, hay ADO.NET Data Services

ADO.NET Data Services là một nền tảng độc lập để truy cập các dịch vụ dữ liệu nền web Nó có thể dùng không chỉ cho các dịch dụ dữ liệu nền web mà còn cả các dịch vụ

dữ liệu on-premises như SQL Server 2008

Trang 25

Hình 2.2: Cấu trúc của hệ quản trị cơ sở dữ liệu SQL Azure

SQL Azure cung cấp các dịch vụ sau:

Lưu trữ dữ liệu quan hệ: Engine lưu trữ dữ liệu quan hệ là xương sống của SQL Azure,

dựa trên nền tảng SQL Server Thành phần này cung cấp các tính năng của SQL Server như bảng – table, chỉ mục – index, khung nhìn – view, stored procedure và trigger

Đồng bộ dữ liệu: Data Sync cung cấp sự đồng bộ và tập hợp của dữ liệu từ/đến SQL

Azure tới các thiết bị của doanh nghiệp, trạm làm việc, đối tác và khách hàng sử dụng Microsoft Sync Framework

Quản lý: Thành phần quản lý cung cấp khả năng cung cấp, đo đạc, tính toán, cân bằng tải,

vượt qua lỗi (failover) và bảo mật cho SQL Azure Dựa trên SLA, mỗi CSDL được lặp lại với trên 1 máy chủ chính và 2 máy chủ phụ Trong trường hợp xảy ra lỗi, việc chuyển đổi giữa các máy chủ chính và phụ được thực hiện tự động mà không xảy ra gián đoạn

Truy cập dữ liệu: thành phần truy cập dữ liệu định nghĩa các phương thức khác nhau của

việc truy cập dữ liệu SQL Azure thông qua lập trình Hiện tại, SQL Azure hỗ trợ Tabular Data Stream (TDS), bao gồm ADO.NET, Entity Framework, ADO.NET Data Services, ODBC, JDBC và LINQ Các nhà phát triển có thể truy cập SQL Azure trực tiếp từ các ứng dụng on-premises hoặc thông qua các dịch vụ cloud đã triển khai trên Windows Azure Có thể đặt cluster của dịch vụ tính toán Windows Azure và instance của SQL Azure cùng nhau để tăng tốc độ truy cập dữ liệu

Trang 26

2.1.3 NET Services – AppFabric

Các dịch vụ NET là engine tầng giữa (middleware engine) của nền tảng WindowsAzure cung cấp dịch vụ điều khiển truy cập (access control service) và service bus

AppFabric là một kiến trúc hướng dịch vụ (service-oriented architecture), giúp tạo các điều kiển truy cập liên hợp và phân phối message giữa các ứng dụng cloud và on-premises Có thể coi AppFabric là xương sống tích hợp của nền tảng Windows Azure, vì

nó cung cấp khả năng kết nối và truyền tải CSDL giữa các ứng dụng phân tán Nó cũng cung cấp khả năng tích hợp các ứng dụng và tiến trình kinh doanh không chỉ giữa các dịch vụ cloud mà còn giữa các dịch vụ cloud và các ứng dụng on-premises

Trong bản cập nhật 4/2009, Microsoft đã tách rời AppFabric ra khỏi NET

Services Trong phần còn lại của báo cáo này sẽ chỉ tập trung nói về AppFabric

2 dịch vụ cơ bản của AppFabric là:

Access Control: Access Control cung cấp việc điều khiển truy cập dựa trên các luật và

claims cho các ứng dụng phân tán Có thể định nghĩa các luật dựa trên claims và vai trò trên cloud để truy cập các dịch vụ cloud cũng như on-premises

Service Bus: Service Bus là một kiến trúc ESB – Enterprise Service Bus ở phạm vi

Internet, nhằm đảm bảo việc trao đổi message giữa các client và service

2.1 Windows Azure:

Windows Azure là một hệ điều hành quản lý cả các server và các dịch vụ

Windows Azure chạy trên các hệ điều hành Windows server 2008 R2 với hỗ trợ

Hyper-V Có thể coi Windows Azure là một hệ điều hành ảo chứa nhiều máy ảo chạy trên phần cứng có khả năng co giãn rất lớn nhưng đã được ảo hóa Sự ảo hóa giữa các dịch vụ nhân của Windows Azure và phần cứng được quản lý bởi Fabric Controller Fabric controller quản lý quá trình tự động hóa đầu cuối (end-to-end) của các dịch vụ Windows Azure, từ việc cung cấp phần cứng cho đến việc duy trì sự sẵn sàng của dịch vụ Hình 2.3 minh họavai trò của Fabric Controller trong kiến trúc Windows Azure:

Trang 27

Hình 2.3 Vai trò của Fabric Controller trong Windows Azure

Windows Azure được thiết kế để có độ sẵn sàng rất cao, cũng như khả năng co giãn rất lớn Trong hình trên, Fabric Controller đọc thông tin cấu hình của dịch vụ do dịch vụ cloud cung cấp và tương ứng tạo các máy chủ ảo cần thiết để triển khai dịch vụ

Sự triển khai các dịch vụ cloud và sinh các instance máy chủ ảo hoàn toàn trong suốt đối với nhà phát triển Nhà phát triển chỉ thấy trạng thái của việc triển khai dịch vụ cloud trênWindows Azure developer portal Một khi dịch dụ cloud đã được triển khai, nó được quản lý hoàn toàn bởi Windows Azure Nhà phát triển chỉ cần xác định trạng thái cuối cùng của dịch vụ cloud trong file cấu hình của nó, Windows Azure sẽ cung cấp phần cứng và phần mềm cần thiết để thực hiện điều đó Nói cách khác, các công việc triển khaikhả năng co giãn, độ sẵn sàng, cập nhật và cấu hình phần cứng được quản lý bởi

Trang 28

Services) và được thiết kế đặc biệt cho việc xử lý nền (background processing) Một dịch

vụ cloud trên Windows Azure bao gồm một Web role và/hoặc một Woker role cùng với các định nghĩa của dịch vụ

Dịch vụ lưu trữ trên Windows Azure hỗ trợ 3 kiểu dịch vụ: blob, queue và table, các kiểu lưu trữ này hỗ trợ truy cập cục bộ hay trực tiếp thông qua REST API Bảng dướiđây minh họa sự khác biệt giữa 3 kiểu lưu trữ này:

http://[Storage Account].table.core.windows.net/[Table

.com/en-us/library/dd135733.a

spx

http://msdn.microsoft.com/en-

us/library/dd179363.aspx

http://msdn.microsoft.com/en-us/library/dd179423.aspx

Bảng 2.4: Đặc tính 3 kiểu lưu trữ trong Windows Azure Storage

Kiến trúc của Windows Azure:

Trang 29

Hình 2.5: Kiến trúc tổng thể hệ điều hành Windows Azure

Có thể thấy các dịch vụ tính toán và lưu trữ là các dịch vụ độc lập với nhau trong

Windows Azure Web và Woker role chạy trong Compute Service, và các dịch vụ blob, queue, table chạy trên Storage service Fabric Controller trừu tượng hóa các thành phần của cơ sở hạ tầng phía dưới như máy chủ ảo, các thành phần mạng, DNS và các bộ cân bằng tải đối với Compute và Storage Khi một request từ Internet đến một ứng dụng Web role, nó thông qua bộ cân bằng tải tới Web role của Compute Service Nếu một request yêu cầu dịch vụ Storage, nó thông qua bộ cân bằng tải đến thành phàn của Storage

service thích hợp Ngay cả khi một Web hay Woker role cần phải giao tiếp với Storage

Trang 30

service, nó phải dùng cùng REST API mà các ứng dụng client khác sử dụng Cuối cùng, các dịch vụ Compute và Storage có thể được quản lý bởi Service Management API.

2.1.1Compute Service

Compute là một trong những dịch vụ cốt lõi của Windows Azure Nó cũng được gọi là Hosted Service trong thuật ngữ của Windows Azure portal Compute Service cung cấp khả năng phát triển và triển khai các dịch vụ cloud, với nền tảng phía dưới bao

gồm NET 3.5 SP1 Framework và IIS 7 chạy trên các máy chủ cài Windows Server 2008 64-bit Nhà phát cũng có thể xây dựng các ứng dụng native truyền thống

Mục đích của Compute Service là cung cấp khả năng chạy các ứng dụng phục vụ cùng lúc rất nhiều người dùng Điều này không thể đạt được nếu chỉ dùng các máy tính to

hơn – co giãn theo kiểu scale up Thay vào đó, Compute Service sử dụng cách tiếp cận

scale out, tức là sử dụng nhiều máy chủ chạy đồng thời với nhau

Một ứng dụng chạy trên Compute Service gồm có 2 thành phần cơ bản: Web role

và worker role

Web role:

Một web role là một website hay một web service có thể chạy trên môi trường IIS

7 Thông thường, nó sẽ là một ứng dụng web trên ASP.NET hoặc là một dịch vụ

Windows Communication Foundation (WCF) với các endpoint HTTP và/hoặc HTTPS

Hiện thời các giao thức kết nối vào (inbound protocol) được hỗ trợ là HTTP và HTTPS, và giao thức kết nối ra (outbound protocol) là bất kì socket TCP nào Giao thức kết nối ra UDP hiện chưa được hỗ trợ bởi các dịch vụ của Windows Azure.

Web role đồng thời hỗ trợ module mở rộng dạng FastCGI cho IIS 7.0 Điều này cho phép các nhà phát triển xây dựng các ứng dụng web sử dụng các ngôn ngữ thông dịch như PHP và ngôn ngữ native như C++ Windows Azure hỗ trợ thực thi dạng tin tưởng hoàn toàn (Full Trust), cho phép chạy các ứng dụng web FastCGI trong Windows

Trang 31

không giữ trạng thái – stateless Tất cả các thông tin gắn với người dùng phải được lưu vào Windows Azure storage hoặc trả lại người dùng.

Chú ý: Mặc dù Windows Azure hỗ trợ thực thi code native, code vẫn chỉ chạy với quyền người dùng, không phải quyền quản trị, vì vậy một số hàm Win32 API yêu cầu quyền quản trị sẽ không truy cập được

Woker role:

Worker role cung cấp khả năng chạy một tiến trình nền liên tục trên cloud Workerrole có thể mở các endpoint, cũng như gọi các giao tiếp bên ngoài Về nguyên tắc, Wokerrole giống như một web role, trừ việc nó không tương tác với IIS và cũng không có giao diện Một Woker role có thể giao tiếp với các dịch vụ queue, blob, và table của Windows Azure Một instance của Woker role chạy độc lập với instance của Web role, mặc dù chúng có thể là các phần khác nhau của cùng một dịch vụ Một Woker role chạy trên máy

ảo riêng biệt với web role trong cùng một service Trong một số dịch vụ Windows Azure,

có thể cần giao tiếp giữa một Web role và một Woker role Mặc dù cả Web và woker roleđều mở các endpoint cho giao tiếp, nhưng cách đơn giản và đáng tin cậy nhất là sử dụng Windows Azure queues

Fabric Controller:

Tất cả các ứng dụng Windows Azure và dữ liệu Windows Azure Storage được lưutrữ trên các trung tâm dữ liệu – data center của Microsoft Trong các trung tâm dữ liệu

này, tập hợp các máy chủ dành riêng cho Microsoft được tổ chức thành một fabric.

Windows Azure Fabric bao gồm một nhóm lớn máy tính, tất cả được quản lý bởi phần mềm fabric controller Fabric controller được sao lưu qua một nhóm từ 5-7 máy tính, và nó sở hữu tất cả các tài nguyên trong fabric: các máy tính, switch, các bộ câng bằng tải… Nó giao tiếp với một fabric agent trên mỗi máy tính, và vì vậy kiểm soát tất cảcác ứng dụng Windows Azure trong fabric (điều thú vị là fabric controller coi Windows Azure Storage là một ứng dụng, vì vậy nó không biết thông tin chi tiết về việc quản lý và sao lưu dữ liệu)

Fabric controller giám sát tất cả các ứng dụng đang chạy, quản lý các hệ điều hành, chịu trách nhiệm các công việc như cập nhật bản vá lỗi cho Windows Server chạy các máy ảo Windows Azure Nó cũng quyết định nơi các ứng dụng mới chạy, chọn các server vật lý để tối ưu hoá việc sử dụng phần cứng

Để thực hiện điều này, fabric controller phụ thuộc vào một file cấu hình được upload cùng với mỗi ứng dụng Windows Azure File này cung cấp một mô tả dựa trên

Trang 32

XMl những gì mà ứng dụng cần: bao nhiêu instance Web role, bao nhiêu instance Woker role,…Khi fabric controller nhận một ứng dụng mới, nó sử dụng file cấu hình này để xác định cần tạo bao nhiêu máy ảo Web role và Woker role.

Một khi đã tạo các máy ảo này, fabric controller chịu trách nhiệm giám sát chúng

Ví dụ, nếu một ứng dụng yêu cầu 5 web role instance và một trong số chúng bị lỗi, fabric controller sẽ tự động khởi tạo một instance mới

Trong phiên bản hiện thời, Fabric controller cung cấp 4 loại máy ảo dưới đây (Nhà phát triển có thể chọn loại máy ảo khi xây dựng ứng dụng thông qua Visual Studio)

- Small, CPU 1 nhân 1.6 GHz, 1.75 GB RAM, và 225 GB lưu trữ

- Medium, CPU 2 nhân 1.6Ghz, 3.5GB RAM, 490GB lưu trữ

- Larg, CPU 4 nhân 1.6Ghz, 7GB RAM, 1000GB lưu trữ

- Extra large, CPU 8 nhân 1.6Ghz, 14GB RAM, 2040GB lưu trữ

2.1.2 Storage Service

Windows Azure Storage service cho phép người dùng lưu trữ dữ liệu của ứng dụng trên cloud và truy cập đến nó từ bất kì đâu, bất kì lúc nào Kiến trúc mở của dịch vụ lưu trữ cho phép nhà phát triển thiết kế ứng dụng và dịch vụ để lưu trữ và lấy dữ liệu sử dụng REST APIs Mỗi kiểu lưu trữ trong dịch vụ Storage có một API lập trình REST độclập Hình dưới đây minh họa kiến trúc của dịch vụ lưu trữ:

Trang 33

Hình 2.6: Kiến trúc của Windows Azure Storage

Như hình trên, có thể thấy các kiểu lưu trữ đều có phạm vi ở cấp độ tài khoản điềunày có nghĩa khi người dùng mở một tài khoản lưu trữ, họ có thể truy cập đến tất cả các dịch vụ lưu trữ của Windows Azure

Blob Service:

Dịch vụ blob được thiết kế để lưu trữ các đối tượng dạng nhị phân lớn, vớ các siêu

dữ liệu kết hợp như tài liệu, ảnh, video, và file âm thanh Nhờ việc lưu trữ các blob ít nhất

3 lần và phân phối chung qua nhiều server, dịch vụ blob cung cấp khả năng lưu trữ co giãn và có độ sẵn sàng cao Nó cung cấp một API REST để lưu trữ các file đã được đặt tên cùng với siêu dữ liệu của chúng REST API của blob cung cấp tính năng kiểm tra độ thống nhất cho các thao tác đồng thời – concurrent operations

Các giới hạn và ràng buộc của Blob:

Trang 34

- Kích thước tối đa của mỗi block blob là 200GB và mỗi page blob là 1TB (có thể thay đổi trong tương lai)

- Có thể upload blob với kích thước bé hơn 64MB bằng một lệnh PUT đơn Blob cókích thước lớn hơn 64Gb phải upload dưới dạng tập hợp block, với mỗi block có kích thước không quá 4MB

- Dịch vụ Blob dành cho việc phát triển hỗ trợ kích thước blob tối đa 2GB

Kiến trúc của dịch vụ Blob:

Hình 2.7 Kiến trúc của dịch vụ Blob

Trang 35

Một container là một nhóm logic chứa một tập hợp blob Container có thể chứa siêu dữ liệu dưới dạng cặp tên-giá trị Có 2 kiểu container: kiểu public có thể được nhìn thấy bởi tất cả các user (Anomynous) cho mục đích chỉ đọc (read-only) mà không cần xác thực, và kiểu private, chỉ chủ của tài khoản mới có quyền truy cập Blob là kiểu lưu trữ duy nhất hỗ trợ truy cập theo chế độ public và private, kiểu dữ liệu queue và table chỉ

hỗ trợ kiểu truy cập private

Có thể truy cập đến một container bằng URI dưới đây:

<http|https>://<account name>.blob.core.windows.net/<container>

Trong đó <container> là tên của container cần truy cập Tển của container phải đảm bảo các ràng buộc dưới đây:

- Tên của container phải là duy nhất trong một tài khoản

- Tên của container phải bắt đầu bằng một chữ số hoặc một chữ cái

- Tên của container không được chứa kí tự đặc biệt nào ngoại trừ dấu gạch nối (-)

- Dấu gạch nối phải được theo sau bằng một chữ số hoặc chữ cái

- Tất cả các chữ cái trong tên phải là chữ thường

- Tên không được ít hơn 3 và nhiều hơn 63 chữ cái

Nếu tên của container hoặc URI vi phạm các quy tắc đặt tên, một mã trạng thái HTTP

400 (Bad request) sẽ được trả về từ server

Blobs:

Blobs, các thực thể thực sự của dịch vụ Blob, được lưu trữ trong các container Tên một blob phải là duy nhất trong phạm vi container chứa nó Một Blob có thể chứa siêu dữ liệudưới dạng các cặp tên – giá trị Access Control List chỉ được thiết lập ở cấp độ container, chính vì vậy, một container được set là public thì tất cả các blob trong nó đều là public

Có thể truy cập một blob sử dụng URI dưới đây:

<http|https>://<accountname>.blob.core.windows.net/<container>/<blob>

Trong đó <blob> là tên duy nhất của blob trong container Ví dụ, có thể tạo một blob có tên 201004301212-logs trong một container tên Logs, có thể truy cập đến nó thông qua URI sau:

<http|https>://delta76.blob.core.windows.net/logs/201004301212-logs.txt

Tên một blob không thể dài hơn 1024 kí tự Blob không hỗ trợ tạo cấu trúc thư mục để lưu trữ files, chỉ có thể lưu trữ file theo một cấu trúc “phẳng” Trong phần lớn các ứng

Trang 36

dụng, cấu trúc thư mục của file rất quan trọng cho việc truy cập dễ dàng Để đơn giản hóaviệc tạo cấu trúc thư mục ảo, có thể thêm một dấu ngăn cách vào tên file Ví dụ, có thể đặt tên một blob là 2010/04/30/1212-logs.txt Với lược đồ tên này, có thể thêm nhiều file vào cấu trúc thư mục ảo 2010/04/30

Blog API cung cấp khả năng lọc dựa trên dấu ngăn cách cho phép người dùng nhận về chỉ các file trong cấu trúc ảo cụ thể Ví dụ, có thể chỉ nhận các file log trong ngày 30/4 bằng cách chỉ rõ một dấu phân cách (delimiter) khi truy vấn các blob

Các kiểu blob:

Page blob:

Page Blob được giới thiệu trong phiên bản ngày 19/09/2009 của API cho dịch vụ lưu trữ Chúng được tối ưu hóa cho việc truy cập đọc/ghi tuần tự và cung cấp khả năng copy một chuỗi byte thành một blob Một page được đại diện bằng offset bắt đầu của nó tính từ vị trí bắt đầu của blob Ghi vào các page blob sẽ ngay lập tức có hiệu lực đối với dịch vụ blob Mỗi page có kích thước tối đa lên đến 1TB, và page blob tối ưu hóa cho cácứng dụng yêu cầu truy xuất đọc/ghi nhanh tới các dữ liệu dạng nhị phân như ảnh, video, tài liệu,… Windows Azure Storage Client API cung cấp 2 thao tác trên page block: Put Page và Get Page

Block Blob.

Như đã nói ở trên, nếu một file có kích thước lớn hơn 64MB, nó không thể upload lên dịch vụ Blob sử dụng hàm PUT Blob Phải chia blob này ra thành nhiều blocks liên tiếp nhau và sau đó upload nó dưới dạng các mảnh dữ liệu nhỏ hơn – blosck Mỗi Block

có thể có kích thước tối đa 4MB Một khi tất cả các block đã được upload lên, chúng có thể được chuyển thành blob Cần chú rằng không có URI nào để truy cập các block trong một blob, sau khi các block đã được chuyển thành blob thì chỉ có thể nhận một blob hoàn chỉnh Nói cách khác, chỉ có thể thực hiện thao tác GET ở cấp độ blob

Upload và commit các block là 2 thao tác riêng biệt Có thể upload các block theo bất cứ thứ tự nào, cũng có thể upload nhiều block đồng thời theo thứ tự ngẫu nhiên,

Trang 37

Hình 2.8: Minh hoạ về việc upload và commit các Block Các thao tác REST đối với block

Mỗi block được định danh bằng một Block ID, kích thước tối đa 64 byte, và có phạm

vi trong tên blob Vì vậy các blob khác nhau có thể có các block với cùng ID Block là không thể thay đổi – immutable Mỗi block có kích thước tối đa 4MB, và các block trongcùng một 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 sau:

- PUT Block: Upload một block cho một blob Chú ý rằng một block đã được upload thành công với thao tác PUT block không trở thành một phần của blob trừ khi nó được commit với thao tác PUT blocklist

Ví dụ về một PUT Block với một block có kích thước 4MB :

Trang 38

……… Block Data Contents ………

- PUT blocklist: commit một blob bằng cách xác định danh sách các block ID làm nên blob đó Các block xác định trong thao tác này phải được upload thành công bằng các thao tác PUT block trước đó Thứ tự của các block trong PUT block sẽ tạo nên phiên bản gốc của blob

Ví dụ về 1 REST cho PUT blocklist

PUT http://sally.blob.core.windows.net/movies/MOV1.avi

?comp=blocklist &timeout=120 HTTP/1.1 Content-Length: 161213 Authorization: SharedKey sally:

Cần chú ý rằng Block ID có thể coi như một thành phần siêu dữ liệu – metadata, có thể dùng để theo dõi mỗi block Một ví dụ của việc sử dụng block ID là dùng nó như giá trị hash của nội dung dữ liệu của block đó Bằng cách này, có thể kiểm tra độ toàn

Trang 39

- Tính liên tục: khi một block được upload, có thể kiểm tra xem nó có được upload thành công hay không và tiếp tục upload từ điểm đó, chứ không phải bắt đầu lại từđầu

- Upload song song: có thể upload song song các block để giảm thời gian của upload các blob rất lớn

- Upload không theo thứ tự: Có thể upload các block không theo thứ tự nào Chỉ cầnquan tâm đến thứ tự của các block khi thực hiện một lệnh PUT blocklist Danh sách của block trong lệnh PUT blocklist xác định thứ tự của các block hình thành nên phiên bản hoàn chỉnh của blob

- Kết hợp BlockID như siêu dữ liệu của mỗi Block: Khi upload một blob thông qua các block, các block ID cùng với kích thước của chúng được lưu trữ và có thể gọi sau này thông qua GetBlockList ứng dụng có thể coi các thông tin này là siêu dữ liệu có thể thiếp lập và kết hợp với mỗi block trong một blob đã lưu trữ Vì vậy, cóthể, có thể lưu trữ MD5 của nội dung block như blockID Sau đó nếu ứng dụng cần kiểm tra mã MD5 checksum cho

Dưới đây là 1 ví dụ về các lệnh PutBlock:

Trang 40

Hình 2.9 Các kịch bản khi upload block

Ví dụ minh họa ở trên đồng thời cũng giải thích ra các kịch bản có thể xảy ra trong

trường hợp upload các block:

- Upload các Block với cùng Block ID: Khi các block có cùng Block ID được upload cho cùng một blob, block được upload gần nhất gắn với ID đó sẽ được dùng để kết nối lại các block thành blob ban đầu Trong ví dụ ở trên, có 2 block với BlockID4 được upload và block upload sau sẽ được dùng

- Upload các block không theo thứ tự: Các block có thể upload theo một thứ tự khácvới blocklist

- Các block không dùng đến: Xa hơn nữa, một số block có thể không bao giờ được

Ngày đăng: 06/05/2015, 10:35

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Cloud computing – Wikipediahttp://en.wikipedia.org/wiki/Cloud_computing Link
[2] David Chappell - Introducing the Windows Azure Platform . 2009 http://go.microsoft.com/fwlink/?LinkId=158011 Link
[3] David Chappell - Introducing Windows Azure. 2009 http://go.microsoft.com/?linkid=9682907 Link
[4] Jai Haridas, Niranjan Nilakantan, Brad Calder - Windows Azure Table – Programming Table Storage . 2009http://go.microsoft.com/fwlink/?LinkId=153401 Link
[5] Brad Calder, Tony Wang, Shane Mainali, Jason Wu -Windows Azure Blob – Programming Blob Storage . 2009http://go.microsoft.com/fwlink/?LinkId=153400 Link
[6] Aaron Skonnard,Keith Brown - An Introduction to Windows Azure platform AppFabric for Developers . 2010http://download.microsoft.com/download/E/B/5/EB512F2E-7771-40A3-8025-0DC6D9429951/An%20Introduction%20to%20Windows%20Azure%20platform%20AppFabric%20for%20Developers.docx Link
[7] Keith Brown - A Developer’s Guide to Access Control for the Windows Azure platform AppFabric. 2009http://download.microsoft.com/download/E/5/8/E5870ED0-2A57-4970-B140-14815AD45CF6/A%20Developer%27s%20Guide%20to%20Access%20Control%20in%20Windows%20Azure%20platform%20AppFabric.docx Link
[8] Aaron Skonnard - A Developer’s Guide to Service Bus for the Windows Azure platform AppFabric. 2009http://download.microsoft.com/download/F/D/8/FD863D17-E85E-478C-B06F-6825D50EA103/A%20Developer%27s%20Guide%20to%20Service%20Bus%20in Link
[9] Abi Iyer, Dinakar Nethi - Microsoft SQL Azure FAQ – 2010 http://www.microsoft.com/downloads/en/confirmation.aspx?familyId=ffc9536c-c548-453a-92b8-c6614c63a26e&amp;displayLang=en Link
[10] Judith Myerson - Cloud computing vs Grid computing – 2009 http://www.ibm.com/developerworks/web/library/wa-cloudgrid/ Link
[11] Tejaswi Redkar - Windows Azure Platform . Nhà xuất bản Apress – 2009 http://apress.com/book/view/1430224797 Link

HÌNH ẢNH LIÊN QUAN

Hình 1.1: Giới thiệu về cloud computing. - Tìm hiểu tổng quan về dịch vụ Cloud-computing và nền tảng Windows Azure Platform
Hình 1.1 Giới thiệu về cloud computing (Trang 10)
Hình 1.2: Các kiểu hình dịch vụ đối với Cloud computing - Tìm hiểu tổng quan về dịch vụ Cloud-computing và nền tảng Windows Azure Platform
Hình 1.2 Các kiểu hình dịch vụ đối với Cloud computing (Trang 13)
Hình 1.6: Mối quan tâm đối với cloud computing - Tìm hiểu tổng quan về dịch vụ Cloud-computing và nền tảng Windows Azure Platform
Hình 1.6 Mối quan tâm đối với cloud computing (Trang 19)
Hình 2.1 Cấu trúc cơ bản của Windows Azure Platform - Tìm hiểu tổng quan về dịch vụ Cloud-computing và nền tảng Windows Azure Platform
Hình 2.1 Cấu trúc cơ bản của Windows Azure Platform (Trang 22)
Hình 2.2: Cấu trúc của hệ quản trị cơ sở dữ liệu SQL Azure - Tìm hiểu tổng quan về dịch vụ Cloud-computing và nền tảng Windows Azure Platform
Hình 2.2 Cấu trúc của hệ quản trị cơ sở dữ liệu SQL Azure (Trang 25)
Hình 2.3 Vai trò của Fabric Controller trong Windows Azure - Tìm hiểu tổng quan về dịch vụ Cloud-computing và nền tảng Windows Azure Platform
Hình 2.3 Vai trò của Fabric Controller trong Windows Azure (Trang 27)
Hình 2.5: Kiến trúc tổng thể hệ điều hành Windows Azure - Tìm hiểu tổng quan về dịch vụ Cloud-computing và nền tảng Windows Azure Platform
Hình 2.5 Kiến trúc tổng thể hệ điều hành Windows Azure (Trang 29)
Hình 2.6: Kiến trúc của Windows Azure Storage - Tìm hiểu tổng quan về dịch vụ Cloud-computing và nền tảng Windows Azure Platform
Hình 2.6 Kiến trúc của Windows Azure Storage (Trang 33)
Hình 2.7 Kiến trúc của dịch vụ Blob - Tìm hiểu tổng quan về dịch vụ Cloud-computing và nền tảng Windows Azure Platform
Hình 2.7 Kiến trúc của dịch vụ Blob (Trang 34)
Hình 2.8: Minh hoạ về việc upload và commit các Block  Các thao tác  REST đối với block - Tìm hiểu tổng quan về dịch vụ Cloud-computing và nền tảng Windows Azure Platform
Hình 2.8 Minh hoạ về việc upload và commit các Block Các thao tác REST đối với block (Trang 37)
Hình 2.10 Kiến trúc dịch vụ Queue - Tìm hiểu tổng quan về dịch vụ Cloud-computing và nền tảng Windows Azure Platform
Hình 2.10 Kiến trúc dịch vụ Queue (Trang 42)
Hình 2.11 Kiến trúc dịch vụ Table - Tìm hiểu tổng quan về dịch vụ Cloud-computing và nền tảng Windows Azure Platform
Hình 2.11 Kiến trúc dịch vụ Table (Trang 48)
Hình 2.14 Lược đồ sử dụng giữa Access Control Service, Khách hàng và dịch vụ Web - Tìm hiểu tổng quan về dịch vụ Cloud-computing và nền tảng Windows Azure Platform
Hình 2.14 Lược đồ sử dụng giữa Access Control Service, Khách hàng và dịch vụ Web (Trang 53)
Hình 2.16: Chi tiết các bước làm việc của ACS để xác thực và cấp quyền người dùng - Tìm hiểu tổng quan về dịch vụ Cloud-computing và nền tảng Windows Azure Platform
Hình 2.16 Chi tiết các bước làm việc của ACS để xác thực và cấp quyền người dùng (Trang 59)
Hình 2.17: Minh hoạ một kịch bản sử dụng ACS - Tìm hiểu tổng quan về dịch vụ Cloud-computing và nền tảng Windows Azure Platform
Hình 2.17 Minh hoạ một kịch bản sử dụng ACS (Trang 62)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w