SQL Azure

Một phần của tài liệu Tìm hiểu tổng quan về dịch vụ Cloud-computing và nền tảng Windows Azure Platform (Trang 77)

Kiến trúc SQL Azure:

SQL Azure là hệ quản trị CSDL với khả năng co giãn và độ sẵn sàng cao trên cloud. Cũng như tất cả các dịch vụ trên Windows Azure khác, SQL Azure chạy trên các trung tâm dữ liệu của Microsoft trên toàn thế giới. Cơ sở hạ tầng của các trung tâm dữ liệu cung cấp các khả năng cân bằng tải, vượt qua lỗi và khả năng tái tạo (replication). Hình dưới đây minh họa kiến trúc SQL Azure ở mức cao:

Như có thể thấy ở trên, SQL Azure bao gồm 4 lớp: lớp cơ sở hạ tầng (infrastructure layer), lớp nền tảng (platform layer), lớp dịch vụ (service layer) và lớp client. Trừ lớp client, tất cả các lớp còn lại đều chạy trên các trung tâm dữ liệu của Microsoft.

Lớp cơ sở hạ tầng

Lớp cơ sở hạ tầng là lớp hỗ trợ, cung cấp việc quản trị cho phần cứng và hệ điều hành mà lớp dịch vụ cần. đây là lớp cốt lõi của các data center được chia sẻ giữa nhiều dịch vụ trong một data center.

Lớp nền tảng

Lớp nền tảng bao gồm các instance của SQL Server, SQL Azure fabric, và các dịch vụ quản lý (Management services). Các instance của SQL Server chứa các cơ sở dữ liệu đã triển khai và bản sao của chúng, và instance của hệ điều hành host các instance SQL Server này. SQL Azure fabic là một framework phía dưới tự động hóa việc triển khai, sao lưu (replication), failover và cân bằng tải của các máy chủ cơ sở dữ liệu.

SQL Azure fabric chịu trách nhiệm tạo 3 bản sao (replication) của các instance database và cung cấp khả năng tự động vượt qua lỗi (automatic failover) cho các instance này. Chúng ta có thể thấy qua hình dưới đây. Nếu Instance chính của cơ sở dữ liệu gặp sự cố, SQL Azure fabric gán một trong số các bản sao như là instance chính và tự động định tuyến tất cả các kết nối đến instance chính này. Ngoài ra, để duy trì 3 bản sao vào mọi thời điểm, SQL Azure cũng tạo một bản sao mới của dữ liệu

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

Các dịch vụ quản lý (management services) chịu trách nhiệm đảm bảo các bản nâng cấp, độ nhất quán, và cung cấp phần cứng/phần mềm hỗ trợ SQL Azure fabric

Lớp dịch vụ

Lớp dịch vụ bao gồm các máy bên ngoài (khách hàng) và hoạt động như một gateway đối với lớp nền tảng. Nó mở các dịch vụ như tabular data stream (TDS), billing, metering (các dịch vụ đo lường để tính phí của khách hàng) và cung cấp tài khoản cho khác hàng. Lớp dịch vụ mở giao thức TDS trên cổng 1433 thông qua Secure Sockets Layer (SSL). Lớp dịch vụ cũng chịu trách nhiệm định tuyến các kết nối đến instance chính của cơ sở dữ liệu trong lớp platform. Lớp này duy trì các thông tin runtime về các bản sao cơ sở dữ liệu và định tuyến các kết nối TDS từ các ứng dụng client đến instance chính phù hợp. Lớp dịch vụ cũng chịu trách nhiệm cung cấp cơ sở dữ liệu khi người dùng tạo một cơ sở dữ liệu trong SQL Server.

Lớp client

Lớp client là lớp duy nhất chạy bên ngoài các trung tâm dữ liệu của Microsoft. Lớp client không chứa bất kì thành phần dành riêng cho SQL Azure nào, thay vào đó, nó sử dụng tất cả các tính năng hiện có của các thành phần cient SQL Server như ADO.NET, ODBC, SQL Server Management Studio,…API trên client khởi tạo một kết nối TDS đến SQL Azure trên cổng 1433, kết nối này sẽ được định tuyến bởi lớp dịch vụ đến instance database thích hợp ở lớp platform.

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

Mặc dù được xây dựng dựa trên nền SQL Server nhưng SQL Azure không hỗ trợ tất cả các tính năng của SQL Server, cả về cơ sở dữ liệu, về ứng dụng và về quản trị.

Về cơ sở dữ liệu:

Hỗ trợ Không hỗ trợ

• CRUD operations on tables, views, and indexes

• TSQL query JOIN statements • Triggers

• TSQL functions

• Application stored procedures (only TSQL)

• Table constraints

• Session-based temp tables • Table variables

• Local transactions • Security roles

• Distributes query

• Distributed transactions

Bất kì truy vấn T-SQL và views nào thay đổi hoặc đọc các thông tin về tài nguyên phần cứng, như các lệnh DDL, Resource Governor, và tham chiếu file group • Spatial data types

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

Về các tính năng ứng dụng:

• Plan and statistics • Index tuning • Query tuning • Replication • SQL profiler • SQL trace flag • Backup command (adsbygoogle = window.adsbygoogle || []).push({});

• Configuration using the sp_configure stored procedure

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

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

SQL Azure cho phép kết nối đến cơ sở dữ liệu đám mây chỉ sử dụng giao thức TDS với hỗ trợ giới hạn như đã giới thiệu ở phàn trước. Nhưng bởi vì giao thức TDS được hỗ trợ bởi phần lớn các API client của SQL Server, tất cả các tính năng mà sQL Azure hỗ trợ đều làm việc với các client API hiện có. CÓ 2 kiểu hình chung để kết nối đến các cơ sở dữ liệu trên SQL Azure: code near và code far.

Kết nối Code-near

Trong kiểu kết nối code-near, ứng dụng được triển khai trên Windows Azure, sử dụng SQL Azure. Nhà phát triển đặt dùng công cụ Geo-Locate để đặt chúng trên cùng một trung tâm dữ liêu.

Các tiếp cận code-near có những thuận tiện như:

- Business logic (quy trình nghiệp vụ) được đặt gần cơ sở dữ liệu

- Có thể mở các giao diện chuẩn như HTTP, REST, SOAP,… cho dữ liệu của ứng

dụng

- Các ứng dụng client không phải phụ thuộc vào API của SQL Server client

Điểm bất lợi của các tiếp cận này là ảnh hưởng của tốc độ đến ứng dụng nếu sử dụng Windows Azure làm lớp giữa để truy cập CSDL

Kết nối code-far

Trong kiểu kết nối code-far, ứng dụng thường được triển khai on-premises hoặc ở một trung tâm dữ liệu khác với SQL Azure. Trong mẫu hình hình này, ứng dụng client tạo các truy vấn SQL sử dụng giao thức TDS qua Internet đến CSDl SQL Azure. Hình dướ đây minh họa việc kết nối code-far từ ứng dụng đến CSDL SQL Azure:

Lợi ích lớn nhất của các tiếp cận code-far là về mặt tốc độ vì kết nối trực tiếp đến cơ sở dữ liệu trên cloud. Điểm bất lợi lớn nhất là tất cả các ứng dụng client phải sử dụng giao thức TDS để truy cập cơ sở dữ liệu. Điều đó có nghĩa là các client truy cập dữ liệu phải hỗ trợ các API của SQL Server như ADO.NET, ODBC,…, giảm khả năng truy xuất dữ liệu từ các API hoặc nền tảng không hỗ trợ giao thức TDS.

Phần 3: Windows Azure Platform Development

Là một công ty phần mềm hàng đầu, Microsoft không thể không cung cấp các công cụ đến các nhà phát triển của mình để xây dựng các ứng dụng trên nền tảng Windows Azure. Bộ công cụ mà Microsoft sử dụng là Visual Studio 2008/2010.

Để có thể xây dựng các ứng dụng trên nền tảng Windows Azure Platform, cần phải cài đặt thêm Windows Azure SDK, hiện phiên bản mới nhất là 1.1 phát hành 2/2010, download tại địa chỉ: http://www.microsoft.com/downloads/details.aspx?

FamilyID=dba6a576-468d-4ef6-877e-b14e3c865d3a&displaylang=en

Cài đặt Windows Azure SDK yêu cầu IIS với tính năng phát triển ASP.NET đã được enable.

Ngoài ra, Windows Azure SDK còn yêu cầu SQL Server để thực hiện các tác dụng liên quan đến Storage Service. Cần cấu hình SQL Server bằng công cụ Dsinit của

Windows Azure SDK:

Câu lệnh: dsinit /sqlinstance:. Trường hợp trong hình là sqlinstance:. có nghĩa sử dụng instance mặc định của SQL Server hiện có

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

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

Mặc định, Windows Azure SDK sẽ tạo 3 cổng tương ứng trên local host, lần lượt là: http://127.0.0.1:10000: dành cho dịch vụ Blob, tương ứng với <http/https>://<account name>.blob.core.windows.net trên cloud.

http://127.0.0.1:10001: dành cho dịch vụ Queue, tương ứng với <http/https>://<account name>.queue.core.windows.net trên cloud.

http://127.0.0.1:10002: dành cho dịch vụ Table, tương ứng với <http/https>://<account name> .table.core.windows.net trên cloud.

Ngoài ra, việc phát triển ứng dụng luôn dùng một tài khoản duy nhất,

devstoreaccount1 và một sharedkey duy nhất: <Setting name="AccountSharedKey" (adsbygoogle = window.adsbygoogle || []).push({});

value="Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTO tr/KBHBeksoGMGw=="/>

Khi triển khai lên cloud, các nhà phát triển phải thay đổi các thiết lập này về tương ứng với endpoint thực, cũng như account và sharedkey của mình.

Sau khi cài đặt Windows Azure SDK, Visual Studio có thêm các template cho phép tạo các Web role/worker role:

Khi tiến hành debug/test, Development Fabric sẽ chịu trách nhiệm tạo môi trường “giả lập” cho ứng dụng. Có thể sử dụng Development Fabric để xem trạng thái các web

role và woker role:

Hình 3.5 Development Fabric UI

Có một số khác biệt giữa Development Fabric và môi trường Windows Azure thật:

- Có thể gắn một debugger với một role trong Development Fabric, nhưng trên Windows Azure, không thể gắn bất cứ debugger nào cả.

- Một instance của role chạy trên Development Fabric có thể truy cập đến thành phần như GAC – Global Assembly Cache, registry, file cấu hình của hệ thống (machine configuration file)…Các thành phần này không hiện hữu trên Windows Azure.

này có nghĩa là một role dựa vào quyền quản trị trên môi trường phát triển có thể “cư xử” khác biệt khi được triển khai đến Windows Azure.

- Khi một dịch vụ đã được triển khai đến Windows Azure, có thể tăng hay giảm số instance của một role bằng cách điều chỉnh trong file cấu hình mà không cần phải tái triển khai dịch vụ. Tuy nhiên, hiện thời không thể giảm số lượng instance của một role khi chạy trên development fabric. Để giảm số lượng instance trong trường hợp này, buộc phải tắt và khởi động lại dịch vụ

- Môi trường phát triển không giả lập đầy đủ các hành vi của bộ cân bằng tải trên Windows Azure. Ví dụ, nếu code trong một web role instance gọi phương thức SetBusy từ event RoleEnvironment.StatusCheck để chỉ thị rằng role instance này nên được loại khỏi vòng của bộ cân bằng tải, thì vẫn có thể truy cập từ trình duyệt ngay cả khi trạng thái của nó là RoleInstanceStatus.Busy.

Ngoài ra, còn một số giới hạn khác như kích thước giới hạn mỗi blob trên môi trường phát triển so với môi trường thực,…Đây là những điều mà các nhà phát triển phải chú ý để việc triển khai dịch vụ được thuận lợi.

Tổng kết:

Một đồ án thực hiện trong thời gian 3 tháng về một xu hướng lớn và một nền tảng hoàn thiện chắc chắn sẽ không tránh khỏi thiếu sót. Tuy nhiên, chúng ta đã có thể có một cái nhìn tổng quan về Cloud computing nói chung và Windows Azure Platform nói riêng. Với những gì đã đạt được và sự tham gia của các công ty hàng đầu như Microsoft, Google, Amazon,.. có thể khẳng định Cloud computing không chỉ là một “buzzword”, mà là một xu hướng mạnh mẽ có thật. Tuy nhiên, nhiều chuyên gia đánh giá đây sẽ không phải là một cuộc cách mạng – revolution, mà chỉ là một sự tiến hoá – evolution. Sẽ không có những bước ngoặt lớn. Có những lĩnh vực mà cloud computing sẽ không thay thế được các kiến trúc truyền thống, ví dụ như tài chính, ngân hàng, nơi mà việc lưu trữ dữ liệu bị ràng buộc bởi luật pháp. Nhưng sẽ có những lĩnh vực mà cloud computing thực sự nổi trội và đem đến nhiều lợi ích, như web hay thương mại điện tử …

Windows Azure Platform là một trong những dấu ấn lớn, trong đó chuyển mối quan tâm đến cloud computing từ khách hàng (với các dịch vụ dạng SaaS) sang các nhà phát triển (với các dịch vụ dạng PaaS). Sử dụng những công nghệ và tiện ích sẵn có, Windows Azure Platform là nền tảng tốt cho các nhà phát triển khi họ có thể sử dụng các kiến thức và kĩ năng đã có để xây dựng các ứng dụng cloud. Với nhiều ưu điểm so với các đối thủ cạnh tranh, cùng với sự hậu thuẫn mạnh mẽ của Microsoft, có thể hy vọng Windows Azure Platform sẽ là xu hướng phát triển mới trong tương lai.

Tài liệu tham khảo:

[1] Cloud computing – Wikipedia

http://en.wikipedia.org/wiki/Cloud_computing

[2] David Chappell - Introducing the Windows Azure Platform . 2009

http://go.microsoft.com/fwlink/?LinkId=158011

[3] David Chappell - Introducing Windows Azure. 2009

http://go.microsoft.com/?linkid=9682907

[4] Jai Haridas, Niranjan Nilakantan, Brad Calder - Windows Azure Table – Programming Table Storage . 2009

http://go.microsoft.com/fwlink/?LinkId=153401

[5] Brad Calder, Tony Wang, Shane Mainali, Jason Wu -Windows Azure Blob – Programming Blob Storage . 2009

http://go.microsoft.com/fwlink/?LinkId=153400

[6] Aaron Skonnard,Keith Brown - An Introduction to Windows Azure platform AppFabric for Developers . 2010

http://download.microsoft.com/download/E/B/5/EB512F2E-7771-40A3-8025- 0DC6D9429951/An%20Introduction%20to%20Windows%20Azure%20platform %20AppFabric%20for%20Developers.docx

[7] Keith Brown - A Developer’s Guide to Access Control for the Windows Azure platform AppFabric. 2009 (adsbygoogle = window.adsbygoogle || []).push({});

http://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

[8] Aaron Skonnard - A Developer’s Guide to Service Bus for the Windows Azure platform AppFabric. 2009

http://download.microsoft.com/download/F/D/8/FD863D17-E85E-478C-B06F- 6825D50EA103/A%20Developer%27s%20Guide%20to%20Service%20Bus%20in %20Windows%20Azure%20platform%20AppFabric.docx

[9] Abi Iyer, Dinakar Nethi - Microsoft SQL Azure FAQ – 2010

http://www.microsoft.com/downloads/en/confirmation.aspx?familyId=ffc9536c-c548- 453a-92b8-c6614c63a26e&displayLang=en

[10] Judith Myerson - Cloud computing vs Grid computing – 2009

http://www.ibm.com/developerworks/web/library/wa-cloudgrid/

[11] Tejaswi Redkar - Windows Azure Platform . Nhà xuất bản Apress – 2009

Một phần của tài liệu Tìm hiểu tổng quan về dịch vụ Cloud-computing và nền tảng Windows Azure Platform (Trang 77)