xây dựng mạng xã hội eel trên nền tảng dịch vụ điện toán đám mây google app engine

82 730 1
xây dựng mạng xã hội eel trên nền tảng dịch vụ điện toán đám mây google app engine

Đ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

xây dựng mạng xã hội eel trên nền tảng dịch vụ điện toán đám mây google app engine

TRƢỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG ──────── * ─────── ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC NGÀNH CÔNG NGHỆ THÔNG TIN XÂY DƢ̣NG MẠNG XÃ HỘI EEL TRÊN ̉ ́ ́ NỀN TANG DICH VỤ ĐIỆN TOAN ĐAM ̣ MÂY GOOGLE APP ENGINE Sinh viên thực : Đào Phan Quang Lớp CNPM – K50 Giáo viên hƣớng dẫn: ThS Lê Quố c PGS.TS Huỳnh Quyết Thắng HÀ NỘI 6-2010 Xây dựng mạng xã hội eel nề n tảng di ̣ch vụ điê ̣n toán đám mây Google App Engine PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Thông tin sinh viên Họ tên sinh viên: Đào Phan Quang Điện thoại liên lạc 0984005591 Email: quangdp1986@gmail.com Lớp: CNPM Hệ đào tạo: Chính quy Đồ án tốt nghiệp đƣợc thực tại: Trƣờng Đa ̣i Học Bách Khoa Hà Nội Thời gian làm ĐATN: Từ ngày 21/12/2010 đến 28/5/2010 Mục đích nội dung ĐATN Tìm hiểu điện tốn đám mây mợt dịch vụ điện tốn đám mây Xây dƣ̣ng ƣ́ng du ̣ng dich vu ̣ đó ̣ Các nhiệm vụ cụ thể ĐATN - Tìm hiểu lý thuyết chung điện toán đám mây : lơ ̣i ich sƣ̉ du ̣ng và trở nga ̣i ́ - Tìm hiểu dịch vụ điện toán đám mây Google Google App Engine - Xây dƣ̣ng ƣ́ng du ̣ng thƣ̉ nghiê ̣m dich vụ đó ̣ Lời cam đoan sinh viên: Tôi – Đào Phan Quang - cam kết ĐATN công trình nghiên cứu thân dƣới hƣớng dẫn ThS Lê Quố c GS.TS Huỳnh Quyế t Thắ ng Các kết nêu ĐATN trung thực, chép tồn văn cơng trình khác Hà Nội, ngày 28 tháng năm 2010 Tác giả ĐATN Đào Phan Quang Xác nhận giáo viên hƣớng dẫn mức đợ hồn thành ĐATN cho phép bảo vệ: Hà Nội, ngày 28 tháng năm 2010 Giáo viên hƣớng dẫn PGS.TS Huỳnh Quyế t Thắ ng Sinh viên thực hiê ̣n : Đào Phan Quang K50 Lớp CNPM Xây dựng mạng xã hội eel nề n tảng di ̣ch vụ điê ̣n toán đám mây Google App Engine TĨM TẮT NỢI DUNG ĐỒ ÁN TỐT NGHIỆP Đồ án tốt nghiê ̣p bao gồ m phầ n chính: - - Phầ n 1: lý thuyết điện toán đám mây : khái niệm, lơ ̣i ích sƣ̉ du ̣ng và trở nga ̣i mà nó gă ̣p phải muố n phát triể n Phầ n 2: tìm hiểu môi trƣờng phát triển mợt dịch vụ điện tốn đám mây cu ̣ thể là Google App Engine : điể m ma ̣nh của dich vu ̣ , môt trƣờng lâ ̣p ̣ trình quản lý ứng dụng, dịch vụ kèm Phầ n 3: xây dƣ̣ng ̣ thố ng ma ̣ng eEL nề n tảng của Google App Engine để cài đặt thử nghiệm dịch vụ Sinh viên thực hiê ̣n : Đào Phan Quang K50 Lớp CNPM Xây dựng mạng xã hội eel nề n tảng di ̣ch vụ điê ̣n toán đám mây Google App Engine Mục lục PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP Danh mu ̣c các bảng Danh mu ̣c các hinh ̀ Danh mu ̣c tƣ̀ viế t tắ t và thuâ ̣t ngƣ̃ ̉ ̀ LƠI CAM ƠN Chƣơng : Tổ ng quan về điê ̣n toán đám mây 11 I Giới thiê ̣u 11 II Đặc điểm điện toán đám mây 11 III Lơ ̣i ích điê ̣n toán đám mây 14 III.1 Sƣ̣ mề m dẻo : 14 III.2 Cân nhắ c trƣớc sƣ̉ du ̣ng điê ̣n toán đám mây: 16 IV Các trở ngại cho phát triển điện toán đám mây 18 IV.1 Sƣ̣ sẵng sàng của dich vu :̣ 19 ̣ IV.2 Dƣ̃ liê ̣u bi ̣khóa với các dich vu : 19 ̣ ̣ IV.3 Bảo mật: 20 IV.4 Tắ c viê ̣c chuyể n dƣ̃ liê ̣u lên mây : 20 ̃ IV.5 Hiê ̣u không dƣ̣ tính đƣơ ̣c 21 IV.6 Khả tăng lƣu trữ 21 IV.7 Lỗi ̣ thố ng phân tán lớn 21 IV.8 Mở rô ̣ng nhanh 21 IV.9 Chia sẻ quan ̣ 21 IV.10 Bản quyền phần mềm 22 V Kế t chƣơng: 22 Chƣơng : Google App Engine 23 I Giới thiê ̣u 23 II Môi trƣờng phát triể n ƣ́ng du ̣ng 26 II.1 Tổ ng quan 26 II.2 Môi trƣờng thƣ̣c thi Java 26 II.3 Môi trƣờng servlet 26 Sinh viên thực hiê ̣n : Đào Phan Quang K50 Lớp CNPM Xây dựng mạng xã hội eel nề n tảng di ̣ch vụ điê ̣n toán đám mây Google App Engine II.4 Sandbox 28 II.5 Logging 30 II.6 Các biến môi trƣờng 31 II.7 Các dịch vụ kèm 32 III Quản lý ứng dụng GAE 48 IV Các ứng dụng điển hình 48 V Kế t chƣơng: 49 Chƣơng : Xây dƣ̣ng ̣ thố ng ma ̣ng EEL sƣ̉ du ̣ng kiế n trúc GEA 50 I Đặt vấ n đề : 50 II Nhiê ̣m vu ̣ của đồ án : 10 III Uses Case : 50 IV Kiế n trúc của ̣ thố ng : 52 IV.1 Google Web Toolkit : 52 IV.2 GWT RPC : 53 IV.3 Kiế n trúc MVP : 54 IV.4 Kiế n trúc ̣ thố ng kế t hơ ̣p GWT và MVP: 55 V Thiế t kế chi tiế t ̣ thố ng : 56 V.1 Tổ chƣ́c ngƣời dùng : 60 V.2 Chƣ́c tìm kiế m và kế t ba ̣n : 62 V.3 Chƣ́c ta ̣o và quản lý flashcard và danh sá ch tƣ̀ : 66 V.4 Chƣ́c tải lên và chia sẻ tài nguyên : 68 V.5 Tổ ng kế t tấ t cả các lớp : 68 VI Mô hình sở dƣ̃ liê ̣u: 72 VII Giao diê ̣n ƣ́ng du ̣ng : 73 VIII Tổ ng kế t các dich vu ̣ đã sƣ̉ du ̣ng: 75 ̣ VIII.1 Dịch vụ Account 76 VIII.2 Dịch vụ Image 77 VIII.3 Blobstore 78 VIII.4 Mail và Taskqueue 79 VIII.5 Memcache 79 IX Các vấn đề nhâ ̣n thấ y quá trình phát triể n ƣ́ng du ̣ng : 79 Sinh viên thực hiê ̣n : Đào Phan Quang K50 Lớp CNPM Xây dựng mạng xã hội eel nề n tảng di ̣ch vụ điê ̣n toán đám mây Google App Engine KẾT LUẬN 80 Kế t quả thu đƣơ ̣c: 80 Hạn chế: 80 Hƣớng phát triể n: 80 Tài liệu tham khảo 81 Sinh viên thực hiê ̣n : Đào Phan Quang K50 Lớp CNPM Xây dựng mạng xã hội eel nề n tảng di ̣ch vụ điê ̣n toán đám mây Google App Engine Danh mu ̣c các bảng Bảng So sánh ba dich vu ̣ AWS, GAE, Azure [1] 14 ̣ Bảng Giá phần cứng năm 2003, 2008 giá thuê lƣợng tìa nguyên tƣơng ứng AWS [1] 17 Bảng Trở nga ̣i chinh của điê ̣n toán đám mây 19 ́ Bảng Mô ̣t vài sƣ̣ cố nghiêm tro ̣ng của AWS và GAE 19 Bảng Đinh mƣ́c đố i vớ i các tài nguyên bản 24 ̣ Bảng Đinh mƣ́c lƣu trƣ̃ 24 ̣ Bảng Đinh mƣ́c với các tài nguyên liên quan tới lƣu trƣ̃ 25 ̣ Bảng Giá tài nguyên 25 Bảng Đinh mƣ́c dich vu ̣ Memcache 34 ̣ ̣ Bảng 10 Đinh mƣ́c dich vu ̣ URL fetch 36 ̣ ̣ Bảng 11 Đinh mƣ́c dich vu ̣ Mail 38 ̣ ̣ Bảng 12 Đinh mƣ́c dich vu ̣ XMPP 41 ̣ ̣ Bảng 13 Đinh mƣ́c dich vu ̣ Image 45 ̣ ̣ Bảng 14 Đinh mƣ́c dich vu ̣ Task queue 46 ̣ ̣ Sinh viên thực hiê ̣n : Đào Phan Quang K50 Lớp CNPM Xây dựng mạng xã hội eel nề n tảng di ̣ch vụ điê ̣n toán đám mây Google App Engine Danh mu ̣c các hinh ̀ Hình Mô hinh các vai trò [1] 11 ̀ Hình Ví dụ minh họa lợi ích tính mềm dẻo 15 Hình Phép thay đổi kích cỡ [4] 43 Hình Phép xoay [4] 43 Hình Phép lật ngang [4] 43 Hình Phép lật dọc [4] 43 Hình Phép cắt [4] 43 Hình Phép I'm Feeling Lucky [4] 43 Hình Uses Case chƣ́c bản 51 Hình 10 Uses Case chƣ́c ho ̣c tƣ̀ 52 Hình 11 Mô hình ƣ́ng du ̣ng GEA [3] 53 Hình 12 Mô hinh RPC GWT [7] 54 ̀ Hình 13 Ví dụ lớp xây dựng ứng dụng GWT kết hợp MVP 56 Hình 14 Biể u đồ lớp nhóm lớp hiể n thi ̣thông tin về ảnh đa ̣i diê ̣n 57 Hình 15 Gói client gồ m các interface dich vu ̣ (1) 58 ̣ Hình 16 Gói client gồm interface dịch vụ (2) 59 Hình 17 Các lớp gói server nhằm thực công việc phía server 60 Hình 18 Sơ đồ khố i quá trinh đăng nhâ ̣p 61 ̀ Hình 19 Sơ đồ khố i ta ̣o yêu cầ u kế t ba ̣n 62 Hình 20 Sơ đồ khố i chấ p nhâ ̣n hay tƣ̀ chố i yêu cầ u kế t ba ̣n 62 Hình 21 Mẫu FriendView 63 Hình 22 Tuầ n tƣ̣ viê ̣c tim và yêu cầ u kế t ba ̣n 65 ̀ Hình 23 Tuầ n tƣ̣ viê ̣c đồ ng ý và không đồ ng ý yêu cầ u kế t ba ̣n 66 Hình 24 Sơ đồ chƣ́c ta ̣o mới 66 Hình 25 Sơ đồ chƣ́c quản lý 67 Hình 26 Sơ đồ chƣ́c tim kiế m flashcard và danh sách tƣ̀ 67 ̀ Hình 27 Sơ đồ chƣ́c kiể m tra trí nhớ 68 Hình 28 Tấ t cả các lớp (1) 69 Hình 29 Tấ t cả các lớp (2) 70 Hình 30 Tấ t cả các lớp (3) 72 Hình 31 Các lớp mô phỏng dữ liệu sẽ đƣợc lƣu lại 72 Hình 32 Trang home của ngƣời dùng 73 Hình 33 Trang ba ̣n bè (danh sách và yêu cầ u kế t ba ̣n ) 73 Hình 34 Chƣ́c tải tài liê ̣u lên 74 Hình 35 Trang tim kiế m flashcard và danh sách tƣ̀ 74 ̀ Hình 36 Trang đinh nghia flashcard 75 ̣ ̃ Hình 37 Trang kiể m tra trí nhớ 75 Sinh viên thực hiê ̣n : Đào Phan Quang K50 Lớp CNPM Xây dựng mạng xã hội eel nề n tảng di ̣ch vụ điê ̣n toán đám mây Google App Engine Danh mu ̣c tƣ̀ viế t tắ t và thuâ ̣t ngƣ̃ Cloud computing SaaS Cloud Datacenter EC2 AWS CLR Pay as you go Bottleneck API GEA GWT Quota RPC JDO JPA JSNI History (trang 50) Work-around Điê ̣n toán đám mây Software as a Service : cung cấ p phầ n mề m nhƣ là mô ̣t dịch vụ Mô ̣t cu ̣m máy chủ Mô ̣t cu ̣m máy chủ (tƣơng tu ̣ cloud) Elastic Compute Cloud : tên dich vu ̣ cho thuê CPU và ̣ RAM của Amazon Amazon web service : gọi chung cho gói dich vu ̣ cho ̣ thuê cloud của Amazon Common language runtime : mô ̣t môi trƣờng trung gian ngôn ngũ họ Net Cơ chế trả phí theo lƣơ ̣ng sƣ̉ du ̣ng Thắ t cổ chai Application programming interface: giao diê ̣n lâ ̣p trình ứng dụng chỉ những chuẩn lập trình cần tuân theo Thông thƣờng là mẫu của các hàm Google App Engine : dịch vụ cloud Google Google Web Toolkit : công nghê ̣ frontend ta ̣o ƣ́ng du ̣ng web Đinh mƣ́c ̣ Remote Procedure Call : chế go ̣i hàm tƣ̀ xa Java Data Object : mô ̣t hai chế mà Sun phát triể n để ánh xa ̣ các lớp java thành dƣ̃ liê ̣u lƣu trƣ̃ Java Persistence API : chế còn la ̣i că ̣p với JDO Javascript native interface : giao diê ̣n cho phép sƣ̉ du ̣ng lại cá thƣ viên javascript GWT Chỉ chế trình duyệt lƣu trữ dữ liệu trang đã truy câ ̣p Mô ̣t phƣơng pháp để xƣ̉ lý mô ̣t vấ n đề, thƣờng là phƣơng pháp không đƣơ ̣c ngƣời thiế t kế ngôn ngƣ̃ hay môi trƣờng chủ định từ trƣớc Sinh viên thực hiê ̣n : Đào Phan Quang K50 Lớp CNPM Xây dựng mạng xã hội eel nề n tảng di ̣ch vụ điê ̣n toán đám mây Google App Engine ̉ ̀ LƠI CAM ƠN Để có thể hoàn thành đồ án tố t nghiê ̣p này , em xin chân thành cảm ơn các thầ y cô giáo trƣờng Đại Học Bách Khoa, đă ̣c biê ̣t là các thầ y cô của viê ̣n công nghê ̣ thông tin và truyề n thông đã da ̣y em không chỉ là kiế n thƣ́c mà còn là cả phƣơng pháp nghiên cứu cũng nhƣ những kiến thức hỗ trợ em việc thực đồ án Em xin cảm ơn thầy Lê Quốc đã hƣớng dẫn em em bắt đầu thực đồ án, thầ y đã cung cấ p tài liê ̣u và lời khuyên hƣ̃u ích cho em lúc em còn chƣa đinh ̣ hƣớng đƣơ ̣c mu ̣c tiêu của đồ án Em xin cảm ơn thầ y Huỳnh Quyế t Thắ ng vì đã đố c thúc cũng nhƣ tin tƣởng suôt quá trình làm đồ án Em cũng xin cảm ơn rấ t nhiề u nhƣ̃ng ngƣời khắ p thế giới đã trƣớc tim hiể u và đƣa nhƣ̃ng ̀ giải pháp cho những vấn đề đồ án Cuố i cùng em xin cảm ơn bạn bè , gia đinh đã đóng góp ý kiế n cũng nhƣ đô ̣ng ̀ viên em thời gian qua Sinh viên thực hiê ̣n : Đào Phan Quang K50 Lớp CNPM Xây dựng mạng xã hội eel nề n tảng di ̣ch vụ điê ̣n toán đám mây Google App Engine Với mỗi công đoa ̣n ta sẽ ta ̣o mô ̣t bô ̣ lớp View-Presenter-Display để quản lý viê ̣c thƣ̣c hiê ̣n tiế n trinh ̀ Quản lý : gồ m quản lý danh sách tƣ̀ của mình và nhƣ̃ng danh sách của ngƣời khác mình lƣu lại để học Hình 25 Sơ đồ chƣ́c quản lý Tìm kiếm : tìm kiếm flashcard thêm nó vào danh sách mình kiế m danh sách tƣ̀ và thêm nó vào danh sách các danh sách tƣ̀ yêu thich ́ , hay tìm Hình 26 Sơ đồ chƣ́c tìm kiế m flashcard và danh sách tƣ̀ Sinh viên thực hiê ̣n : Đào Phan Quang K50 Lớp CNPM 67 Xây dựng mạng xã hội eel nề n tảng di ̣ch vụ điê ̣n toán đám mây Google App Engine Kiể m tra: chọn một danh sách từ kiểm tra trí nhớ Hình 27 Sơ đồ chƣ́c kiể m tra trí nhớ IV.4 Chƣc tải lên và chia sẻ tài nguyên: ́ Mục tiêu chức la cho phép ngƣời dùng tải tập tin lên (ảnh, pdf, doc …) chia se chúng với những ngƣời bạn Chƣ́c này gồ m ba chƣ́c con: Tải tập tin lên: ta sẽ dùng dich vu ̣ blobstore để lƣu nô ̣i dung các tâ ̣p tin đƣơ ̣c tải ̣ lên Xóa tập tin đã đƣợc tải lên Tạo thông điệp thông báo cho bạn bè tài liệu mình IV.5 Tổ ng kế t tấ t cả các lớp : Dƣới là tông kế t toàn bô ̣ các lớp đã xây dƣ̣ng của ƣ́ng du ̣ng Sinh viên thực hiê ̣n : Đào Phan Quang K50 Lớp CNPM 68 Xây dựng mạng xã hội eel nề n tảng di ̣ch vụ điê ̣n toán đám mây Google App Engine Hình 28 Tấ t cả lớp (1) Sinh viên thực hiê ̣n : Đào Phan Quang K50 Lớp CNPM 69 Xây dựng mạng xã hội eel nề n tảng di ̣ch vụ điê ̣n toán đám mây Google App Engine Hình 29 Tấ t cả các lớp (2) Sinh viên thực hiê ̣n : Đào Phan Quang K50 Lớp CNPM 70 Xây dựng mạng xã hội eel nề n tảng di ̣ch vụ điê ̣n toán đám mây Google App Engine Sinh viên thực hiê ̣n : Đào Phan Quang K50 Lớp CNPM 71 Xây dựng mạng xã hội eel nề n tảng di ̣ch vụ điê ̣n toán đám mây Google App Engine Hình 30 Tấ t cả các lớp (3) V Mô hình sở dữ liệu: Cơ sở dƣ̃ liê ̣u sẽ sƣ̉ du ̣ng ở là Datastore của GEA sƣ̉ du ̣ng JDO, đó ta chỉ cầ n tổ chƣ́c các lớp model của MVP và quyế t đinh xem thông tin nào cầ n lƣu la ̣i ̣ Hình sau chỉ lớp với th ông tin sẽ đƣơ ̣c lƣu vào sở dƣ̃ liê ̣u Các lớp nằ m gói shared và đề u cài đă ̣t interface Serializable để có thể sƣ̉ du ̣ng trƣ̣c tiế p truyề n qua ma ̣ng Hình 31 Các lớp mô phỏng dữ liê ̣u sẽ đƣơ ̣c lƣu la ̣i Có một vấn đề thiếu sót tham chiếu giữa đối tƣợng , ví dụ nhƣ trƣờng owner của FriendList phải tham chiế u đế n trƣờng key của UserProfile JDO có cung cấ p các khai báo cho viê ̣c đó nhiên ta không sử dụng vì : - GWT yêu cầ u nhƣ̃ng thành phầ n ở phia client phải có mã java gố c (không ́ phải mã bytecode ) mới có thể dich đƣơ ̣c Chính lý khiến ta không ̣ thể sƣ̉ du ̣ng đƣơ ̣c mô ̣t vài lớp của datastore mà tiêu biể u là lớp Key Phầ n này đã đƣơ ̣c đề câ ̣p tài liêu tham khảo số “Google App Engine for Java” ở phầ n - Khi không sƣ̉ du ̣ng đƣơ ̣c lớp Key thì viê ̣c đinh nghia các quan ̣ không có ̣ ̃ nhiề u tác du ̣ng Ta có thể lấ y các đố i tƣơ ̣ng có quan ̣ với mô ̣t đố i tƣơ ̣ng qua Key của nó , nế u không dùng Key ta không thể lấ y đƣơ ̣c các đố i tƣơ ̣ng quan Sinh viên thực hiê ̣n : Đào Phan Quang K50 Lớp CNPM 72 Xây dựng mạng xã hội eel nề n tảng di ̣ch vụ điê ̣n toán đám mây Google App Engine ̣ Do đó để đơn giản hóa ƣ́ng du ̣ng không sƣ̉ du ̣ng các khai báo quan ̣ Các quan hệ đƣợc ngầ m hiể u VI Giao diên ƣng du ̣ng : ̣ ́ Trang home của mỗi ngƣời dùng: Hình 32 Trang home của ngƣời dùng Trên trang này ta có thể xem nhƣ̃ng thông điê ̣p mà nhƣ̃ng ngƣời danh sách bạn bè đăng lên Nhƣ̃ ng thông tin đƣơ ̣c chia sẻ sẽ xuấ t hiê ̣n ở Ta có thể đƣa ý kiế n của minh về nhƣ̃ng thông tin đó ̀ 2.Trang danh thông tin ba ̣n bè Hình 33 Trang ba ̣n bè (danh sách và yêu cầ u kế t ba ̣n ) Trên trang này ta có thể xem nhƣ̃ng thông tin sau: Sinh viên thực hiê ̣n : Đào Phan Quang K50 Lớp CNPM 73 Xây dựng mạng xã hội eel nề n tảng di ̣ch vụ điê ̣n toán đám mây Google App Engine - Danh sách nhƣ̃ng ngƣời dùng đã là ba ̣n cùng khả xóa bạn khỏi danh sách (mục Friend list) Danh sách yêu cầ u kế t ba ̣n: khả đồng ý/tƣ̀ chố i (mục Friend Request) Mời ba ̣n qua email (mục invite friend to join eEL) TÌm kiếm bạn bằng từ khóa (mục looking foor friend) 3.Chƣ́ c tải tài liê ̣u lên và chia sẻ : Hình 34 Chƣ́c tải tài liê ̣u lên Trên trang này ta có thể tải tài liê ̣u lên và chia sẻ chúng bằng cách ấn vào “Share” hay chỉ đơn giản là ta muố n lƣu trƣ̃ la ̣i để sau này “Download” về Giới ̣n dung lƣơ ̣ng tâp tin ở là giới ̣n của blob là 50MB Chƣ́c ta ̣o và quản lý flashcard và danh sách tƣ̀ : Hình 35 Trang tìm kiế m flashcard và danh sách tƣ̀ Trang này cho phép ngƣời dùng tim kiế m flashcard và danh sách tƣ̀ : ̀ Sinh viên thực hiê ̣n : Đào Phan Quang K50 Lớp CNPM 74 Xây dựng mạng xã hội eel nề n tảng di ̣ch vụ điê ̣n toán đám mây Google App Engine - Đối với flashcard tìm đƣợc một đối tƣợng ƣng ý ta có thể lƣu nó vào mô ̣t danh sách tƣ̀ của ngƣời dùng (Add to) Đối với dang sách từ ta có thể lƣu lại để sử dụng việc kiểm tra Hình 36 Trang đinh nghia flashcard ̣ ̃ Trang này cho phép ta đinh nghia các flashcard : ̣ ̃ - Mô ̣t thẻ flashcard bao gồ m: tƣ̀, nghĩa, tƣ̀ đồ ng nghia, tƣ̀ trái nghia ̃ ̃ - Mỗi tƣ̀ có thể có nhiề u nghia và đó có thể ta ̣o nhiề u flashcard cho cùng ̃ mô ̣t tƣ̀ Hình 37 Trang kiể m tra trí nhớ Trang này cho phép ta cho ̣n mô ̣t danh sách tƣ̀ không rỗng (có flashcard) nó sẽ lấ y ngẫu nhiên mô ̣t các thành phầ n của flashcard để hiể n thi ̣ Ngƣời dùng có nhiê ̣m vu ̣ nhâ ̣p tƣ̀ vào ô để kiể m tra khả ghi nhớ mình VII Tổ ng kế t các dich vu ̣ đã sƣ̉ du ̣ng: ̣ Mục sẽ tổng kết lại những dịch vụ GEA đã đƣợc sử dụng ứng dụng lý giải vì lại sử dụng chúng Sinh viên thực hiê ̣n : Đào Phan Quang K50 Lớp CNPM 75 Xây dựng mạng xã hội eel nề n tảng di ̣ch vụ điê ̣n toán đám mây Google App Engine VII.1 Dịch vụ Account : dùng để quản lý việc đăng nhập vào ứng dụng Khi xây dƣ̣ng chế xác thƣ̣ c cho ƣ́ng du ̣ng ta có thể tƣ̣ xây dƣ̣ng chế này nhƣ vẫn xây dƣ̣ng các ̣ thố ng cổ điể n Tuy nhiên cân nhắ c đế n vấ n đề liê ̣u ta có nhấ t thiế t phải xây dƣ̣ng mới không mà ta khó có thể đƣa ƣ́ng du ̣ng của ta và chạy một tảng khác , ta thấ y sẽ là phí công sƣ́c xây dƣ̣ng mớ i mô ̣t ̣ thố ng xác nhâ ̣n ngƣời dùng package com.eel.server; import javax.jdo.PersistenceManager; import import import import import import import import com.eel.client.LoginService; com.eel.shared.FriendList; com.eel.shared.LoginInfo; com.eel.shared.UserProfile; com.google.appengine.api.users.User; com.google.appengine.api.users.UserService; com.google.appengine.api.users.UserServiceFactory; com.google.gwt.user.server.rpc.RemoteServiceServlet; @SuppressWarnings("serial") public class LoginServiceImpl extends RemoteServiceServlet implements LoginService { public LoginInfo login(String requestUri) { PersistenceManager pm = PMF.get().getPersistenceManager(); UserService userService = UserServiceFactory.getUserService(); User user = userService.getCurrentUser(); LoginInfo loginInfo = new LoginInfo(); if (user != null) { loginInfo.setLoggedIn(true); loginInfo.setEmailAddress(user.getEmail()); try{ UserProfile u = pm.getObjectById(UserProfile.class, user.getEmail()); loginInfo.setNickname(u.getDisplayname()); pm.close(); }catch(Exception e){ UserProfile u = new UserProfile(user.getEmail(),user.getNickname()); FriendList fl = new FriendList(user.getEmail()); pm.makePersistent(u); pm.makePersistent(fl); loginInfo.setNickname(user.getNickname()); pm.close(); } Sinh viên thực hiê ̣n : Đào Phan Quang K50 Lớp CNPM 76 Xây dựng mạng xã hội eel nề n tảng di ̣ch vụ điê ̣n toán đám mây Google App Engine loginInfo.setLogoutUrl(userService.createLogoutURL(requestUri)); } else { loginInfo.setLoggedIn(false); loginInfo.setLoginUrl(userService.createLoginURL(requestUri)); } return loginInfo; } } VII.2 Dịch vụ Image : dùng việc giảm giữ liệu chuyển client client yêu cầ u xem ảnh đa ̣i diê ̣n và thumbn ail các ảnh đƣơ ̣c ngƣời dùng tải lên Do ảnh đƣợc ngƣời dùng tải lên có thể có dung lƣợng kích thƣớc lớn những ảnh đa ̣i diê ̣n hay ảnh hiể n thi ̣thumbnail chỉ có kich thƣớc nhỏ , sẽ phí phạm băng thông nế u ta truyề n ảnh lớn mỗi lần đƣợc yêu cầu package com.eel.server; import java.io.IOException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import import import import import com.google.appengine.api.blobstore.BlobKey; com.google.appengine.api.images.Image; com.google.appengine.api.images.ImagesService; com.google.appengine.api.images.ImagesServiceFactory; com.google.appengine.api.images.Transform; @SuppressWarnings("serial") public class Serve extends HttpServlet { private ImagesService imagesService = ImagesServiceFactory.getImagesService(); public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException { BlobKey blobKey = new BlobKey(req.getParameter("blob-key")); //blobstoreService.serve(blobKey, res); Image image = ImagesServiceFactory.makeImageFromBlob(blobKey); Transform resize = ImagesServiceFactory.makeResize(100, 150); image = imagesService.applyTransform(resize, image); res.setContentType("image/jpeg"); res.setHeader("Content-Disposition", "attachment; filename=\"" + "test" + '"'); res.getOutputStream().write(image.getImageData()); res.getOutputStream().flush(); res.getOutputStream().close(); Sinh viên thực hiê ̣n : Đào Phan Quang K50 Lớp CNPM 77 Xây dựng mạng xã hội eel nề n tảng di ̣ch vụ điê ̣n toán đám mây Google App Engine } } Trong đồ án ta chỉ dùng mô ̣t phép biể n đổ i đơn giản là thu nhỏ kich thƣớc của ́ ảnh VII.3 Blobstore : ta dùng dich vu ̣ này để lƣu ảnh đa ̣ i diê ̣n của ngƣời dùng và ̣ tập tin tài nguyên mà ngƣời dùng tải lên Dịch vụ sử dụng khác kết hơ ̣p với GWT yêu cầ u gƣ̉i nô ̣i dung tâ ̣p tin mô ̣t yêu cầ u HTTP POST - Phải tạo một form với method post , encode là multipart , action phải là giá trị tạo dịch vụ blobstore public String getUploadURL(String s) { BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService(); Return blobstoreService.createUploadUrl(s); } Phải có mô ̣t servlet để xƣ̉ lý khóa của các blob , điạ chỉ URL của servlet này đƣơ ̣c đƣa vào làm đố i số cho hàm createUploadUrl ở - package com.eel.server; import java.io.IOException; import java.util.Date; import java.util.Map; import import import import import javax.jdo.PersistenceManager; javax.servlet.ServletException; javax.servlet.http.HttpServlet; javax.servlet.http.HttpServletRequest; javax.servlet.http.HttpServletResponse; import import import import com.eel.shared.DataBlock; com.google.appengine.api.blobstore.BlobKey; com.google.appengine.api.blobstore.BlobstoreService; com.google.appengine.api.blobstore.BlobstoreServiceFactory; @SuppressWarnings("serial") public class Upload extends HttpServlet { private BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService(); public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { Map blobs = blobstoreService.getUploadedBlobs(req); BlobKey blobKey = blobs.get("myFile"); PersistenceManager pm = PMF.get().getPersistenceManager(); if (blobKey != null) { Sinh viên thực hiê ̣n : Đào Phan Quang K50 Lớp CNPM 78 Xây dựng mạng xã hội eel nề n tảng di ̣ch vụ điê ̣n toán đám mây Google App Engine String owner = req.getParameter("owner"); String name = req.getParameter("name"); String type = req.getParameter("type"); Date d = new Date(); DataBlock bw = new DataBlock(blobKey.getKeyString(),d,name,type,owner); pm.makePersistent(bw); pm.close(); } } } VII.4 Mail và Taskqueue : ứng dụng sử dụng dịch vụ để gửi mail mời đến những ngƣời chƣa đăng nhập vào hệ thống Mô ̣t ngƣời dùng sẽ điề n vào điạ chỉ mail của ngƣời ba ̣n mà ho ̣ muố n mời tham gia vào cô ̣ng đồ ng VII.5 Memcache : ứng dụng sử dụng dịch vụ để lƣu ảnh đại diện ngƣời dùng , có nhu cầ u sƣ̉ du ̣ng ảnh đa ̣i diê ̣n nên ta nên lƣu nó vào memcache nhằ m giảm lƣơ ̣ng truy câ ̣p và dƣ̃ liê ̣u lấ y tƣ̀ datastore (do đó giảm chi phí tăng tốc độ ứng dụng) VIII Các vấn đề nhận thấy quá trinh phát triển ứng dụng: ̀ - - - - GEA giới ̣n không cho phép ta ̣o thêm luồ ng mới , điề u này gây khó khăn triể n khai các giải pháp yêu cầ u ta ̣o các luồ ng xƣ̉ lý mới Ví dụ nhƣ chức tải tâ ̣p tin lên , nế u muố n xƣ̉ lý nô ̣i dung của tâ ̣p tin đó thì phải xƣ̉ lý hồn tồn bằng mợt giải pháp java Tuy nhiên nế u thƣ̣c hiê ̣n mô ̣t máy chủ Window /Linux ta có thể cài đă ̣t mô ̣t công cu ̣ phâ n tich và go ̣i hàm ́ console để xƣ̉ lý GWT và GEA cùng của Google nhƣng không hoàn toàn tƣơng thich ́ Điề u này thấ y rõ nhấ t ở viê ̣c tổ chƣ́c sở dƣ̃ liê ̣u , lớp có thể sử dụng để truyề n qua RPC rấ t ̣n chế Đơn giản n hƣ viê ̣c truyề n các đố i tƣơ ̣ng kiể u Collection (nhƣ List, Map…) không đƣợc Ta phải chuyể n chúng về kiể u mảng Hoă ̣c nhƣ dich vu ̣ blobstore chƣa thể truyể n dƣ̃ liê ̣u của tâ ̣p tin ̣ tải lên qua RPC GEA không cho phép ta ̣o mới tâ ̣ p tin , điề u này bắ t buô ̣c thông tin phải lƣu vào sở dữ liệu GEA cũng không tƣơng thich với tấ t cả framework phổ bi ến Nhƣ ́ Hibernate hoàn toàn không tƣơng thich , Struts cầ n work -around mới có thể ́ hoạt đông GEA gắ n chă ṭ với giao thƣ́c HTTP , một số cổng định (80,443) Điều gây hạn chế cho loại ứng dụng yêu cầu giao thức khác Sinh viên thực hiê ̣n : Đào Phan Quang K50 Lớp CNPM 79 Xây dựng mạng xã hội eel nề n tảng di ̣ch vụ điê ̣n toán đám mây Google App Engine KẾT LUẬN Kế t quả thu đƣơ ̣c: Trong quá trinh làm đồ án , em đã đa ̣t đƣơ ̣c mô ̣t số kế t quả sau: ̀ - Hiể u rõ các lơ ̣i ích của điê ̣n toán đám mây - Tìm hiểu đƣợc mợt cài đặt cụ thể điện tốn đám mây dịch vụ GEA - Làm chủ đƣợc môi trƣờng phát triển ứng dụng Java GEA - Gián tiếp tìm hiểu một công nghệ phát triể n frontend là GWT và kiế n trúc lâ ̣p trình MVP - Xây dƣ̣ng đƣơ ̣c mô ̣t ƣ́ng du ̣ng nề n tảng dich vu ̣ GEA , tƣ̀ đó có cái kinh ̣ nghiê ̣m xƣ̉ lý các vấ n đề lâ ̣p trình xây dƣ̣ng ƣ́ng du ̣ng GEA Hạn chế: Do thời gian han he ̣ p của quá trình làm đồ án và viê ̣c thƣ̣c hiê ̣n đồ án mô ̣t mình nên chƣơng trinh chỉ thƣ̣c hiê ̣n các chƣ́c bản nhằ m liên kế t các dich vu ̣ của ̣ ̀ GEA vào mô ̣t ƣ́ng du ̣ng thƣ̣c tế không tránh khỏi có thể có lỗi hay c ác xử lý có thể mang tính chủ quan Mô ̣t ̣n chế nƣ̃a là ƣ́ng du ̣ng chƣa sƣ̉ du ̣ng mô ̣t framework nào Tuy GEA không phải là tƣơng thich với mo ̣i framework nhƣng viê ̣c ́ sƣ̉ du ̣ng mô ̣t framework không đƣơ ̣c hỗ trơ ̣ đầ y đủ là mô ̣t kinh nghi ệm quý cho việc thƣ̉ nghiê ̣m phát triể n ƣ́ng dung Hƣớng phát triể n: Nhƣ̃ng vấ n đề giải quyế t đồ án là nề n tảng bản nhấ t cho các ƣ́ng du ̣ng dich vu ̣ GEA Còn nhiều vấn đề có thể phát triển: ̣ - Về mă ̣t chƣ́c có thể bổ sung thêm chế cho viê ̣c ho ̣c các kỹ khác nhƣ nghe, nói - Hiê ̣u có thể đƣơ ̣c nâng cao bằ ng viê ̣c tố i ƣu hóa mã nguồ n ƣ́ng du ̣ng , hai phầ n GWT và mã sƣ̉ du ̣ng dich vu ̣ GEA ̣ - Cầ n thƣ̉ nghiê ̣m tố c đô ̣ và tố i ƣu hóa hiê ̣u quả truy vấ n dƣ̃ liê ̣u - Cài đặt việc sử dụng hệ thống memcache để tăng hiệu ứng dụng - Khai thác nhƣ̃ng thông tin của ngƣời dùng để trơ ̣ giúp quyế t đinh lƣ̣a cho ̣n ̣ Sinh viên thực hiê ̣n : Đào Phan Quang K50 Lớp CNPM 80 Xây dựng mạng xã hội eel nề n tảng di ̣ch vụ điê ̣n toán đám mây Google App Engine Tài liệu tham khảo [1] Michael Armbrust, Armando Fox, Rean Griffith, Anthony D.Joseph, Randy Katz, Andy Konwinski, Gunho Lee, David Patterson, Ariel Rabkin, Ion Stoica and Matei Zaharia, “Above the Clouds : A Berkeley View of Cloud Computing”, UC Berkeley Reliable Adaptive Distributed Systems Laboratory, 10/2/2009, http:// www.eecs.berkeley.edu/Pubs/TechRpts/ 2009/ EECS-2009-28.html [2] iBm Center for the Business of Government, “Moving to the cloud: An introduction to cloud computing in government”, 2009, http://www.businessofgovernment.us/pdfs/WyldCloudReport.pdf [3] Tahir Akram, “Developing Java Web Applications In Google App Engine”, 19/12/2009, slide ta ̣i trang www.slideshare.net [4] Google App Engine Documentation , http://code.google.com/appengine/ [5] Fay Chang, Jeffrey Dean, Sanjay Ghemawat, Wilson C Hsieh, Deborah A Wallach, “Bigtable: A Distributed Storage System for Structured Data”, OSDI 2006, http://labs.google.com/papers/bigtable.html [6] SanjayGhemawat ,HowardGobioff, and Shun-TakLeung, “The Google File System”, 2003, http://labs.google.com/papers/gfs-sosp2003.pdf [7] Google Web Toolkit Documentation , http://code.google.com/webtoolkit/ [8] Ryan Dewsbury, “Google Web Toolkit Application”, 2009, NXB Prentice Hall [9] Rick Hightower, phầ n “Google App Engine for Java” , 8/2009, http://www.ibm.com/developerworks/java/library/j-gaej1/ Sinh viên thực hiê ̣n : Đào Phan Quang K50 Lớp CNPM 81 ... Phan Quang K50 Lớp CNPM 12 Xây dựng mạng xã hội eel nề n tảng di ̣ch vụ điê ̣n toán đám mây Google App Engine Mô ̣t điể n hinh khác là Google App Engine AppEngine nhắ m vào thi ̣trƣờng... n tảng là Google App ̣ Engine Sinh viên thực hiê ̣n : Đào Phan Quang K50 Lớp CNPM 22 Xây dựng mạng xã hội eel nề n tảng di ̣ch vụ điê ̣n toán đám mây Google App Engine Chƣơng : Google. .. Lớp CNPM 30 Xây dựng mạng xã hội eel nề n tảng di ̣ch vụ điê ̣n toán đám mây Google App Engine INF/classes/logging.properties" /> II.6 Các

Ngày đăng: 23/05/2014, 18:12

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan