Đồ án Xây dựng hệ thống quản trị nội dung sử dụng Windows Azure Platform

Ngày nay, đối với các công ty, doanh nghiệp, việc quản lý hiệu quả dữ liệu của riêng công ty cũng như dữ liệu khách hàng và đối tác là một trong những bài toán được ưu tiên hàng đầu và đang không ngừng gây khó khăn cho họ. Để có thể quản lý được nguồn dữ liệu đó, ban đầu các doanh nghiệp phải đầu tư, tính toán rất nhiều loại chi phí như chi phí cho phần cứng, phần mềm, mạng, chi phí cho quản trị viên, chi phí bảo trì, sửa chữa, Ngoài ra họ còn phải tính toán khả năng mở rộng, nâng cấp thiết bị; phải kiểm soát việc bảo mật dữ liệu cũng như tính sẵn sàng cao của dữ liệu. Từ một bài toán điển hình như vậy, chúng ta thấy được rằng nếu có một nơi tin cậy giúp các doanh nghiệp quản lý tốt nguồn dữ liệu đó, các doanh nghiệp sẽ không còn quan tâm đến cơ sở hạ tầng, công nghệ mà chỉ tập trung chính vào công việc kinh doanh của họ thì sẽ mang lại cho họ hiệu quả và lợi nhuận ngày càng cao hơn. Thuật ngữ “điện toán đám mây” ra đời bắt nguồn từ một trong những hoàn cảnh như vậy. Điện toán đám mây còn được bắt nguồn từ ý tưởng đưa tất cả mọi thứ như dữ liệu, phần mềm, tính toán, lên trên mạng Internet. Chúng ta sẽ không còn trông thấy các máy PC, máy chủ của riêng các doanh nghiệp để lưu trữ dữ liệu, phần mềm nữa mà chỉ còn một số các “máy chủ ảo” tập trung ở trên mạng. Các “máy chủ ảo” sẽ cung cấp các dịch vụ giúp cho doanh nghiệp có thể quản lý dữ liệu dễ dàng hơn, họ sẽ chỉ trả chi phí cho lượng sử dụng dịch vụ của họ, mà không cần phải đầu tư nhiều vào cơ sở hạ tầng cũng như quan tâm nhiều đến công nghệ. Xu hướng này sẽ giúp nhiều cho các công ty, doanh nghiệp vừa và nhỏ mà không có cơ sở hạ tầng mạng, máy chủ để lưu trữ, quản lý dữ liệu tốt. Hơn thế nữa, vượt ngoài phạm vi “quản lý dữ liệu”, nếu như toàn bộ các chương trình ứng dụng của doanh nghiệp được cài đặt trên hệ thống máy chủ đó để mọi người có thể dễ dàng truy cập sẽ tạo thuận lợi lớn cho doanh nghiệp để họ có thể tập trung vào nghiệp vụ của mình. Rõ ràng để có thể cung cấp được một hệ thống điện toán đám mây đáp ứng những nhu cầu như vậy thì nhà cung cấp cần một cơ sở vật chất và kỹ thuật cực kỳ tối tân, và trên thực tế chỉ có những hãng công nghệ lớn mới có thể đảm nhận nhiệm vụ này. Amazon và Google là một trong những hãng tiên phong phát triển điện toán đám mây và đã thu được một số thành quả nhất định. Gần đây, hãng phần mềm lớn nhất thế giới Microsoft cũng đã chính thức đưa ra sản phẩm điện toán đám mây của mình: Windows Azure Platform. Dù chỉ mới xuất hiện nhưng Windows Azure đã gây chú ý lớn đặc biệt là ở khả năng xây dựng các ứng dụng với khả năng mở rộng rất mạnh mẽ và linh hoạt. Windows Azure có khả năng hỗ trợ đa ngôn ngữ, tuy nhiên cũng giống như các sản phẩm khác của Microsoft, Windows Azure nhận được sự quan tâm rất lớn của cộng đồng phát triển .NET. Microsoft đã và đang tạo nên một cộng đồng phát triển ứng dụng Windows Azure và ngày càng có nhiều ứng dụng lớn được thiết kế lại để có thể đưa lên môi trường Windows Azure và tận dụng sức mạn của công nghệ điện toán đám mây này.

doc76 trang | Chia sẻ: tuandn | Lượt xem: 2477 | Lượt tải: 5download
Bạn đang xem trước 20 trang tài liệu Đồ án Xây dựng hệ thống quản trị nội dung sử dụng Windows Azure Platform, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
MỤC LỤC DANH MỤC CÁC HÌNH Hình 1.1: Đám mây điện toán [11] 14 Hình 1.2: Di trú tài nguyên vào “đám mây” [8] 15 Hình 1.3: Ảo hóa server [8] 15 Hình 1.4: Sky Computing cho các “đám mây”? [13] 16 Hình 1.5: Các mức dịch vụ trong “đám mây” [8] 18 Hình 1.6: Phân bổ công việc cho các Virtual machine [12] 19 Hình 1.7: Hàm Map một cặp (key, value) thành 1 danh sách [1] 20 Hình 1.8: Hàm Reduce tác động lên nhóm các cặp có cùng key [1] 21 Hình 1.9: Các nhà cung cấp dịch vụ Cloud Computing 23 Hình 2.1: Tương tác khách hàng/doanh nghiệp với Windows Azure [5] 27 Hình 2.2. Ba thành phần chính của Windows Azure Platform [4] 29 Hình 2.3: Các thành phần Windows Azure [4] 30 Hình 2.4: WebRole và WorkerRole instances trong khối Compute [3] 31 Hình 2.5: Các dịch vụ Storage Services [3] 32 Hình 2.6: Fabric Controller [5] 35 Hịnh 2.7: Các dịch vụ bên trong SQL Azure [4] 36 Hình 2.8: Cơ sở dữ liệu quan hệ SQL Azure Database [4] 37 Hình 2.9: Đồng bộ dữ liệu giữa SQL Azure Database và các nguồn CSDL khác [4] 38 Hình 2.10: Access Control quy định quyền truy cập với Users và Applications [9] 39 Hình 2.11: Service Bus kết nối giữa các ứng dụng cloud và on-premise [9] 40 Hình 2.12: Mô hình ứng dụng web có khả năng mở rộng [5] 41 Hình 2.13: Mô hình ứng dụng song song sử dụng WebRole, nhiều Worker Role instances, queues và blobs [5] 42 Hình 2.14: Mô hình ứng dụng song song kết nối từ ứng dụng cục bộ đến Worker Role [5] 43 Hình 2.15: Mô hình ứng dụng có khả năng mở rộng và xử lý ở hậu cảnh [5] 44 Hình 2.16: Mô hình ứng dụng từ máy cục bộ hoặc ứng dụng web truyền thống sử dụng Cloud Storage [5] 45 Hình 2.18: Development Fabric cung cấp môi trường giả lập Windows Azure trên máy local cho các lập trình viên [5] 46 Hình 3.1: Các trường hợp sử dụng tổng quan 53 Hình 3.2: Use case Viết bài 53 Hình 3.3: Use case Biên tập 54 Hình 3.4: Use case Phê duyệt 55 Hình 3.5: Use case Triển khai 56 Hình 3.6: Use case Quản lý tài khoản 56 Hình 3.7: Lược đồ CSDL 61 Hình 4.1: Upload gói mã nguồn (*.cspkg) và file cấu hình (*.cscfg) lên môi trường Staging Deployment của Hosted Service 70 Hình 4.2: Tạo Storage Account, thu được Primary Key Access và Endpoints 71 Hình 4.3: Cấu hình số instances, khai báo Storage Account Key 71 Hình 4.4: Test hệ thống trong môi trường Staging 72 Hình 4.5: Deploy hệ thống sang môi trường Production 72 Hình 4.6: Thế hiện nội dung bài viết 73 Hình 4.7: Phần quản trị: Author xem danh sách bài viết 73 Hình 4.8: Author viết bài 74 Hình 4.9: Editor biên tập bài viết 74 Hình 4.10: Phê duyệt bài viết 75 Hình 4.11: Deployer triển khai bài viết 75 Hình 4.12: Quản lý tài khoản - Danh sách tài khoản 76 Hình 4.13: Quản lý tài khoản – Tạo tài khoản mới 76 DANH MỤC CÁC BẢNG Bảng 2.1: Các mô hình tính toán Windows Azure 47 Bảng 3.1: Thiết kế bảng Account 57 Bảng 3.2: Thiết kế bảng AccountProperty 57 Bảng 3.3: Thiết kế bảng Content 58 Bảng 3.4: Thiết kế bảng AccountRoles 59 Bảng 3.5: Thiết kế bảng ContentRank 59 Bảng 3.6: Thiết kế bảng Domain 60 Bảng 3.7: Thiết kế bảng Zone 60 Bảng 3.8: Thiết kế bảng Distribution 61 DANH MỤC TỪ VIẾT TẮT VÀ THUẬT NGỮ STT Từ viết tắt/thuật ngữ Giải thích 1 CSDL Cơ sở dữ liệu 2 IaaS Infrastructure as a Service - Hạ tầng như dịch vụ 3 PaaS Platform as a Service - Nền tảng như dịch vụ 4 SaaS Software as a Service – Phần mềm như dịch vụ 5 VM Virtual Machine - Máy ảo 6 AWS Amazon Web Services - Các dịch vụ web của Amazon 7 GAE Google App Engine – Nền tảng điện toán đám mây của Google 8 CMS Content Management System - Hệ thống quản trị nội dung 9 DBMS Hệ quản trị cơ sở dữ liệu 10 RDBMS Hệ quản trị cơ sở dữ liệu quan hệ LỜI NÓI ĐẦU Ngày nay, đối với các công ty, doanh nghiệp, việc quản lý hiệu quả dữ liệu của riêng công ty cũng như dữ liệu khách hàng và đối tác là một trong những bài toán được ưu tiên hàng đầu và đang không ngừng gây khó khăn cho họ. Để có thể quản lý được nguồn dữ liệu đó, ban đầu các doanh nghiệp phải đầu tư, tính toán rất nhiều loại chi phí như chi phí cho phần cứng, phần mềm, mạng, chi phí cho quản trị viên, chi phí bảo trì, sửa chữa, … Ngoài ra họ còn phải tính toán khả năng mở rộng, nâng cấp thiết bị; phải kiểm soát việc bảo mật dữ liệu cũng như tính sẵn sàng cao của dữ liệu. Từ một bài toán điển hình như vậy, chúng ta thấy được rằng nếu có một nơi tin cậy giúp các doanh nghiệp quản lý tốt nguồn dữ liệu đó, các doanh nghiệp sẽ không còn quan tâm đến cơ sở hạ tầng, công nghệ mà chỉ tập trung chính vào công việc kinh doanh của họ thì sẽ mang lại cho họ hiệu quả và lợi nhuận ngày càng cao hơn. Thuật ngữ “điện toán đám mây” ra đời bắt nguồn từ một trong những hoàn cảnh như vậy. Điện toán đám mây còn được bắt nguồn từ ý tưởng đưa tất cả mọi thứ như dữ liệu, phần mềm, tính toán, … lên trên mạng Internet. Chúng ta sẽ không còn trông thấy các máy PC, máy chủ của riêng các doanh nghiệp để lưu trữ dữ liệu, phần mềm nữa mà chỉ còn một số các “máy chủ ảo” tập trung ở trên mạng. Các “máy chủ ảo” sẽ cung cấp các dịch vụ giúp cho doanh nghiệp có thể quản lý dữ liệu dễ dàng hơn, họ sẽ chỉ trả chi phí cho lượng sử dụng dịch vụ của họ, mà không cần phải đầu tư nhiều vào cơ sở hạ tầng cũng như quan tâm nhiều đến công nghệ. Xu hướng này sẽ giúp nhiều cho các công ty, doanh nghiệp vừa và nhỏ mà không có cơ sở hạ tầng mạng, máy chủ để lưu trữ, quản lý dữ liệu tốt. Hơn thế nữa, vượt ngoài phạm vi “quản lý dữ liệu”, nếu như toàn bộ các chương trình ứng dụng của doanh nghiệp được cài đặt trên hệ thống máy chủ đó để mọi người có thể dễ dàng truy cập sẽ tạo thuận lợi lớn cho doanh nghiệp để họ có thể tập trung vào nghiệp vụ của mình. Rõ ràng để có thể cung cấp được một hệ thống điện toán đám mây đáp ứng những nhu cầu như vậy thì nhà cung cấp cần một cơ sở vật chất và kỹ thuật cực kỳ tối tân, và trên thực tế chỉ có những hãng công nghệ lớn mới có thể đảm nhận nhiệm vụ này. Amazon và Google là một trong những hãng tiên phong phát triển điện toán đám mây và đã thu được một số thành quả nhất định. Gần đây, hãng phần mềm lớn nhất thế giới Microsoft cũng đã chính thức đưa ra sản phẩm điện toán đám mây của mình: Windows Azure Platform. Dù chỉ mới xuất hiện nhưng Windows Azure đã gây chú ý lớn đặc biệt là ở khả năng xây dựng các ứng dụng với khả năng mở rộng rất mạnh mẽ và linh hoạt. Windows Azure có khả năng hỗ trợ đa ngôn ngữ, tuy nhiên cũng giống như các sản phẩm khác của Microsoft, Windows Azure nhận được sự quan tâm rất lớn của cộng đồng phát triển .NET. Microsoft đã và đang tạo nên một cộng đồng phát triển ứng dụng Windows Azure và ngày càng có nhiều ứng dụng lớn được thiết kế lại để có thể đưa lên môi trường Windows Azure và tận dụng sức mạn của công nghệ điện toán đám mây này. Đồ án tốt nghiệp này nhằm tìm hiểu những nền tảng và xu hướng cơ bản của điện toán đám mây, từ đó đi vào nghiên cứu công nghệ điện toán đám mây Windows Azure của Microsoft và xây dựng một ứng dụng thử nghiệm công nghệ Windows Azure. Nắm được nền tảng công nghệ và đưa ra định hướng phát triển, đó chính là mục tiêu của đề tài: “Xây dựng hệ thống quản trị nội dung sử dụng Windows Azure Platform”. CHƯƠNG 1: TỔNG QUAN VỀ ĐIỆN TOÁN ĐÁM MÂY 1.1. Khái niệm điện toán đám mây 1.1.1. Định nghĩa Điện toán đám mây là một mô hình điện toán mà trong đó tất cả các dữ liệu và dịch vụ được đặt trong những trung tâm dữ liệu & dịch vụ khổng lồ (cloud - đám mây) và có thể truy cập được thông qua Internet. Hình 1.1: Đám mây điện toán [11] Theo định nghĩa, các nguồn điện toán khổng lồ như phần mềm, dịch vụ ... sẽ nằm tại các máy chủ ảo (đám mây) trên Internet thay vì trong máy tính gia đình và văn phòng (trên mặt đất) để mọi người kết nối và sử dụng mỗi khi họ cần. Một trong những ý tưởng quan trọng nhất của điện toán đám mây là khả năng mở rộng và công nghệ chủ chốt là công nghệ ảo hóa. Ảo hóa cho phép sử dụng tốt hơn một server bằng cách kết hợp các hệ điều hành và các ứng dụng trên một máy tính chia sẻ đơn lẻ. Ảo hóa cũng cho phép di trú trực tuyến (online migration) để khi một server quá tải, một instance của hệ điều hành (và các ứng dụng trên đó) có thể di trú đến một server mới, ít tải hơn. Từ góc nhìn bên ngoài, điện toán đám mây đơn giản chỉ là việc di trú tài nguyên tính toán và lưu trữ từ doanh nghiệp vào “đám mây”. Người dùng chỉ định yêu cầu tài nguyên và cloud provider hầu như tập hợp các thành phần ảo này trong hạ tầng của nó. (hình 1.2) Hình 1.2: Di trú tài nguyên vào “đám mây” [8] Nhưng tại sao chúng ta lại từ bỏ quyền kiểm soát tài nguyên của mình và cho phép chúng tồn tại ảo trong “đám mây” ? Có nhiều lý do nhưng quan trọng nhất là tính dễ mở rộng và chi phí. Ưu điểm mới của cloud computing là khả năng ảo hóa và chia sẻ tài nguyên giữa các ứng dụng. Hình dưới đây cho thấy một ví dụ. Hình 1.3: Ảo hóa server [8] Ở đây 3 nền tảng độc lập tồn tại cho các ứng dụng khác nhau , mỗi ứng dụng chạy trên server của nó. Trong “đám mây”, server có thể được chia sẻ (được ảo hóa) giữa các hệ điều hành và các ứng dụng để sử dụng server tốt hơn. Càng ít server thì càng cần ít không gian (giảm vùng bao phủ của các data center) và càng ít năng lượng làm mát (giảm tiêu hao nhiên liệu). Hiện nay, các nhà cung cấp đưa ra nhiều dịch vụ của điện toán đám mây theo nhiều hướng khác nhau, đưa ra các chuẩn riêng cũng như cách thức hoạt động khác nhau. Do đó, việc tích hợp các cloud để giải quyết một bài toán lớn của khách hàng vẫn còn là một vấn đề khó khăn. Chính vì vậy, các nhà cung cấp dịch vụ đang có xu hướng tích hợp các cloud lại với nhau thành “sky computing”, đưa ra các chuẩn chung để giải quyết các bài toán lớn của khách hàng. Hình 1.4: Sky Computing cho các “đám mây”? [13] 1.1.2. Sự cần thiết của điện toán đám mây Điện toán đám mây ra đời để giải quyết các vấn đề sau: Vấn đề về lưu trữ dữ liệu: Dữ liệu được lưu trữ tập trung ở các kho dữ liệu khổng lồ. Các công ty lớn như Microsoft, Google có hàng chục kho dữ liệu trung tâm 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ẽ cung cấ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 kho lưu trữ trung tâm. 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 (super-computer) để 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, tính toán lưới (grid computing). Vấn đề về cung cấp tài nguyên, phần mềm: Cung cấp các dịch vụ như hạ tầng như dịch vụ IaaS (infrastructure as a service), nền tảng như dịch vụ - PaaS (platform as a service), phần mềm như dịch vụ - SaaS (software as a service). Phần 1.3 sẽ đi sâu hơn về các dịch vụ này. 1.1.3. Đặc tính của điện toán đám mây Những đặc tính nổi bật của điện toán đám mây: Ảo hóa & chia sẻ tài nguyên (Shared, virtualized infrastructure): Trái tim của điện toán đám mây là khả năng Ảo hóa (Virtualization). Ảo hóa cung cấp khả năng chia sẻ các tài nguyên tính toán như servers, storage, data, …Nhờ khả năng ảo hóa, hệ thống sẽ được tận dụng hiệu quả hơn. Khả năng tự phục vụ (Self-service access): Cloud Computing cung cấp khả năng tự phục vụ (self-service) cho các user. Người sử dụng có khả năng truy cập trực tiếp vào các tài nguyên và sử dụng theo nhu cầu. Co giãn tài nguyên (Elastic resource pools): Tài nguyên cung cấp cho người sử dụng (servers, storage, data, …) có thể dễ dàng co giãn tùy theo nhu cầu sử dụng. Những tài nguyên không còn được sử dụng sẽ được giải phóng cho hệ thống. Hướng dịch vụ (Service-oriented): Hệ thống Cloud computing là hướng dịch vụ và được xây dựng dựa trên tập các dịch vụ. Các dịch vụ có thể độc lập hoặc được xây dựng dựa trên các dịch vụ đã có nhờ khả năng re-use. Chi trả theo mức sử dụng (Pay per use): Người dùng chỉ chi trả cho những tài nguyên nào họ sử dụng, về phía nhà cung cấp, khả năng này cho phép họ theo dõi các dịch vụ được sử dụng. Tự sửa lỗi (Self-Healing): Các ứng dụng/dịch vụ chạy trong môi trường Cloud Computing đều có đặc tính tự sửa lỗi. Mỗi ứng dụng khi thực thi đều có các bản copy – các phiên bản này tự động cập nhật. Khi ứng dụng gặp sự cố sẽ luôn có một bản copy tiếp tục được thực thi. 1.2. Kiến trúc tổng quan 1.2.1 Bên trong đám mây Bên trong “đám mây” không chỉ có một dịch vụ mà là một tập các dịch vụ. Các tầng định nghĩa mức dịch vụ được cung cấp. Hình 1.5: Các mức dịch vụ trong “đám mây” [8] Ba tầng dịch vụ được định nghĩa là tầng hạ tầng (Infrastructure) tầng nền tảng (Platform), tầng ứng dụng (Application), phía dưới là tầng phần cứng và tầng ảo hóa. Tầng dịch vụ thấp nhất là Hạ tầng (Hạ tầng như một dịch vụ - IaaS). IaaS là việc cho thuê hạ tầng như một dịch vụ bao gồm các máy tính ảo hóa và băng thông dành riêng cho lưu trữ và truy cập Internet. Về cơ bản, đó là khả năng cho thuê máy tính hay data center với ràng buộc về QoS sao cho người dùng có khả năng chạy phần mềm hay hệ điều hành bào đó tùy ý. Lên mức tiếp theo là Nền tảng (Nền tảng như một dịch vụ - PaaS). PaaS giống như IaaS nhưng gồm cả hệ điều hành và các dịch vụ cần thiết cho một ứng dụng chuyên biệt. Ví dụ PaaS ngoài server và lưu trữ ảo hóa  cung hệ điều hành đặc biệt và tập các ứng dụng (như một máy ảo) cùng các dịch vụ cần thiết như MySQL… Nói cách khác, PaaS là IaaS với một software stack dành cho một ứng dụng. Trên cùng là dịch vụ đơn giản nhất được cung cấp: ứng dụng. Tầng này được gọi là Phần mềm như một dịch vụ (SaaS) và nó là mô hình triển khai phần mềm từ một hệ tập trung sang chạy trên máy tính cục bộ. Dưới dạng dịch vụ “đo” được, SaaS cho phép bạn thuê một ứng dụng và chỉ trả tiền cho thời gian sử dụng. 1.2.2 Mô hình thực thi ứng dụng điện toán đám mây Hình 1.6: Phân bổ công việc cho các Virtual machine [12] Ứng dụng Cloud Computing chạy trên các máy chủ ảo được phân phối từ tầng Hardware Infrastructure, trước khi được xử lý bởi các Virtual Server, các ứng dụng người dùng yêu cầu sẽ đi qua tầng Workload distribution system (grid engine) và được phân bổ đến các máy chủ ảo. Tầng Grid Engine sẽ quản lý các yêu cầu tới các virtual server, chịu trách nhiệm tạo các bản copy, duy trì toàn vẹn dữ liệu. 1.2.3. Map Reduce Map Reduce là một khung ứng dụng (software framework) được Google phát triển vào năm 2003 để hỗ trợ tính toán song song trên các tập dữ liệu khổng lồ. Framework này hoạt động dựa trên 2 thao tác cơ bản trong lập trình: Map và Reduce. Các chương trình viết theo kiến trúc này sẽ tự động song song hóa khi thực hiện. Hệ thống sẽ đảm trách các công việc phân chia dữ liệu, lên lịch thực hiện, quản lý lỗi, quản lý kết nối trong quá trình chương trình thực hiện song song. Chương trình dựa trên kiến trúc MapReduce gồm 2 bước: “Map” step: Master node nhận đầu vào, phân bổ đầu vào thành các phần nhỏ và phân phối cho các node con, mỗi node con cũng có thể lặp lại quá trình đó. Các node con sẽ xử lý bài toán con nhận được và trả lại kết quả cho node cha. “Reduce” step: Master node nhận các kết quả từ các node con và tổng hợp thành kết quả chung. Điểm chú ý ở mô hình MapReduce là các thao tác “Map” và “Reduce” đều có thể xử lý phân tán và song song. Các thao tác “Map” độc lập với nhau và có thể thực hiện song song. Tương tự các “reducer” thực hiện trên mỗi key (tương ứng với 1 danh sách value) vào cùng 1 thời điểm. Các phương thức Map và Reduce định nghĩa dữ liệu theo các cặp (key, value). Map nhận một cặp input (key, value) và trả về một danh sách các cặp (key, value) trung gian. Map(k1,v1) -> list(k2,v2) Hình 1.7: Hàm Map một cặp (key, value) thành 1 danh sách [1] Map function sẽ thực hiện song song với tất cả các cặp đầu vào. Mỗi lời gọi Map sẽ sinh ra một danh sách (k2,v2). Sau đó MapReduce framework thu thập tất cả các cặp với cùng key từ tất cả các danh sách và đưa vào các nhóm, hàm Reduce tác động lên mỗi nhóm sẽ cho output. Reduce(k2, list (v2)) -> list(v3) Hình 1.8: Hàm Reduce tác động lên nhóm các cặp có cùng key [1] Tập các đầu ra là kết quả thu được. Ví dụ: Đếm số lần xuất hiện của mỗi từ trong 1 văn bản. [13] void map(String name, String document): // name: document name // document: document contents for each word w in document: EmitIntermediate(w, 1); void reduce(String word, Iterator partialCounts): // word: a word // partialCounts: a list of aggregated partial counts int result = 0; for each pc in partialCounts: result += ParseInt(pc); Emit(result); Ở ví dụ này, mỗi văn bản được chia làm làm các từ, mỗi từ sẽ được đếm bắt đầu từ 1 bởi hàm Map, sử dụng từ làm khóa. Sau đó framework sẽ ghép tất cả các cặp có cùng khóa (tức là cùng 1 từ) thành 2 danh sách và truyền cho hàm Reduce, hàm Reduce sẽ cộng tất cả các giá trị (value, bằng 1) trong danh sách lại và thu được kết quả là số lần xuất hiện của từ đó. 1.3. Các dịch vụ điện toán đám mây 1.3.1 Các mô hình cung cấp dịch vụ điện toán đám mây Phần mềm như dịch vụ (Software-as-a-Service)   SaaS là khả năng tiếp cận phần mềm trên Intenet như một dịch vụ. Cách tiếp cận trước đây của SaaS là ASP (Nhà cung cấp dịch vụ ứng dụng). Các ASP cung cấp các thuê bao đối với phần mềm được lưu trữ và phân phối trên mạng. ASP tính phí theo theo thời gian sử dụng. Theo cách này ,bạn không phải mua phần mềm mà chỉ thuê nó khi cần. Góc độ khác về SaaS là việc sử dụng phần mềm chạy từ xa trên mạng. Phần mềm này có thể ở dạng Web services hay các ứng dụng từ xa mà có thể theo dõi kết quả thông qua trình duyệt web. Nền tảng như dịch vụ (Platform-as-a-Service)   PaaS có thể mô tả như là một nền tảng được ảo hóa toàn bộ gồm một hay nhiều server (ảo hóa trên một tập các server vật lý), các hệ điều hành và các ứng dụng chuyên biệt (như là Apache và MySQL cho ứng dụng web). Trong một vài trường hợp, các nền tảng này có thể được định nghĩa và chọn trước. Trong trường hợp còn lại, bạn có thể cung cấp file hình ảnh máy ảo (VM image) chứa tất cả các ứng dụng theo yêu cầu người dùng. Một ví dụ của PaaS là Google App Engine. App Engine là một dịch vụ cho phép bạn triển khai ứng dụng web của mình trên kiến trúc rất khả mở của Google. App Engine cung cấp một sandbox cho ứng dụng Python của bạn (các ngôn ngữ khác sẽ hỗ trợ sau) như là các API Python để lưu trữ và quản lý dữ liệu (dùng Google Query Language) bên cạnh các hỗ trợ về xác thực người dùng, thao tác hình ảnh và gửi email. Hạ tầng như dịch vụ (Infrastructure-as-a-Service)   IaaS là việc phân phối hạ tầng máy tính như một dịch vụ. Tầng này khác với PaaS ở chỗ: phần cứng ảo được cung cấp không kèm theo software stack. Thay vào đó, người dùng tự đưa ra VM image của mình. IaaS là dạng “thô” nhất của “computing as a service”. Nhà cung cấp IaaS thương mại nối tiếng nhất là Amazon Elastic Compute Cloud (EC2). Trong EC2, bạn có thể chỉ định máy ảo (VM) đặc biệt của mình và triển khai các ứng dụng trên đó hay là cung cấp VM image của bạn và chạy nó trên server. Bạn chỉ phải trả tiền cho thời gian tính toán, dung lượng lưu trữ và băng thông mạng. Dự án Eucalyptus (Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems) là một bản thực thi mã nguồn mở của EC2, trong đó tương thích về giao diện với dịch vụ thương mại. Giống như EC2, Eucalyptus dựa trên Linux với Xen dùng cho ảo hóa hệ điều hành. Eucalyptus được phát triển tại đại học California cho mục đích nghiên cứu cloud computing. Bạn có thể download về hay thử nghiệm nó thông qua Eucalyptus Public Cloud (với một số hạn chế). Một thực thi khác theo kiểu của EC2 là nền tảng tính toán đám mây Enomalism (cũng là nguồn mở).  Enomalism dựa trên Linux với hỗ trợ cho cả Xen và Kernel Virtual Machine (KVM). Nhưng không giống các giải pháp IaaS thuần túy khác, Enomalism cung cấp một software stack  dựa trên TurboGears Web application framework và Python. Các phát triển “đám mây” khác: Nói thêm một vài gói nguồn mở dựa trên Linux khác. Hadoop là một Java™ software framework nguồn mở tương tự như PaaS nhưng tập trung vào thao tác các tập dữ liệu lớn trên các server  nối mạng với nhau (lấy ý tưởng từ Google MapReduce cho phép xử lý song song trên các tập dữ liệu lớn). Như thế thì nó sẽ tìm được các ứng dụng trong tìm kiếm và quảng cáo. Hadoop cũng cung cấp các dự án con phỏng theo các ứng dụng của Google. Ví dụ Hbase đưa ra chức n