Sử dụng Window Azure thể hiện ứng dụng BingMaps [18]

Một phần của tài liệu Dịch vụ bản đồ trong điện toán đám mây và ứng dụng quản lý thông tin các cửa khẩu hải quan (Trang 51)

Ứng dụng sử dụng sau khi đƣợc xây dựng sẽ đƣợc lƣu trữ trên Windows Azure, sử dụng nền tảng cơ sở dữ liệu Windows SQL Azure.

2.3.4.1 Tổng quan về Windows Azure [5]

Kiến trúc nền tảng dịch vụ Azure là một platform dịch vụ đám mây có khả năng mở rộng trên Internet ở các trung tâm dữ liệu Microsoft. Azure cung cấp một hệ điều hành và một tập của các dịch vụ các nhà phát triển có thể sử dụng riêng biệt hay cùng nhau. Platform linh hoạt và có thể tƣơng tác của Azure có thể đƣợc sử dụng để tạo nên một ứng dụng mới để chạy từ đám mây hay làm tăng khả năng của các ứng dụng đang tồn tại sử dụng dịch vụ đám mây. Kiến trúc mở của nó cho phép các các nhà phát triển lựa chọn xây dựng các ứng dụng web, các ứng dụng chạy trên các thiết bị đã kết nối, các máy PC, các máy Server, hay các giải pháp lai cung cấp khả năng online tốt nhất và những tiền đề tốt nhất.

Azure giảm thiểu chi phí kỹ thuật trả trƣớc, và nó cho phép các nhà phát triển xây dựng ứng dụng một cách nhanh chóng và dễ dàng chạy trên đám mây bằng việc sử dụng những kĩ năng đang có của họ với môi trƣờng phát triển Visual Studio và Microsoft .NET Framework. Thêm vào đó đối với các ngôn ngữ lập trình đƣợc hỗ trợ bởi .NET, Azure sẽ hỗ trợ nhiều ngôn ngữ lập trình và các môi trƣờng phát triển trong tƣơng lai gần. Azure đơn giản hóa bảo trì và hoạt động của các ứng dụng bằng cách cung cấp tính toán nơi lƣu trữ theo yêu cầu để lƣu trữ, mở rộng, quản lý web và các ứng dụng kết nối. Quản lý cơ sở hạ tầng đƣợc tự động với một platform đƣợc thiết kế cho tính sẵn sàng cao và mở rộng tự động để phù hợp với lựa chọn của một mô hình

chi phí. Azure cung cấp một môi trƣờng mở, tƣơng tác và dựa trên chuẩn với việc hỗ trợ cho nhiều giao thức internet, bao gồm HTTP, REST, SOAP và XML.

Microsoft cũng cung cấp các ứng dụng đám mây sẵn sàng cho khách hàng sử dụng nhƣ Window LiveTM, Microsoft DynamicsTM, và những dịch vụ Online Microsoft khác cho kinh doanh nhƣ Microsoft Exchange Online và SharePoint®Online. Nền tảng dịch vụ Azure trợ giúp các các nhà phát triển cung cấp cho những ngƣời dùng riêng của họ bằng cách cung cấp các thành phần cơ bản nhƣ tính toán, lƣu trữ, và xây dựng các dịch vụ có sẵn nhằm trợ giúp trong việc xây dựng các ứng dụng trong đám mây.

2.3.4.2 Các thành phần chính của nền tảng dịch vụ Azure 2.3.4.2.1 Windows Azure

Window® Azure là một hệ điều hành các dịch vụ đám mây, nó đƣợc sử dụng nhƣ môi trƣờng phát triển, dịch vụ, lƣu trữ và quản lý dịch vụ cho Azure Service Platform. Window Azure có khả năng lƣu trữ và tính toán theo yêu cầu lƣu trữ để cho phép những ngƣời phát triển phần mềm có thể mở rộng và quản lý Internet hay các ứng dụng đám mây. Window Azure là một nền tảng mở sẽ hỗ trợ cả các ngôn ngữ và môi trƣờng của Microsoft và không phải của Microsoft. Một cách tổng quát, Windows Azure có thể hiểu đơn giản là một platform để chạy những ứng dụng windows và lƣu trữ dữ liệu của nó trên đám mây.

Hình 0.8 Các dịch vụ lưu trữ và tính toán dựa trên Windows cho các ứng dụng đám mây của Windows Azure [6]

Windows Azure chạy trên một số lƣợng lớn máy , tất cả để ở các trung tâm d ữ liệu Microsoft, có thể truy cập thông qua Internet và t ồn tại một cơ cấu liên kết các sƣ́c mạnh xử lý lại giúp chúng tr ở thành một thể thống nhất . Các dịch vụ Windows Azure tính toán và lƣu trữ đƣợc xây dựng ở bên trên của cơ cấu này.

Các dịch vụ tính toán Windows Azure dựa trên Windows. Ở phiên bản miễn phí đƣa ra năm 2008, Microsoft cho phép Windows Azure chạy chỉ các ƣ́ng dụng trên .NET Framework . Ngày nay , Windows Azure cũng hỗ trợ mã không đƣợc quản lý , cho phép các nhà phát triển chạy các ứng dụng không đƣợc viết trên .NET Framework. Trong trƣờng hợp này , nhƣ̃ng ứng dụng đƣợc viết bằng nhƣ̃ng ngôn ngƣ̃ truyền thống Windows nhƣ C #, Visual Basic , C++, và những ngôn ngữ khác có sử dụng Visual Studio 2008 hoặc công cụ phát triển khác . Các nhà phát triển có thể tạo các ứng dụng Web thông qua việc sƣ̉ dụng các kĩ thuật nhƣ ASP .NET và WCF (Windows Communication Foundation), những ứng dụng mà chạy nhƣ nhƣ̃ng tiến trình nền độ c lập, hay các ứng dụng kết nối hai thành phần.

Tất cả các ứng dụng Windows Azure có thể truy cập dịch vụ lƣu trƣ̃ Windows Azure sƣ̉ dụng RESTful . Việc lƣu trƣ̃ dƣ̃ liệu ở bên dƣới không sƣ̉ dụng Microsoft SQL Server . Thƣ̣c chất, việc lƣu trƣ̃ Windows Azure không phải là hệ thống quan hệ , và ngôn ngữ truy vấn không phải SQL . Bởi vì nó đƣợc thiết kế nhằm để hỗ trợ các ứng dụng xây dƣ̣ng trên Windows Azure , nó cung cấp những kiểu lƣu trữ đơn giản và dễ mở rộng hơn. Theo đó , nó cho phép lƣu trữ những đối tƣợng dữ liệu nhị phân lớn (blobs), cung cấp các hàng đợi cho việc truyền tải giƣ̃a các thành phần của ứng dụng Windows Azure, và thậm chí cung cấp một mẫu các bảng với một ngôn n gƣ̃ truy vấn đơn giản . Đối với các ứng dụng Windows Azure thƣ̣c hiện lƣu trƣ̃ theo cách truyền thống, nền tảng Windows Azure cung cấp cơ sở dữ liệu SQL Azure.

Khi chạy các ứng dụng và lƣu trƣ̃ dữ liệu của chúng trên đám mây có nhƣ̃ng lợ i ích rõ ràng. Thay cho việc mua , cài đặt, và vận hành các hệ thống của riêng nó , ví dụ, một tổ chƣ́c có thể dƣ̣a trên nhà cung cấp d ịch vụ đám mây để làm thay việc đó cho mình. Hơn thế nƣ̃a, các khách hàng chỉ phải trả c ho việc lƣu trƣ̃ và tính toán mà họ sƣ̉ dụng, hơn là duy trì một số lƣợng lớn server chỉ để đề phòng khi tải lớn . Ngoài ra, ứng dụng có thể mở rộng dễ dàng , sƣ̉ dụng đƣợc nhƣ̃ng tiện ích của các trung tâm d ữ liệu lớn mà các nhà cung cấp dịch vụ hỗ trợ.

Để có đƣợc nhƣ̃ng lợi ích này đòi hỏi phải có sƣ̣ quản lý hiệu quả . Trong Windows Azure , mỗi ƣ́ng dụng có một file cấu hình . Bằng cách thay đổi thông tin trong file này bằng tay hay theo cách lậ p trình, ngƣời quản lý ƣ́ng dụng có thể điều khiển các hành vi của nó, nhƣ là tạo số lƣợng các thể hiện mà Windows Azure sẽ chạy. Cơ cấu Windows Azure theo dõi ứng dụng để duy trì trạng thái mong muốn này.

Để giúp khách hà ng của mình tạo , cấu hình , và quan sát các ứng dụng, Windows Azure cung cấp một cổng truy cập trình duyệt . Mỗi khách hàng đƣ ợc cung cấp một Windows Live ID , và sau đó tạo một tài khoản lƣu trữ để chạy ứng dụng hoặc tài khoản cho lƣu trƣ̃ dữ liệu, hoặc cả hai. Một ứng dụng có thể đƣợc trả phí theo nhiều cách nhƣ thuê trọn gói, phí dựa trên việc dùng bao nhiêu trả bấy nhiêu , hoặc theo một hình thức khác [4].

Ứng dụng trên Windows Azure: Trên Windows Azure, một ứng dụng thông

thƣờng có nhiều thể hiện, mỗi cái chạy trên một bản sao của mã ứng dụng. Mỗi một thể hiện chạy trên máy ảo của riêng nó. Những máy ảo này chạy hệ điều hành Windows Server 2008, 64 bit, và chúng cung cấp một mặt nạ (hypervisor) đƣợc thiết kế đặc biệt cho việc sử dụng trên đám mây. Một nhà phát triển không cung cấp ảnh VM (Virtual Machine) của riêng họ cho Windows Azure để chạy, hay không cần lo lắng về việc duy trì một bản sao hệ điều hành Windows. Thay vào đó, phiên bản miễn phí cho phép nhà phát triển tạo ứng dụng sử dụng thể hiện Web role hoặc Worker role. Hình dƣới đây thể hiện rõ điều đó.

Hình 0.9 Ứng dụng Windows Azure có thể bao gồm các thể hiện web role và worker role, trong đó mỗi thể hiện chạy trên máy ảo của riêng nó [7]

Mỗi thể hiện web role chấp nhận các yêu cầu HTTP (hay HTTPS) đầu vào thông qua IIS 7 (Internet Information Service 7). Một Web Role có thể đƣợc cài đặt sử dụng ASP.NET, WCF hay một kĩ thuật khác mà làm việc với IIS. Windows Azure cung cấp cơ chế cân bằng tải trọng để phân bổ các yêu cầu tới các thể hiện web role. Một thể hiện worker role, ngƣợc lại, không thể nhận yêu cầu trực tiếp từ bên ngoài, nó không đƣợc phép có bất kì đầu vào kết nối trên mạng nào, và IIS không chạy trong VM của nó. Thay vào đó, nó nhận đầu vào thông qua một hàng đợi trong nơi lƣu trữ Windows Azure. Các thông điệp trong hàng đợi có thể đến từ thể hiện web role, một ứng dụng hay một cái khác. Bất kể thông điệp đến từ đâu, một thể hiện worker role có thể gửi đầu ra tới hàng đợi khác hay ra bên ngoài và các kết nối đầu ra tới mạng bên ngoài đƣợc cho phép. Không giống thể hiện web role, đƣợc tạo ra để điều khiển các yêu cầu HTTP đầu vào, một thể hiện worker role là một công việc theo lô. Thích hợp với số đông, một worker role có thể đƣợc cài đặt sử dụng bất kì kĩ thuật

Windows nào với một phƣơng thức main(). Kể cả chạy thể hiện web role hay worker role, mỗi VM chứa một tác nhân Windows Azure (Windows Azure agent) cho phép ứng dụng tƣơng tác với Windows Azure fabric. Agent đƣa ra một API cho phép thể hiện ghi vào một log đƣợc duy trì bởi Windows Azure, gửi các cảnh báo tới chủ ứng dụng thông qua Windows Azure fabric và nhiều công việc khác nữa.

Phiên bản Windows Azure đầu tiên duy trì một quan hệ một - một giữa VM và một nhân bộ xử lý, do đó hiệu năng của mỗi ứng dụng có thể đƣợc đảm bảo. Mỗi thể hiện web role và Worker role có nhân xử lý của riêng nó. Để tăng hiệu năng của ứng dụng, chủ sở hữu ứng dụng có thể tăng số lƣợng thể hiện chạy trong file cấu hình của ứng dụng. Windows Azure fabric sẽ khởi tạo VM mới, đăng ký nó với các bộ xử lý, và bắt đầu chạy thêm các thể hiện của ứng dụng. Fabric cũng phát hiện khi nào một Web role hoặc Worker role bị lỗi, và khởi tạo một cái mới.

Cả các Web Role và Worker Role đƣợc cài đặt sử dụng kĩ thuật chuẩn Windows. Tuy nhiên việc chuyển đổi từ ứng dụng đã tồn tại sang Windows Azure vẫn cần chút thay đổi. Trong Windows Azure, truy cập nơi lƣu trữ của Windows Azure bằng cách sử dụng các dịch vụ dữ liệu ADO.NET không có trong các ứng dụng trên máy cục bộ trƣớc đây (một ứng dụng Windows Azure có thể sử dụng ADO.NET chuẩn để truy cập nơi lƣu trữ quan hệ cung cấp bởi Cơ sở dữ liệu SQL Azure, do đó tạo điều kiện dễ dàng để chuyển một ứng dụng đã tồn tại lên nền tảng đám mây). Hơn nữa, các thể hiện worker role dựa trên những hàng đợi trong Windows Azure storage cho đầu vào của chúng. Đây là một sự ảo hóa không có sẵn trong các môi trƣờng Windows trong nhà. Tuy nhiên, nhìn chung một ứng dụng chạy trên Windows Azure sẽ trông giống nhƣ khi nó chạy trên bất kì hệ thống Windows server.

Đối với các nhà phát triển, xây dựng một ứng dụng Windows Azure trong phiên bản miễn phí giống nhƣ xây dựng một ứng dụng Windows truyền thống. Microsoft cung cấp các mẫu project trong Visual Studio cho việc tạo các Windows Azure web role, worker role, và sự tổ hợp của chúng. Các nhà phát triển đƣợc tự do sử dụng các ngôn ngữ lập trình Windows. Hơn nữa, bộ phát triển phần mềm Windows Azure bao gồm một phiên bản của môi trƣờng Windows Azure chạy trên máy của nhà phát triển nhƣ Windows Azure Development Fabric, nó bao gồm Windows Azure storage, một tác nhân Windows Azure, và mọi thứ khác liên quan đến việc chạy ứng dụng trên đám mây. Một nhà phát triển có thể tạo và gỡ lỗi ứng dụng của mình, sử dụng sự mô phỏng trên máy cục bộ, sau đó phân phối ứng dụng tới Windows Azure trong đám mây khi đã sẵn sàng. Tuy vậy, có một số thứ khác biệt khi đƣa lên đám mây. Ví dụ, không thể ghép một bộ gỡ lỗi lên ứng dụng dựa trên đám mây, và

do đó việc gỡ lỗi ứng dụng trên đám mây dựa trên việc viết vào log đƣợc duy trì bởi Windows Azure thông qua tác nhân Windows Azure.

Lưu trữ dữ liệu: Các ứng dụng làm việc với dữ liệu theo nhiều cách khác nhau.

Đôi khi chúng chỉ yêu cầu các blob, trong khi lúc khác lại cần những cấu trúc phức tạp hơn để lƣu trữ dữ liệu. Và trong một số trƣờng hợp, cần một cách để trao đổi dữ liệu giữa những phần khác nhau của một ứng dụng. Hình dƣới đây thể hiện Windows Azure storage tập trung vào những yêu cầu nhƣ đã nêu trên.

Hình 0.10 Mô hình lưu trữ dữ liệu trong các blob, table và queue, sử dụng RESTful để truy cập của Windows Azure [7]

Cách đơn giản nhất để lƣu trữ dữ liệu trong Windows Azure storage là sử dụng blob [7]. Nhƣ hình trên chỉ ra, có một sự phân cấp đơn giản: một tài khoản lƣu trữ (storage account) có thể có một hay nhiều container, mỗi một container lại chứa một hay nhiều các blob. Blob có thể có dung lƣợng 50 gigabytes, và để làm cho việc vận chuyển những blob lớn dễ dàng hiệu quả, mỗi một blob có thể đƣợc phân chia thành những khối nhỏ. Nếu một lỗi xảy ra, sự vận chuyển lại đƣợc khôi phục với những khối gần nhất chứ không phải với toàn bộ blob.

Blob là một kiểu dữ liệu, nhƣng chúng không có cấu trúc. Để cho phép ứng dụng làm việc với dữ liệu theo cách hiệu quả hơn, Windows Azure storage cung cấp các bảng [8]. Chúng không phải là các bảng quan hệ. Mặc dù chúng đƣợc gọi là các bảng, nhƣng thực chất dữ liệu chúng đƣợc lƣu trong một tập các thực thể với các thuộc tính tƣơng ứng. Một bảng không có lƣợc đồ định nghĩa. Thay vào đó, các thuộc tính có thể có nhiều kiểu khác nhau, nhƣ là int, string, bool, hay datatime. Một ứng dụng có thể truy cập dữ liệu của bảng, sử dụng dịch vụ dữ liệu ADO.NET hay LINQ. Một bảng đơn có thể là rất lớn, với hàng tỉ các thực thể và kích thƣớc hàng terabyte dữ liệu, và Windows Azure storage có thể phân chia và đặt nó trên nhiều server nếu cần thiết để cải thiện hiệu năng. Các blob và bảng chủ yếu để lƣu trữ dữ liệu. Lựa chọn thứ ba trong Windows Azure storage là hàng đợi (queue) với mục đích hoàn toàn khác. Vai trò chính của hàng đợi là cung cấp cách để cá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ửi một yêu cầu tới thực hiện một số công việc liên quan tới tính toán thông qua trang web cài đặt bởi một Windows Azure Web role. Thể hiện Web role nhận đƣợc yêu cầu này có thể viết một message vào một hàng đợi mô tả công việc đƣợc làm. Một thể hiện Worker role mà đang đợi hàng đợi này có thể đọc message và thực hiện công việc, và kết quả có thể đƣợc trả lại thông qua một hàng đợi khác hay đƣợc điều khiển theo một cách khác.

Không quan tâm đến việc dữ liệu đƣợc lƣu trữ nhƣ thế nào (trong blob, table hay hàng đợi), mọi dữ liệu trong Windows Azure storage đƣợc sao lƣu làm ba bản. Sự sao lƣu này cho phép chống lỗi, do có thể bị mất một bản sao lƣu. Hệ thống đảm bảo sự thống nhất, do đó một ứng dụng mà đọc dữ liệu nó đã từng ghi vào sẽ lấy đƣợc những gì nó mong muốn.

Windows Azure storage có thể đƣợc truy cập bằng một ứng dụng Windows Azure hay bằng một ứng dụng chạy ở một nơi nào đó. Trong cả hai trƣờng hợp, ba kiểu lƣu trữ của Windows Azure sử dụng quy định của REST để xác định và đƣa ra dữ liệu. Mọi thứ đƣợc đặt tên URIs khi sử dụng và truy cập để lấy thông tin thông qua HTTP chuẩn. Một client .NET có thể sử dụng ADO.NET Data Service và LINQ, nhƣng truy cập Windows Azure storage từ một ứng dụng Java chỉ có thể sử dụng RESTful.

Windows Azure platform tính phí độc lập cho việc tính toán và lƣu trữ

Một phần của tài liệu Dịch vụ bản đồ trong điện toán đám mây và ứng dụng quản lý thông tin các cửa khẩu hải quan (Trang 51)

Tải bản đầy đủ (PDF)

(88 trang)