báo cáo đồ án lập trình mạng đề tài tìm hiểu công nghệ điện toán đám mây và xây dựng ứng dụng calculator trên google app engine
Trang 1KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO ĐỒ ÁN LẬP TRÌNH MẠNG
Hoàng Kiều Hưng 06T1
Trang 2Đà Nẵng, 1/2012
Trang 3MỤC LỤC
PHẦN 1 MỞ ĐẦU 1
PHẦN 2 NỘI DUNG 3
I TỔNG QUAN VỀ CLOUD COMPUTING 3
I.1 Định nghĩa 3
I.2 Ưu và nhược điểm của điện toán đám mây 4
I.2.1 Ưu điểm 4
I.2.2 Nhược điểm 5
II GOOGLE APP ENGINE 6
II.1 Giới thiệu 6
II.1.1 Google 6
II.1.2 Google App Engine 6
II.2 Google App Engine SDK Java 7
II.2.1 Cài đặt 7
II.2.2 Đăng ký 8
II.2.3 Tạo dự án 14
II.2.4 Đưa dự án lên web 18
Cách 2: Dùng bộ appengine-java-sdk-1.5.5 22
III CODE VÀ DEMO 24
III.1 CODE 24
III.2 DEMO 31
PHẦN 3 TỔNG KẾT 33
TÀI LIỆU THAM KHẢO 34
Trang 4PHẦN 1: MỞ ĐẦU
Ngày nay, đối với các công ty, doanh nghiệp, việc quản lý tốt, hiệu quả dữ liệu của riêng công ty cũng như dữ liệu khách hàng, đố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ữ “cloud computing” ra đời bắt nguồn từ một trong những hoàn cảnh như vậy
Thuật ngữ “cloud computing” 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
Vậy “cloud computing” là gì ? Nó có thể giải quyết bài toán trên như thế nào và có những đặc điểm nổi bật gì ? Chúng ta sẽ đi qua các phần sau để nắm rõ vấn đề này.
Trang 5được lưu trữ thường trực tại các máy chủ trên Internet và chỉ được được lưu trữ tạm thời
ở các máy khách, bao gồm máy tính cá nhân, trung tâm giải trí, máy tính trong doanh nghiệp, các phương tiện máy tính cầm tay, ".
Trang 6cầu điện toán của người dùng Ví dụ, dịch vụ Google AppEngine cung cấp những ứng dụng kinh doanh trực tuyến thông thường, có thể truy nhập từ một trình duyệt web, còn các phần mềm và dữ liệu đều được lưu trữ trên các máy chủ.
“Điện toán đám mây” (cloud computing) đang dần trở thành lựa chọn của giới doanh nghiệp và người dùng internet Khả năng tiết kiệm chi phí, truy cập nhanh chóng, liên tục, và ổn định đã và đang là thế mạnh của những ứng dụng đám mây dành cho công việc.
Theo dự đoán của Merrill Lynch (5/2009), tới năm 2011 chi tiêu toàn cầu cho dịch vụ đám mây sẽ vào khoảng 160 tỷ USD.
Nói một cách dễ hiểu, đám mây chính là tập hợp các dịch vụ CNTT được cung cấp qua mạng Internet, mà ở đó người dùng sẽ được trao nhiều quyền chủ động hơn, chẳng hạn như thích gì dùng nấy, dùng bao nhiêu trả bấy nhiêu, được quyền lựa chọn những dịch vụ tốt nhất, có thể dùng bất cứ khi nào và bất cứ ở đâu.
Ưu và nhược điểm của điện toán đám mây
Ưu điểm
Những ưu điểm và thế mạnh dưới đây đã góp phần giúp “ điện toán đám mây” trở thành mô hình điện toán được áp dụng rộng rãi trên toàn thế giới.
Tốc độ xử lý nhanh: Điện toán đám mây cung cấp cho người dung những
dịch vụ nhanh chóng và giá thành rẻ dựa trên nền tảng cơ sở hạ tầng tập trung ( đám mây).
Chi phí thấp: Chi phí đầu tư ban đầu về cơ sở hạ tầng, máy móc và nguồn
nhân lựa của người sử dụng điện toán đám mây được giảm đến mức thấp nhất
Không bị ràng buộc vào thiết bị và địa lý: Với công nghệ này sẽ cho
phép người dùng truy cập và sử dụng hệ thống thông qua trình duyệt web ở bất kỳ đâu và trên bất kỳ thiết bị nào mà họ sử dụng (chẳng hạn là PC hoặc
là điện thoại di động…)
Chia sẻ tài nguyên và chi phí trên một địa bàn rộng: Tập trung cơ sở hạ
tầng tại một vị trí giúp người dùng không tốn nhiều giá thành đầu tư về trang thiết bị Công suất xử lý nhanh hơn do tài nguyên được tập trung Ngoài ra, người dùng không cần phải đầu tư về nguồn nhân lực quản lý hệ thống Khả năng khai thác và hiệu suất được cài thiện hơn 10-20% so với
hệ thống máy tính cá nhân thông thường.
Độ tin cậy cao: Điện toán đám mây không chỉ giành cho người dùng phổ
thông, mà còn phù hợp với các yêu cầu cao và liên tục của các công ty kinh doanh và các nghiên cứu khoa học Tuy nhiên, một vài dịch vụ lớn của điện toán đám mây đôi khi rơi vào trạng thái quá tải, khiến hoạt động bị ngưng trệ Khi rơi vào trạng thái này, người dùng không có khả năng để xử
lý các sự cố mà phải nhờ vào các chuyên gia từ đám mây tiến hành xử lý.
Trang 7 Tài nguyên sử dụng: Tài nguyên sử dụng của điện toán đám mây luôn
được quản lý và thống kê trên từng khách hàng và ứng dụng, theo từng ngày, từng tuần, từng tháng Điều này đảm bảo cho việc định lượng giá cả của mỗi dịch vụ do điện toán đám mây cung cấp để người dùng có thể lựa chọn phù hợp.
Nhược điểm
Tuy có nhiều ưu điểm vượt trội như vậy nhưng bên cạnh đó vẫn còn những vướng mắc cần được giải quyết như:
Tính riêng tư: Các thông tin người dùng và dữ liệu được chứa trên điện
toán đám mây có đảm bảo được riêng tư, và liệu các thông tin đó có bị sử dụng vì một mục đích nào khác?
Tính sẵn dung: Liệu các dịch vụ đám mây có bị “treo” bất ngờ, khiến cho
người dùng không thể truy cập các dịch vụ và dữ liệu của mình trong những khoảng thời gian nào đó khiến ảnh hưởng đến công việc?
Mất dữ liệu: Một vài dịch vụ lưu trữ dữ liệu trực tuyến trên đám mây bất
ngờ ngừng hoạt động hoặc không tiếp tục cung cấp dịch vụ, khiến cho người dùng phải sao lưu dữ liệu của họ từ “đám mây” về máy tính cá nhân Điều này sẽ mất nhiều thời gian Thậm chí một vài trường hợp, vì một lý
do nào đó, dữ liệu người dùng bị mất và không thể phục hồi được.
Tính di động của dữ liệu và quyền sở hữu: Một câu hỏi đặt ra, liệu
người dùng có thể chia sẻ dữ liệu từ dịch vụ đám mây này sang dịch vụ của đám mây khác? Hoặc trong trường hợp không muốn tiếp tục sử dụng dịch
vụ cung cáp từ đám mây, liệu người dùng có thể sao lưu toàn bộ dữ liệu của họ từ đám mây? Và làm cách nào để người dùng có thể chắc chắn rằng các dịch vụ đám mây sẽ không hủy toàn bộ dữ liệu của họ trong trường hợp dịch vụ ngừng hoạt động.
Khả năng bảo mật: Vấn đề tập trung dữ liệu trên các “đám mây” là cách
thức hiệu quả để tăng cường bảo mật, nhưng mặt khác cũng lại chính là mối lo của người sử dụng dịch vụ của điện toán đám mây Bởi lẽ một khi các đám mây bị tấn công hoặc đột nhập, toàn bộ dữ liệu sẽ bị chiếm dụng Tuy nhiên, đây không thực sự là vấn đề của riêng “điện toán đám mây”, bởi lẽ tấn công đánh cắp dữ liệu là vấn đề gặp phải trên bất kỳ môi trường nào, ngay cả trên các máy tính cá nhân
Trang 8I GOOGLE APP ENGINE
I.1 Giới thiệu
I.1.1 Google
Google là một công ty Internet có trụ sở tại Hoa Kỳ, được thành lập vào năm
1998 Sản phẩm chính của công ty này là công cụ tìm kiếm Google, được nhiều người đánh giá là công cụ tìm kiếm hữu ích và mạnh mẽ nhất trên Internet Trụ sở của Google tên là “Googleplex” tại Mountain View, California Giám đốc là Tiến sĩ Eric Schmidt, trước đây là giám đốc công ty Novell Tên “Google” là một lối chơi chữ của từ googol, bằng 10100 Google chọn tên này để thể hiện sứ mệnh của công ty để sắp xếp số lượng thông tin khổng lồ trên mạng Googleplex, tên của trụ sở Google, có nghĩa là 10googol.
Google hiện nay đã phát triển nhiều dịch vụ và công cụ cho cộng đồng chung cũng như trong lĩnh vực kinh doanh, bao gồm các ứng dụng Web, mạng lưới Quảng cáo
và giải pháp kinh doanh.
Google nổi tiếng bởi dịch vụ Tìm kiếm của nó, nhân tố chính dẫn đến thành công của Google Vào tháng 12 năm 2006, Google là công cụ tìm kiếm được sử dụng nhiều nhất trên mạng chiếm 50,8% thị phần, vượt xa so với Yahoo (23,6 %) và Window Live Search (8,4%) Google liên kết với hàng tỷ trang web, vì thế người sử dụng có thể tìm kiếm thông tin mà họ muốn thông qua các từ khóa và các toán tử Google cũng tận dụng công nghệ tìm kiếm của mình vào nhiều dịch vụ tìm kiếm khác, bao gồm Image Search (tìm kiếm ảnh), Google News, trang web so sánh giá cả Froogle, cộng đồng tương tác Google Groups, Google Maps và còn nhiều nữa.
Năm 2004, Google ra mắt dịch vụ email trên nền web, gọi là Gmail Gmail hỗ trợ công nghệ lọc thư rác và khả năng sử dụng Công nghệ tìm kiếm của Google để tìm kiếm thư Dịch vụ này tạo ra thu nhập bằng cách hiển thị quảng cáo từ dịch vụ AdWords
mà phù hợp với nội dung của email hiển thị trên màn hình.
Nhiều ứng dụng khác nữa có tại Google Labs, một bộ sưu tập những phần mềm chưa hoàn chỉnh Chúng đang được thử nghiệm để có thể đưa ra sử dụng trong cộng đồng.
I.1.2 Google App Engine
Theo Bách Khoa toàn thư mở Wikipedia thì Google App Engine (gọi tắt là
AppEngine, một số trường hợp được viết tắt là GAE) là giải pháp cho vấn đề điện toán đám mây Ở đó, Google cung cấp sẵn một hệ thống máy chủ điện toán đám mây, và người lập trình sẽ viết ứng dụng của mình lên đó Ứng dụng này sẽ chạy trên đám mây của Google.
Trang 9Google App Engine (GAE) là một nền tảng hosting bao gồm web server, cơ sở
dữ liệu BigTable and kho lưu trữ file GFS GAE cho phép bạn viết ứng dụng web dựa trên cơ sở hạ tầng của Google Nghĩa là bạn không cần quan tâm là trang web bạn đượ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ới App Engine,Bạn chỉ cần tải lên các ứng dụng của bạn, và nó sẵn sàng để phục vụ người dùng của bạn.
Chúng ta có thể sử dụng tên miền riêng của mình thông qua google apps (chẳng hạn như http://www.example.com/ ) Hoặc ta có thể dùng sub-domain miễn phí của appspot.com GAE cho phép được host miễn phí với dung lượng 500 MB lưu trữ và cho phép 10 GB băng thông lưu chuyển mỗi ngày hay tương đương 5 triệu pageview hàng tháng, vượt qua mức này bạn sẽ phải trả phí Dùng GAE, chúng ta khỏi phải thiết kế database, viết SQL để truy vấn data, map data vào object Chúng ta chỉ cần design các class và GAE tự động lo phần làm việc với database.
Hiện nay AppEngine hỗ trợ 2 loại ngôn ngữ là: Python và Java Một số ngôn ngữ khác như PHP cũng có thể chạy được nếu cài cùng với bộ chuyển từ PHP sang Java.
I.2 Google App Engine SDK Java
I.2.1 Cài đặt
Muốn cài đặt Google App Enginer cho Eclipse thì trước hết máy vi tính của ta phải cài đặt Java (JDK) Nếu chưa có ta có thể tải về phiên bản jdk mới nhất theo địa chỉ: http://www.oracle.com/technetwork/java/javase/downloads/index.html Sau khi cài đặt xong jdk ta tiếp tục vào webzise: http://www.eclipse.org/downloads/ để tài về Eclipse, chú ý cần phải tải tải phiên bản Eclipse đúng với Hệ điều hành của máy tính Sau khi có Eclipse ta tiến hành chạy thử một ứng dụng nhỏ để chắc chắn việc cài đặt jdk và Eclipse
đã ổn Lưu ý Google Plugin for Eclipse chỉ chạy được trên các phiên bản Eclipse 3.3 trở lên; Ở đây chúng ta đùng phiên bản Eclipse 3.7 (Indigo) dành cho Window 64 bit.
Ta có thể cài đặt Google Plugin cho Eclipse bằng cách sử dụng tính năng cập nhật của Eclipse
Trên giao diện chính của Eclipse ta click vào menu Help -> Install New Software.
Trong text box Work with ta đánh vào đó :
http://dl.google.com/eclipse/plugin/3.7 tiếp đó click và button Add, khi hộp thoại hiện ra ta click vào Ok.
Trang 10
Click vào mục Google Plugin for Eclipse và SDKs rồi next
Sau khi cài đặt xong Eclipse sẽ yêu cầu khởi động lại để hoàn tất quá trình cài đặt.
I.2.2 Đăng ký
Việc đăng ký thông qua các bước sau:
Bước 1: Ta có thể đăng kí một tài khoản trên Google theo đường link sau:
https://accounts.google.com/NewAccount hoặc nếu đã có tài khoản gmail rồi thì ta không cần đăng ký nữa mà dung luôn tài khoản gmail đó Sau khi
đã có tài khoản ta vào địa chỉ http://appspot.com/ để tiến hành kích hoạt Google App Enginer.
Trang 12 Bước 2: Chọn button Create Application
Bước 3: Để đảm bảo độ an toàn cho các ứng dụng thì ta phải xác minh tài
khoản bằng một số điện thoại hợp lệ Sau đó Google App Engine sẽ gửi mã xác nhật vào số điện thoại vừa được nhập vào đó.
Trang 13
Trang 14 Bước 4: Nhập mã xác nhận
Trang 15 Bước 5: Tiến hành tạo dự án trên Google App Enginer, ta được phép tạo
tối đa 10 ứng dụng.
I.2.3 Tạo dự án
Để tạo mới một dự án ta tiến hành theo các bước sau:
Bước 1: Trên cửa sổ chính của Eclipse ta chọn File menu -> New -> Web Application Project hoặc click vào New Web Application Project button
Trang 16trên toolbar
Bước 2: Khi cửa sổ “Create a Web Application Project” được mở, đánh
tên dự án vào “ Project name” và tên package vào “Package” rồi ấn button
Trang 17Finish để tạo dự án.
Một thư mục với tên Caculator được tạo để chứa dự án Bên trong là 2 thư mục, một thư mục mang tên /src để chứa mã nguồn java và một thư mục /war để chứa các file class được biên dịch từ file nguồn java Thư mục war được xem là một ứng dụng hoàn chỉnh dùng để up lên Google App.
Tạo cây thưc mục như sau:
Trang 18Hoàng Kiều Hưng Lớp 06T1 Nhóm 76
Calculator.java GreetingService.java GreetingServiceAsync.java
META-INF One.shared One.server
src
Caculator
One.client
GreetingServiceImpl.java FieldVerifier.java
war
Caculator
WEB-INF
Caculator.css Caculator.html
deploy lib appengine-web.xml
logging.properties web.xml
Trang 19Cửa sổ để lập trình
I.2.4 Đưa dự án lên web
Cách 1: Dùng tool có sẵn trong Eclipse (Biểu tượng hình máy bay phản lực)
Trang 20 Bước 1:
Trang 21 Bước 2: Click vào “App Engine project settings” để cấu hình
Bước 3: Lấy địa chỉ ID trên Google App Engine dán vào textbox
“Application ID” theo hình rồi ấn button OK
Trang 22 Bước 4: Click vào Deploy button đề tiến hành đưa dự án lên mạng.
Trang 24Cách 2: Dùng bộ appengine-java-sdk-1.5.5
Trước tiên ta cấu hình Application ID cho ứng dụng này
Ta tìm file appengine-web.xml theo đường dẫn war > WEB-INF > appingine-web.xml
Sau đó mở file này lên ở chế độ Design ta sửa lại như sau:
Ở thẻ application ta sửa lại thành tên tài khoản của ứng dụng ta đã đăng ký ở bước 5 (phía trên).
Trang 25Sau đó ta dùng tổ hợp phím Windows + R để mở cửa sổ Run Ta gõ vào cmd để mở chương
trình CMD lên Sau đó trong khung soạn thảo ta gõ vào dòng lệnh sau:
D:\appengine-java-sdk-1.5.5\bin\appcfg.cmd update D:\HOC-JAVA\Calculator\war
Trong quá trình đưa ứng dụng lên thì nó đòi hỏi chúng ta nhập email và mật khẩu của tài khoản Google
Trang 26Sau khi đưa lên hoàn tất sẽ có thông báo Update complete successfully.
Vậy xem như ta đã đưa ứng dụng lên thành công.
II CODE VÀ DEMO
II.1 CODE
Trong cây thư mục ở trên ta chỉ thao tác với file Caculator.java nằm trong package one.client
Ta tạo 1 class Caculator thực thi hiển thị theo lớp EntryPoint
public class Calculator implements EntryPoint {…}