Tài liệu Điện toán đám mây với google app engine

  • Số trang: 66 |
  • Loại file: PDF |
  • Lượt xem: 1345 |
  • Lượt tải: 6
nguyetha

Tham gia: 20/07/2015

Mô tả:

TRƯỜNG ĐẠI HỌC MỞ TP.HỒ CHÍ MINH KHOA CÔNG NGHỆ THÔNG TIN YZYZ ĐIỆN TOÁN ĐÁM MÂY VỚI GOOGLE APP ENGINE BÁO CÁO KHÓA LUẬN TỐT NGHIỆP SVTH: Nguyễn Ngọc Mãn MSSV: 10761245 Ngành: Khoa Học Máy Tính Hướng Chuyên Ngành: Mạng Máy Tính Lớp: TH07B1 Người Hướng Dẫn TS.Lê Xuân Trường Tp. Hồ Chí Minh –Tháng 9 năm 2011 LỜI CÁM ƠN Khóa luận được thành công là nhờ sự hướng dẫn, giúp đỡ của các thầy. Em xin chân thành cảm ơn các thầy đã bỏ thời gian quý báu của mình để giúp em hoàn thành tốt khóa luận này. NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN .. .. ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… MỤC LỤC Chương 1. TỔNG QUAN ................................................................................................... 1 1.1. Giới thiệu ................................................................................................................. 1 1.2. Mục đích làm đề tài ................................................................................................. 1 1.3. Phương pháp nghiên cứu...................................................................................... 2 1.4. Phạm vi .................................................................................................................... 2 1.5. Bố cục báo cáo ....................................................................................................... 2 Chương 2. 2.1. CƠ SỞ LÝ THUYẾT ........................................................................................ 4 Tổng Quan Điện Toán Đám Mây ............................................................................ 4 2.1.1. Giải pháp của điện toán đám mây ................................................................... 5 2.1.2. Cấu trúc các phần tạo nên đám mây ............................................................... 6 2.1.2.1. Các dịch vụ ứng dụng (SaaS)...................................................................... 6 2.1.2.2. Các dịch vụ nền tảng (PaaS) ....................................................................... 6 2.1.2.3. Các dịch vụ cơ sở hạ tầng (IaaS) ................................................................ 6 2.1.3. 2.2. Điện toán đám mây với Google App Engine .................................................... 7 Kiến trúc Google App Engine ................................................................................ 7 2.2.1. Tổng quan Google App Engine ....................................................................... 7 2.2.2. Môi trường phát triển ....................................................................................... 8 2.2.3. Các loại tập tin tĩnh trên server ........................................................................ 9 2.2.4. DataStore......................................................................................................... 9 2.2.5. Các loại Dịch Vụ ............................................................................................ 10 2.2.6. Google Accounts ........................................................................................... 10 2.2.7. Các hạn chế của Google App Engine............................................................ 10 2.3. Các thành phần của Google App Engine trong Java ........................................ 11 2.3.1. BackEnds....................................................................................................... 11 2.3.2. Datastore ....................................................................................................... 11 2.3.2.1. Thực Thể, Thuộc Tính và khóa.................................................................. 12 2.3.2.2. Transactions .............................................................................................. 15 2.3.2.3. Java Data Object (JDO) ............................................................................. 17 2.3.2.4. Java Persistence API (JPA) ....................................................................... 20 2.3.3. 2.3.3.1. BlobStore Java API .................................................................................... 23 2.3.3.2. Capabilities ................................................................................................ 24 2.3.3.3. Channel API ............................................................................................... 25 2.3.3.4. Image API .................................................................................................. 26 2.3.3.5. Mail API ..................................................................................................... 26 2.3.3.6. Memcache Service .................................................................................... 27 2.3.3.7. OAuth ......................................................................................................... 27 2.3.3.8. Task Queues ............................................................................................. 29 2.3.3.9. URL Fetch .................................................................................................. 29 2.3.3.10. Users Service......................................................................................... 29 2.3.3.11. XMPP ..................................................................................................... 30 2.3.3.12. YAML ..................................................................................................... 30 Chương 3. 3.1. Các dịch vụ của GAE..................................................................................... 23 HIỆN THỰC ỨNG DỤNG .............................................................................. 33 Sơ lược ứng dụng ................................................................................................ 33 3.1.1. Mô hình hoạt động ......................................................................................... 33 3.1.2. Sơ lược các chức năng .................................................................................. 33 3.2. Xây dựng ứng dụng Frontend và Backend ........................................................ 33 3.2.1. Đồng bộ hóa dữ liệu tài khoản google ........................................................... 33 3.2.2. Sử dụng App Engine Datastores ................................................................... 34 3.2.2.1. Tùy chỉnh lưu trữ dữ liệu ............................................................................ 34 3.2.2.2. Xác định mối kết hợp và bảng số............................................................... 34 3.2.2.3. Mô hình thực thể mối kết hợp .................................................................... 39 3.2.2.4. Mô hình vật lý dữ liệu................................................................................. 40 3.2.3. Sơ đồ trang web (Site map) ........................................................................... 40 3.2.4. Apache Struts Framework ............................................................................. 41 3.2.5. Thanh toán trực tuyến (Online Payment)....................................................... 42 3.2.5.1. Tổng quan về tính năng thanh toán ........................................................... 42 3.2.5.2. Cổng thanh toán Nganluong.vn ................................................................. 43 3.2.6. Các yêu cầu về tính toán ............................................................................... 44 3.2.7. Dịch vụ Mail ................................................................................................... 46 3.3. Xây dựng ứng dụng xem điểm trên Mobile ........................................................ 46 3.3.1. Mô hình hoạt động ......................................................................................... 47 3.3.2. Cách thức xử lý .............................................................................................. 47 Chương 4. KẾT QUẢ ĐẠT ĐƯỢC .................................................................................. 49 4.1. Các dịch vụ tiện ích dành cho giáo viên, phụ huynh và học sinh ................... 49 4.2. Tiện ích dành cho người quản trị ........................................................................ 53 4.3. Ứng dụng trên Mobile........................................................................................... 55 Chương 5. KẾT LUẬN..................................................................................................... 56 5.1. Lợi ích của điện toán đám mây với GAE ............................................................ 56 5.2. Hạn chế .................................................................................................................. 56 TÀI LIỆU THAM KHẢO ........................................................................................................ 57 DANH MỤC CÁC THUẬT NGỮ TIẾNG ANH VÀ CHỮ VIẾT TẮT Datastore: Nơi lưu trữ dữ liệu của điện toán đám mây OPENID: Thư viện giúp đăng nhập vào một website GAE: Google App Engine HDR: High Replication Datastore API: Một tập các thư viện SDK: Bộ công cụ dành cho phát triển phần mềm JDO: Java Data Object JPA: Java Persistence API JDOQL: Một loại ngôn ngữ dùng để truy vấn dữ liệu trong Java JPQL: Một loại ngôn ngữ dùng để truy vấn dữ liệu trong JPA YAML: Một ngôn ngữ giúp cấu hình ứng dụng Java XMPP: Một giao thức của Google App Engine trong ứng dụng Chat G talk DDos: một loại tấn công từ chối dịch vụ GFS: Google File System, hệ thống file của Google DANH MỤC CÁC HÌNH Hình 2.1 Mô hình các cụm máy chủ trên đám mây ....................................... 4 Hình 2.2 Các giải pháp về cung cấp các dịch vụ tài nguyên .......................... 5 Hình 2.3 Các phần tạo nên đám mây .......................................................... 6 Hình 2.4 Kiến trúc Google App Engine cho Java ......................................... 8 Hình 2.5 So sánh giữa hai loại lưu trữ dữ liệu........................................... 12 Hình 2.6 Các kiểu dữ liệu được hổ trợ bởi GAE ........................................ 15 Hình 2.7 Mô hình cập nhật của dữ liệu của Transaction............................. 16 Hình 2.8 Mô hình JDO ........................................................................... 17 Hình 2.9 Cấu hình JDO trong Google App Engine .................................... 18 Hình 2.10 Mô Hình JPA ......................................................................... 21 Hình 2.11 Mô Hình JPA trong Google App Engine .................................... 22 Hình 2.12 Tạo đối tượng EntityManager .................................................. 22 Hình 2.13 Cách thức lưu dữ liệu của BlobStore trong Datastore ................. 23 Hình 2.14 Cách sử dụng Capabilities ....................................................... 24 Hình 2.15 Các loại Capabilities GAE hổ trợ ............................................. 25 Hình 2.16 Trao đổi dữ liệu giữa client và server sử dụng Channel API ........ 26 Hình 2.17 Cấu hình Channel trong Google App Engine .................................... 26 Hình 2.18 Cấu hình Mail trong Google App Engine................................... 27 Hình 2.18 Chứng thực sử dụng OAuth ...................................................... 28 Hình 2.20 Chọn phương thức chứng thực trong GAE ................................. 30 Hình 3.1 Quy trình động bộ hóa website với google Accouts ....................... 34 Hình 3.2 Mối kết hợp xếp lớp học sinh ..................................................... 35 Hình 3.3 Mối kết hợp xếp lớp giáo viên .................................................... 35 Hình 3.4 Mối kết hợp xếp loại học sinh .................................................... 36 Hình 3.5 Mối kết hợp kiểm tra ................................................................. 37 Hình 3.6 Mối kết hợp giáo viên chủ nhiệm và phân ban lớp học .................. 38 Hình 3.7 Mô hình thực thể mối kết hợp ..................................................... 39 Hình 3.8 Mô hình vật lý dữ liệu ............................................................... 40 Hình 3.9 Sơ đồ của website ..................................................................... 40 Hình 3.10 Quy trình hoạt động của Struts Framework ............................... 41 Hình 3.11 Chứng thực tài khoản trong thanh toán ..................................... 42 Hình 3.12 Chuyển khoản trong thanh toán ................................................ 43 Hình 3.13 Thanh toán kiểu tích hợp đơn giản ............................................ 44 Hình 3.14 Mô hình hoạt động ứng dụng mobile ......................................... 47 Hình 3.15 Lưu đồ xử lý yêu cầu của ứng dụng Mobile ................................ 48 Hình 4.1 Thông tin của học sinh .............................................................. 49 Hình 4.2 Thông tin của giáo viên ............................................................. 50 Hình 4.3 Thông tin về điểm số ................................................................. 51 Hình 4.4 Thông tin về học phí ................................................................. 51 Hình 4.5 Chuyển khoản qua nganluong.vn................................................ 52 Hình 4.6 Gửi thông tin cho học sinh ......................................................... 53 Hình 4.7 Các tiện ích dành cho người quản trị .......................................... 54 Hình 4.8 màn hình người dùng nhập vào mã số sinh viên ........................... 55 Hình 4.9 người dùng sau khi tra cứu điểm thành công ............................... 55 Chương 1. TỔNG QUAN 1.1. Giới thiệu Thuật ngữ "cloud computing" ra đời giữa năm 2007 không phải để nói về một trào lưu mới, mà để khái quát lại các hướng đi của cơ sở hạ tầng thông tin vốn đã và đang diễn ra từ mấy năm qua. khái niệm này có thể được diễn giải một cách đơn giản: 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. Như vậy, cloud computing chỉ là khái niệm hoàn chỉnh cho một xu hướng không mới bởi nhiều doanh nghiệp hiện không có máy chủ riêng, PC chỉ cài một số phần mềm cơ bản còn tất cả đều phụ thuộc vào cloud. Chẳng hạn, họ đăng ký dịch vụ hosting cho website công ty, thuê công cụ quản lý doanh thu từ Salesforce.com, lấy dữ liệu khảo sát thị trường từ tổ chức Survey Monkey... Và tất nhiên, họ dùng Google để tìm kiếm, phân tích, chia sẻ và lưu trữ tài liệu. Với các dịch vụ sẵn có trên Internet, doanh nghiệp không phải mua và duy trì hàng trăm, thậm chí hàng nghìn máy tính cũng như phần mềm. Họ chỉ cần tập trung sản xuất bởi đã có người khác lo cơ sở hạ tầng và công nghệ thay họ. Google nằm trong số những hãng ủng hộ điện toán máy chủ ảo tích cực nhất bởi hoạt động kinh doanh của họ dựa trên việc phân phối các cloud (virtual server), và các web services sử dụng các dịch vụ hosting của Google, được gọi là Google App Engine (GAE). GAE là một nền tảng hosting bao gồm web server, cơ sở dữ liệu BigTable và kho lưu trữ file GFS. GAE cho phép viết ứng dụng web dựa trên cơ sở hạ tầng của Google. Nghĩa là chúng ta không cần quan tâm là trang web của chúng ta được lưu trữ như thế nào (kể cả database đi kèm), mà chỉ cần quan tâm đến việc phát triển ứng dụng theo các API do Google cung cấp. Vì thế khi sử dụng GAE chúng ta nhắm đến các lợi ích mà nó mang lại như giảm bớt chi phí bản quyền, các chi phí về mua và bảo dưỡng máy chủ, không cần quan tâm tới giới hạn phần cứng cũng như vị trí địa lý. Dữ liệu trong mô hình điện toán đám mây được lưu trữ 1 cách phân tán tại nhiều cụm máy chủ tại nhiều vị trí khác nhau. Điều này giúp tăng độ tin cậy, độ an toàn của dữ liệu mỗi khi có sự cố hoặc thảm họa xảy ra. Việc tập trung dữ liệu từ nhiều nguồn khác nhau sẽ giúp các chuyên gia bảo mật tăng cường khả năng bảo vệ dữ liệu của người dùng, cũng như giảm thiểu rủi ro bị ăn cắp toàn bộ dữ liệu. Và các lập trình viên cũng dễ dàng hơn trong việc cài đặt, nâng cấp ứng dụng của mình. Dựa vào những tiêu chí này, chúng ta có thể tạo ra một ứng dụng có thể phát triển thành ứng dụng lớn và nó không là một ý nghĩ xa vời dựa trên những lợi ích mà nó mang lại. 1.2. Mục đích làm đề tài -1 - Dựa trên công nghệ GAE mà cung cấp, phát triển một ứng dụng quản lý học sinh để minh họa về những lợi ích mà Google App Engine mang lại 1.3. Phương pháp nghiên cứu • Áp dụng công nghệ Servlet & JSP • Sử dụng FrameWork Apache Struts, Apache Struts là một web Application FrameWork mã nguồn mở được phát triển trong dự án Apache Jakarta, sử dụng mô hình MVC • Công nghệ về điện toán đám mây với Google App Engine • Sử dụng cơ sở dữ liệu App Engine Datastore, sử dụng một chuẩn giống lệnh SQL để truy vấn dữ liệu, được gọi là ngôn ngữ JDOQL(Java Data Object Query Language) • Chứng thực user sử dụng tài khoản Gmail 1.4. Phạm vi • Dịch vụ web(Web services): − Cung cấp cho phụ huynh và học sinh có thể tra cứu được điểm − Các thông tin về các lớp học − Danh sách lớp − Giáo viên chủ nhiệm lớp.v.v • Thanh toán trực tuyến (Online payment) − Cho phép phụ huynh đóng tiền trực tuyến • Phiên bản mobile − ứng dụng có thể xem điểm ngay trực tiếp trên mobile, chỉ cần Mobile có kết nối GPRS hoặc WIFI • Java Mail Service − Khả năng gửi mail tự động. Cập nhật các thông báo của nhà trường đến phụ huynh. 1.5. Bố cục báo cáo • Chương 1: Tổng quan − Ở chương này sẽ nói về mục đích nghiên cứu của đề tài, phương pháp thực hiện cũng như tính hiệu quả của đề tài. -2 - • Chương 2: Cơ sở lý thuyết Ở chương này sẽ nói về các công nghệ dựa trên Google App Engine − Các dịch vụ mà Google App Engine cung cấp − Giao tiếp với cơ sở dữ liệu Datastore − Chi tiết về Framework Struts − Chi tiết về giao dịch trực tuyến (Online Payment). • Chương 3: Hiện thực hệ thống Ở chương này sẽ nêu bật lên các công nghệ được áp dụng vào trong ứng dụng − Các dịch vụ ứng dụng vào hệ thống − Cách thức hiện thực hệ thống − Kết quả có được từ hệ thống • Chương 4: Kết quả đạt được − Ở chương này sẽ biểu diễn các hình ảnh của ứng dụng khi thực hiện được • Chương 5: Kết luận − Trong chương cuối này báo cáo sẽ trình bày các lợi ích và hạn chế của Google App Engine -3 - Chương 2. CƠ SỞ LÝ THUYẾT 2.1. Tổng Quan Điện Toán Đám Mây Từ “Đám mây” trong Điện toán đám mây thực chất chỉ là 1 phép ẩn dụ để mô tả Internet. Theo định nghĩa thì điện toán đám mây là biện pháp sử dụng dựa trên kết nối Internet, nơi mà những người dùng chia sẻ cùng một mạng máy chủ, phần mềm và dữ liệu Nếu như chúng ta sử dụng những ứng dụng web từ các hãng lớn như Google hoặc Microsoft thì chính chúng ta đang sử dụng Cloud Computing. Các ứng dụng web như Gmail, Google Calendar, Hotmail, SaleForce, Dropbox và Google Docs đều dựa trên Cloud Computing bởi vì khi kết nối tới những dịch vụ đó, người dùng đã được truy cập vào những cụm mây ảo của hệ thống máy chủ đồ sộ thống nhất của các hãng lớn trên Internet. Hình 2.1 Mô hình các cụm máy chủ trên đám mây Mỗi công ty thường chạy các ứng dụng ngay trên các máy chủ của chính họ. Những máy chủ được đặt ở ngay vị trí công ty. Điều đó đòi hỏi rất nhiều công sức trong việc bảo dưỡng, bảo trì, tiền bạc và thời gian để giữ cho mọi thứ liên tục được chạy, nâng cấp và đảm bảo. Nếu các doanh nghiệp áp dụng Điện toán đám mây, họ sẽ vẫn sử dụng được các ứng dụng y hệt nhưng chúng lại được đặt ở các cụm máy chủ trên Internet. Các doanh nghiệp chỉ việc kết nối qua mạng Internet mà không phải mất chút công sức nào để bảo trì, bảo dưỡng, nâng cấp, chạy máy chủ. Không những thế, các doanh nghiệp còn có thể cho khách hàng của họ sử dụng ứng dụng mà không phải mất công cài đặt -4 - 2.1.1. Giải pháp của điện toán đám mây Hình 2.2 Các giải pháp về cung cấp các dịch vụ tài nguyên ƒ Vấn đề về lưu trữ dữ liệu Dữ liệu được lưu trữ tập trung ở các trung tâm dữ liệu khổng lồ. Các công ty lớn như Microsoft, Google có hàng chục trung tâm dữ liệu nằm rải rác khắp nơi trên thế giới. Các công ty lớn này sẽ 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 trung tâm lưu trữ. ƒ Vấn đề về sức mạnh tính toán Có 2 giải pháp chính: • Sử dụng các siêu máy tính để xử lý tính toán. • Sử dụng các hệ thống tính toán song song, phân tán. ƒ Vấn đề về cung cấp tài nguyên, phần mềm. Cung cấp các dịch vụ như IaaS (infrastructure as a service), PaaS (platform as a service), SaaS (Storeage as a service). -5 - 2.1.2. Cấu trúc các phần tạo nên đám mây Hình 2.3 Các phần tạo nên đám mây 2.1.2.1. Các dịch vụ ứng dụng (SaaS) Tầng dịch vụ ứng dụng này lưu trữ các ứng dụng phù hợp với mô hình SaaS. Đây là những ứng dụng chạy trong một đám mây và được cung cấp theo yêu cầu. Đôi khi các dịch vụ này được cung cấp miễn phí và các nhà cung cấp dịch vụ tạo ra doanh thu từ những thứ khác như các quảng cáo Web và nhiều khi các nhà cung cấp ứng dụng tạo ra doanh thu trực tiếp từ việc sử dụng dịch vụ. Nếu bạn đã kiểm tra thư của bạn khi sử dụng Gmail hoặc Yahoo Mail hoặc được nhắc các cuộc hẹn khi sử dụng Google Calendar, thì bạn đã quen thuộc với tầng trên cùng của đám mây. Đây chỉ là một vài ví dụ về các kiểu ứng dụng này. Các ứng dụng được cung cấp qua mô hình SaaS làm lợi cho người tiêu dùng bằng cách giải phóng cho họ khỏi việc cài đặt và bảo trì phần mềm và các ứng dụng có thể được sử dụng thông qua các mô hình cấp phép có hỗ trợ trả tiền để sử dụng. 2.1.2.2. Các dịch vụ nền tảng (PaaS) Đây là tầng ở đó chúng ta thấy cơ sở hạ tầng ứng dụng nổi lên như là một tập hợp các dịch vụ. Các dịch vụ ở đây được dành để hỗ trợ cho các ứng dụng. Các ứng dụng này có thể đang chạy trong đám mây và chúng có thể đang chạy trong một trung tâm dữ liệu doanh nghiệp truyền thống. Để đạt được khả năng mở rộng cần thiết trong một đám mây, các dịch vụ khác nhau được đưa ra ở đây thường được ảo hóa. Các ví dụ trong phần này của đám mây bao gồm Amazon Web Services, Boomi, và Google App Engine. Các dịch vụ nền tảng này cho phép khách hàng chắc chắn rằng các ứng dụng của họ được trang bị để đáp ứng các nhu cầu của người dùng bằng cách cung cấp cơ sở hạ tầng ứng dụng dựa theo yêu cầu. 2.1.2.3. Các dịch vụ cơ sở hạ tầng (IaaS) -6 - Ở đây, chúng ta thấy một tập hợp các tài sản vật lí như các máy chủ, các thiết bị mạng và các đĩa lưu trữ được đưa ra như là các dịch vụ được cung cấp cho người tiêu dùng. Các dịch vụ ở đây hỗ trợ cơ sở hạ tầng ứng dụng và nhiều người tiêu dùng hơn. Cũng như với các dịch vụ nền tảng, sự ảo hóa là một phương pháp thường được sử dụng để tạo ra chế độ phân phối các nguồn tài nguyên theo yêu cầu. Ví dụ về các dịch vụ cơ sở hạ tầng bao gồm IBM Bluehouse, VMware, Amazon EC2, Microsoft Azure Platform, Sun ParaScale Cloud Storage 2.1.3. Điện toán đám mây với Google App Engine Google nằm trong số những hãng ủng hộ điện toán máy chủ ảo tích cực nhất bởi hoạt động kinh doanh của họ dựa trên việc phân phối các cloud (virtual server). Google cung cấp các dịch vụ ở hai tầng, ở tầng ứng cao nhất của đám mây là SaaS, Google cho phép sử dụng các dịch vụ của họ như Gmail, Google Doc và ở tầng Paas họ cung cấp các tập API dành cho các doanh nhiệp, cá nhân, hay tổ chức để hổ trợ cho các ứng dụng web Application sử dụng các dịch vụ hosting của Google, được gọi là Google App Engine (GAE). 2.2. Kiến trúc Google App Engine 2.2.1. Tổng quan Google App Engine Nhiều doanh nghiệp sử dụng rất nhiều phần cứng để chạy các ứng dụng như các cơ sở dữ liệu, các máy chủ ứng dụng, các hệ thống quản lý thay đổi và các công cụ lần vết tìm lỗi. Tuy vậy, ngày nay, các phần cứng này này có thể dễ dàng vứt bỏ để thay bằng việc sử dụng chính gói phần mềm ấy dưới dạng một dịch vụ đang chạy trên một cơ sở hạ tầng của người, hay tổ chức nào đó khác. Một doanh nghiệp có thể vứt bỏ phần cứng nằm bên dưới của một ứng dụng web cụ thể để thay bằng việc chạy ứng dụng trên phần cứng được cung cấp bởi Amazon, Google hoặc các đối tác khác. Các công ty này đưa ra khả năng thuê phần cứng ở các mức độ khác nhau, vừa vặn có thể lưu trữ một ứng dụng. Hơn nữa, các công ty này có khả năng quản lý mở rộng, sao lưu và bảo mật. Amazon và Google đã nêu ra những mối quan tâm này và đối phó tốt hơn với chúng ta, có nhiều đổi mới xung quanh các khía cạnh của việc chạy các nền tảng phần mềm sao cho hiệu quả. App Engine của Google là một nền tảng thực sự để xây dựng và triển khai ứng dụng Web Java, Python và Go trên cơ sở hạ tầng mở rộng của Google. Nó không yêu cầu lệ phí cấp phép sử dụng (trừ ra một số thư viện phần mềm mà chúng ta chọn để sử dụng trên cơ sở hạ tầng ấy yêu cầu giấy phép) và không cần chi phí trả trước cho băng thông hoặc không gian lưu trữ. Cơ sở hạ tầng của App Engine là hoàn toàn miễn phí cho đến khi đạt đến ngưỡng về mức sử dụng, dung lượng lưu trữ 500MB và theo như trích dẫn nguyên văn từ Google, "đủ CPU và băng thông cho khoảng 5 triệu lượt xem trang mỗi tháng". Chỉ cần nói rằng, khi đạt tới điểm mà Google bắt đầu gửi hóa đơn tính phí, thì ứng dụng Web của chúng ta rõ ràng đã tạo ra lưu lượng đáng kể , có nhiều người xem và có lãi. -7 - Hình 2.4 Kiến trúc Google App Engine cho Java 2.2.2. Môi trường phát triển Hiện nay Google App Engine hổ trợ phát triển trên ba môi trường nền tảng. Một là Java Runtime Environment, Python Runtime Environment và Go Runtime Environment. Môi trường được chọn phụ thuộc vào ngôn ngữ của ứng dụng và công nghệ mà chúng ta sử dụng để phát triển ứng dụng. Môi trường Java hổ trợ cho ứng dụng sử dụng Java 6 virtual Machine. Ứng dụng có thể phát triển bằng ngôn ngữ Java, hay hầu hết các ngôn ngữ khác mà có thể chạy trên JVM như PHP(sử dụng Quercus), Ruby (sử dụng JRuby), JavaScript, Scala, Groovy. Ứng dụng có thể chạy trên môi trường và sử dụng các dịch vụ bằng các công nghệ web chuẩn hiện nay như servlet và Java Persistence API Môi trường Python hổ trợ cho các ứng dụng được viết bằng ngôn ngữ Python 2.5 được cải tiến từ phiên bản CPython. Môi trường Python trên Google App Engine cho phép các ứng dụng Python sử dụng CGI, một thư viện chuẩn hổ trợ giao diện. Một ứng dụng python có thể sử dụng được hầu hết các thư viện chuẩn. Nhiều thư viện mã nguồn mở điều hoạt động tốt với google App Engine như là Django, Web2py, Pylons và App Engine còn chứa nhiều thư viện của riêng nó -8 - Môi Trường Go hổ trợ cho các ứng dụng được viết bằng ngôn ngữ Go phiên bản Release r58.1 trở lên, môi trường này hiện đang được thử nghiệm trên Google App Engine. Trong gói SDK của GAE đã chứa trình biên dịch của Go và một thư viện chuẩn. Môi trường Java, Python và Go có điểm chung đó là sử dụng cách thức giống nhau trong việc truy cập dữ liệu: một ứng dụng được định tuyến tới máy chủ của Google, sau đó máy chủ sẽ xem yêu cầu và chuẩn bị dữ liệu, nếu có dữ liệu theo yêu cầu thì máy chủ tiến hành trả lời cho client. Mỗi môi trường sử dụng một trình thông dịch riêng. Tất cả các ứng dụng của server cần một trình thông dịch riêng (JVM hay Python interpreter), vì thế trước khi các yêu cầu được gửi tới server, thì server phải thực hiện nhiệm vụ là chuẩn bị môi trường phù hợp với ứng dụng có yêu cầu. 2.2.3. Các loại tập tin tĩnh trên server Một website có rất nhiều tài nguyên.Hầu hết các website có resource được cấp phát cho trình duyệt mà không có sự thay đổi trong quá trình hoạt động thường xuyên của nó. Hình ảnh và CSS được mô tả như là sự xuất hiện của các trang web, mã JavaScript giúp chạy các tác vụ trên trình duyệt, và các trang HTML không có các thành phần dữ liệu động là các ví dụ của những tài nguyên này, được gọi chung là các tập tin tĩnh. Sự cấp phát tài nguyên này cho browser không liên quan tới mã code của ứng dụng, không cần thiết và không hiệu quả để đáp ứng từ các máy chủ. Thay vào đó, App Engine cung cấp một thành phần chuyên biệt của máy chủ chuyên dụng để cung cấp tĩnh các tập tin này. Các server này được tối ưu hóa cho kiến trúc nội bộ và phương thức truyền dẫn mạng để xử lý các yêu cầu về tài nguyên tĩnh. Khi duyệt website, các tập tin tĩnh cùng các mã ứng dụng được load lên. Để các tập tin tĩnh có thể đáp ứng yêu cầu của website, phải cấu hình một số khía cạnh trong các tập tin cấu hình bao gồm: các URL tĩnh của tập tin, các loại nội dung và hướng dẫn cho các trình duyệt để giữ các bản sao của các tập tin trong bộ nhớ Cache cho một số lượng và thời gian nhất định để làm giảm lưu lượng và tốc độ dựng hình của trang khi trang được load. Mặc định trong GAE thì các file hình ảnh và CSS trong thư mục resouse của ứng dụng đều là các tập tin Static. 2.2.4. DataStore Hầu hết các ứng dụng web hữu ích cần phải lưu trữ thông tin trong việc xử lý yêu cầu. Vì thế các website thường có các luồng xuất nhập dữ liệu và phải có một hoặc nhiều máy chủ web kết nối với máy chủ cơ sở dữ liệu để lưu trữ hoặc lấy dữ liệu. Tuy nhiên, khó khăn được đặt ra khi có nhiều kết nối đồng thời để yêu cầu dữ liệu, vì thế hệ thống máy chủ cơ sở dữ liệu phải đòi hỏi một số cấu hình về phần cứng để có thể đáp ứng được nhiều yêu cầu cùng lúc. Hiện nay, các hệ thống lưu trữ dữ liệu phổ biến nhất cho các ứng dụng web là lưu trữ theo table, hàng và cột, giản lượt không gian, sắp xếp, sử dụng các chỉ số index để nâng cao khả năng truy xuất dữ liệu. Các loại khác của hệ thống lưu trữ -9 - dữ liệu bao gồm các kho dữ liệu phân cấp (XML) và cơ sở dữ liệu hướng đối tượng (Object database). Mỗi loại cơ sở dữ liệu có ưu và khuyết điểm riêng, và loại tốt nhất phù hợp cho một ứng dụng phụ thuộc vào bản chất dữ liệu của ứng dụng. Và mỗi loại cơ sở dữ liệu có những kỹ thuật của riêng mình để phát triển qua các hệ thống các máy chủ. Hệ thống cơ sở dữ liệu của Google App Engine gần giống nhất với một cơ sở dữ liệu kiểu đối tượng(object). Nó không phải là một cơ sở dữ liệu quan hệ, điều này có thể sẽ yêu cầu thay đổi cách suy nghĩ về dữ liệu của ứng dụng. 2.2.5. Các loại Dịch Vụ Mối quan hệ giữa datastore và thời gian thực thi đó là một loại dịch vụ: dịch vụ này cung cấp các tập API để truy xuất vào hệ thống cơ sở dữ liệu. Google App Engine bao gồm một số dịch vụ hữu ích cho các ứng dụng web. Dịch vụ bộ nhớ Cache là một dịch vụ giúp khả năng truy xuất nhanh vì chính lợi thế của nó là nhanh, nhanh hơn nhiều so với truy xuất trực tiếp trên database. Nhưng một nhược điểm của nó là khi server có sự cố về mất điện hay tắt máy thì các giá trị ghi tạm thời trong memcache bị xóa hoàn toàn. Như tên gọi của nó, dịch vụ memcache sử dụng như là một bộ nhớ cache để lưu các kết quả của các truy vấn thường xuyên hoặc thực hiện các phép tính toán. Ứng dụng của App Engine có thể truy xuất đến các tài nguyên của các trang web khác sử dụng dịch vụ URL Fetch. Dịch vụ này tạo ra kết nối HTTP tới server khác trên internet để nhận về tài nguyên Ứng dụng App Engine có thể gửi mail sử dụng dịch vụ Mail. Tin nhắn có thể gửi đến các user khác trong Domain hoặc ngoài Domain và có thể nhận mail từ các user khác. Nếu ứng dụng được cấu hình để nhận mail thì tin nhắn sẽ được gửi đến địa chỉ của ứng dụng, sau đó ứng dụng sẽ định tuyến tới Mail service và hiển thị trên webform nếu có yêu cầu Ngoài gửi nhận Mail. App Engine còn cho phép ứng dụng có thể nhận tin nhắn chat của Google Talk sử dụng giao thức XMPP bằng dịch vụ XMPP service Xữ lý ảnh cũng là một phần trong dịch vụ của App Engine bao gồm các dịch vụ xoay ảnh, cắt ảnh, hiển thị ảnh… 2.2.6. Google Accounts App Engine có khả năng tích hợp các tài khoản Google vào ứng dụng, các tài khoản này người dùng đã đăng kí trên các dịch vụ Saas như Google Mail, Google Docs và Google Calendar. Sẽ bảo mật hơn nếu chúng ta có thể sử dụng tài khoản Google để chứng thực thay vì sử dụng một hệ thống đăng nhập riêng. Tất nhiên, Chúng ta có thể sử dụng hệ thống riêng của chúng ta hoặc là một nhà cung cấp khác mà GAE có hổ trợ như là OpenID 2.2.7. Các hạn chế của Google App Engine -10 - App Engine cung cấp phương thức kết nối an toàn(HTTPS) cho tên miền con của google hổ trợ là application-id.appspot.com, nhưng chưa hỗ trợ phương thức kết nối này cho tên miền khác. Google account đăng nhập luôn luôn sử dụng phương thức kết nối an toàn này Ứng dụng sử dụng dịch vụ URL Fetch để tạo kết nối HTTPS và gửi yêu cầu đến một website khác, nhưng App Engine không kiểm tra được certificate (giấy chứng nhận) sử dụng trên máy chủ từ xa. 2.3. Các thành phần của Google App Engine trong Java 2.3.1. BackEnds Backends được mô tả như là một phần phụ trợ của GAE, là một ứng dụng đặc biệt không có giới hạn thời gian yêu cầu, có bộ nhớ cao hơn và tăng băng thông CPU. BackEnds được thiết kế cho các ứng dụng cần hiệu suất nhanh hơn, cần bộ nhớ nhiều hơn, và các quá trình yêu cầu là liên tục. Nhưng phần phụ trợ này sẽ tính phí theo thời gian hoạt động 2.3.2. Datastore App Engine cung cấp hai tùy chỉnh lưu trữ dữ liệu khác nhau được phân biệt bởi tính khả dụng và tính nhất quán: • Kho dữ liệu Master/Slave: sử dụng một hệ thông sao chép master-slave. Có nghĩa là dữ liệu chỉ được lưu trữ tại một trung tâm dữ liệu vật lý. Tùy chọn này cung cấp tính nhất quán mạnh mẽ về dữ liệu cho tất cả các lần đọc và truy vấn. Tùy chọn này giúp người quản trị ít tốn dung lượng lưu trữ, và tốc độ CPU giảm đi đáng kể • Kho dữ liệu High Replication: Dữ liệu được nhân rộng trên khắp các trung tâm dữ liệu bằng cách sử dụng một hệ thống dựa trên thuật toán Paxos. Tùy chọn này cung cấp cho người sử dụng các tính năng về tổng hợp dữ liệu nhanh trong mỗi lần đọc và ghi dữ liệu xuống. Với tùy chọn này thì dung lượng lưu trữ sẽ tăng lên và chi phí cho CPU tăng gấp 3 lần so với tùy chọn Master/Slave Cơ sở dữ liệu App engine lưu trữ một hệ thống các đối tượng, được biết đến như là một thực thể. Một thực thể có thể có nhiều thuộc tính, tên và giá trị của một trong số các loại dữ liệu được hổ trợ bởi GAE. High Replication Master/Slave Cost Storage 1x 1/3x Put/Delete CPU 1x 5/8x -11 -
- Xem thêm -