Transcript Document

TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI TP.HCM
KHOA CÔNG NGHỆ THÔNG TIN
------o0o------
BÁO CÁO ĐỀ TÀI
NGHIÊN CỨU CÔNG NGHỆ ĐIỆN TOÁN ĐÁM MÂY. VIẾT MỘT
ỨNG DỤNG DEMO DÙNG MỘT TRONG CÁC GÓI THƯ VIỆN SAU :
Google App Engine của Google
Window Azure của Microsoft
Sun Cloud của Sun
Giáo viên hướng dẫn :
Đặng Nhân Cách
Sinh viên thực hiện : Lớp CN07B
Lê Văn Thao
Phan Vinh
Hoàng Thiên Châu
Nguyễn Hoài Hiền
Nguyễn Văn Đô
Dương Ngọc Định
NỘI DUNG
GiỚI THIỆU
CƠ SỞ LÍ THUYẾT
NỘI DUNG
HƯỚNG DẪN CÀI ĐẶT
DEMO CHƯƠNG TRÌNH
KiỂM TRA –ĐÁNH GIÁ
TÀI LiỆU THAM KHẢO
GiỚI THIỆU
Tóm tắt hệ thống :
►
Để giúp mọi người hình dung mô hình điện toán đám mây như thế nào. Nhóm chúng
tôi viết ứng dụng nhỏ dựa trên các gói thư viện có sẵn của google.Về hình thức các
bạn có thể hình dung ứng dụng này giống như là các blog, facebook, diễn đàn .. qua
đó thành lập các nhóm học tập để các bạn có thể trao đổi hay bình luân về một vấn
đề gì đó.
CƠ SỞ LÝ THUYẾT
GỒM 2 PHẦN:
ĐIỆN TOÁN ĐÁM MÂY
GOOGLE APP ENGINE
CƠ SỞ LÝ THUYẾT
► PHẦN
I: ĐIỆN TOÁN ĐÁM MÂY
1. Khái niệm :
Điện toán đám mây là môi trường tính toán dựa trên internet mà ở đó tất cả phần
mềm, dữ liệu, tài nguyên được cung cấp cho máy tính và các thiết bị khác theo nhu
cầu (tương tự như mạng điện)
CƠ SỞ LÝ THUYẾT
2. So sánh mô hình Cloud Computing và
Client/Server:
Cloud client trong cloud computing và client trong mô hình client/server giống nhau
ở vai trò là hiển thị dữ liệu và tiếp nhận các thao tác của người dùng, mọi tính toán
nghiệp vụ đều được thực hiện ở máy chủ. Tuy nhiên, điểm khác biệt lớn nhất giữa 2
mô hình này là ở việc tính toán trên máy chủ:
► Server trong mô hình client/ server thường mang ý nghĩa là 1 hoặc 1 cụm máy chủ
trung tâm chỉ làm nhiệm vụ thực hiện tính toán cho 1 số client cụ thể (trong 1 công
ty hoặc 1 tổ chức nào đó); trong khi server trong Cloud computing lại mang 1 ý
nghĩa rộng hơn nhiều. Server trong điện toán đám mây sẽ làm nhiệm vụ tính toán
cho bất kì client nào với bất kì công việc nào (mà nó hỗ trợ). Công việc tính toán lúc
này không phải thực hiện theo nghĩa vụ mà là theo dịch vụ. Với điện toán đám mây,
mọi thứ sẽ được cung cấp dưới dạng dịch vụ, và người dùng sẽ chỉ phải trả phí sử
dụng các dịch vụ đó.
►
CƠ SỞ LÝ THUYẾT
3.Ưu điểm và nhượt điểm:
a.
Ưu điểm:
►
Tính linh động : Người dùng có thể thoải mái lựa chọn các dịch vụ phù hợp với
►
►
nhu cầu của mình, cũng như có thể bỏ bớt những thành phần mà mình không
muốn. (Thay vì phải bỏ ra hàng trăm USD cho 1 bộ Ms office, ta có thể mua riêng
lẻ từng phần hoặc chỉ trả 1 khoản phí rất nhỏ mỗi khi sử dụng 1 phần nào đó của
nó).
Giảm bớt phí : Người dùng không chỉ giảm bớt chi phí bản quyền mà còn giảm
phần lớn chi phí cho việc mua và bảo dưỡng máy chủ. Việc tập hợp ứng dụng của
nhiều tổ chức lại 1 chỗ sẽ giúp giảm chi phí đầu tư ban đầu, cũng như tăng hiệu
năng sử dụng các thiết bị này một cách tối đa.
Tạo nên sự độc lập : Người dùng sẽ không còn bị bó hẹp với 1 thiết bị hay 1 vị trí
cụ thể nào nữa. Với điện toán đám mây, phần mềm, dữ liệu có thể được truy cập
và sử dụng từ bất kì đâu, trên bất kì thiết bị nào mà không cần phải quan tâm
đến giới hạn phần cứng cũng như địa lý
CƠ SỞ LÝ THUYẾT
►
►
►
b.
►
►
Tăng cường độ tin cậy : 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.
Bảo mật : 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. (Dữ liệu được đặt tại 6 máy chủ khác nhau →
trong trường hợp hacker tấn công, bạn cũng sẻ chỉ bị lộ 1/6. Đây là 1 cách chia sẻ
rủi ro giữa các tổ chức với nhau)
Bảo trì dễ dàng : Mọi phần mềm đều nằm trên server, lúc này, người dùng sẽ
không cần lo lắng cập nhật hay sửa lỗi phần mềm nữa. 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.
Nhược điểm :
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 dùng: 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?
CƠ SỞ LÝ THUYẾT
►
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
►
Các quy định pháp luật cho các dịch vụ, giữa khách hàng và nhà cung cấp
.
CƠ SỞ LÝ THUYẾT
4.Cấu trúc phân lớp:
CƠ SỞ LÝ THUYẾT
►
►
►
Client (Lớp Khách hàng): Lớp Client của điện toán đám mây bao gồm phần cứng
và phần mềm, để dựa vào đó, khách hàng có thể truy cập và sử dụng các ứng
dụng/dịch vụ được cung cấp từ điện toán đám mây. Chẳng hạn máy tính và
đường dây kết nối Internet (thiết bị phần cứng) và các trình duyệt web (phần
mềm)….
Application (Lớp Ứng dụng): Lớp ứng dụng của điện toán đám mây làm nhiệm vụ
phân phối phần mềm như một dịch vụ thông quan Internet, người dùng không
cần phải cài đặt và chạy các ứng dụng đó trên máy tính của mình, các ứng dụng
dễ dàng được chỉnh sữa và người dùng dễ dàng nhận được sự hỗ trợ.
Các đặc trưng chính của lớp ứng dụng bao gồm :
►
Các hoạt động được quản lý tại trung tâm của đám mây, chứ không nằm ở
phía khách hàng (lớp Client), cho phép khách hàng truy cập các ứng dụng
từ xa thông qua Website.
►
Người dùng không còn cần thực hiện các tính năng như cập nhật phiên
bản, bản vá lỗi, download phiên bản mới… bởi chúng sẽ được thực hiện từ
các “đám mây”.
Platform (Lớp Nền tảng): Cung cấp nền tảng cho điện toán và các giải pháp của
dịch vụ, chi phối đến cấu trúc hạ tầng của “đám mây” và là điểm tựa cho lớp ứng
dụng, cho phép các ứng dụng hoạt động trên nền tảng đó
CƠ SỞ LÝ THUYẾT
Nó giảm nhẹ sự tốn kém khi triển khai các ứng dụng khi người dùng không phải
trang bị cơ sở hạ tầng (phần cứng và phần mềm) của riêng mình.
► Infrastructure (Lớp Cơ sở hạ tầng): Cung cấp hạ tầng máy tính, tiêu biểu là môi
trường nền ảo hóa. Thay vì khách hàng phải bỏ tiền ra mua các server, phần mềm,
trung tâm dữ liệu hoặc thiết bị kết nối… giờ đây, họ vẫn có thể có đầy đủ tài nguyên
để sử dụng mà chi phí được giảm thiểu, hoặc thậm chí là miễn phí. Đây là một bước
tiến hóa của mô hình máy chủ ảo (Virtual Private Server)
► Server (Lớp Server - Máy chủ): Bao gồm các sản phẩm phần cứng và phần mềm
máy tính, được thiết kế và xây dựng đặc biệt để cung cấp các dịch vụ của đám mây.
Các server phải được xây dựng và có cấu hình đủ mạnh (thậm chí là rất may) để
đám ứng nhu cầu sử dụng của số lượng động đảo các người dùng và các nhu cầu
ngày càng cao của họ
CƠ SỞ LÝ THUYẾT
5. Các công ty cung cấp:
►
Các ông lớn đã bắt đầu rục rịch trong cuộc chạy đua đến với điện toán đám mây.
Những Google, Microsoft, Amazone, Sun đều đã và đang phát triển những nền tảng
điện toán đám mây của riêng mình. Các nền tảng điện toán đám mây lớn có thể kể
đến bây giờ bao gồm :
 Google App Engine của Google: http://code.google.com/appengine/
 Windows Azure của Microsoft :
http://www.microsoft.com/windowsazure/windowsazure/
 Nền tảng điện toán đám mây ra đời đầu tiên: Amazone Webservice của
Amazon.com
 Sun Cloud của Sun http://www.sun.com/solutions/cloudcomputing/
 Facebook
CƠ SỞ LÝ THUYẾT
PHẦN II: GOOGLE APP ENGINE
1.Giới thiệu:
►
►
►
►
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.
Google App Engine cho phép bạn chạy các ứng dụng web của bạn trên cơ sở hạ
tầng của Google. App Engine ứng dụng được dễ dàng để xây dựng, dễ bảo trì, và dễ
dàng để có quy mô như giao thông của bạn và nhu cầu lưu trữ dữ liệu lớn. Với App
Engine, không có máy chủ để duy trì: 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
Bạn có thể sử dụng tên miền riêng của mình (chẳng hạn như
http://www.example.com/ ) thông qua google apps. Hoặc bạn có thể dùng subdomain 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ô 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 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
CƠ SỞ LÝ THUYẾT
2.Các thành phần chính của Appengine:
a.Python Runtime
AppEngine hỗ trợ Python Runtime phiên bản 2.5.2. Hầu hết các thư viện của Python
Standard Library đều được hỗ trợ. Tuy nhiên do vấn đề về security nên các
extensions viết bằng C sẽ không được hỗ trợ. Điều này có nghĩa rằng bạn không thể
nhúng C extensions vào ứng dụng của bạn khi sử dụng App Engine.
► Python Runtime cung cấp APIs cho datastore, Google Accounts, App Engine services.
Để tiện lợi cho việc phát triển web AppEngine cũng cung cấp 1 web framework đơn
giản là webapp. Do viết bằng ngôn ngữ Python nên AppEngine hỗ trợ hầu hết các
Python framework như Django, CherryPy, Pylons, web.py với một ít thay đổi nhất
định.
►
b.Java Runtime Environment
►
Bạn có thể phát triển ứng dụng của bạn cho Java Runtime Environment sử dụng phổ
biến công cụ phát triển web Java và các tiêu chuẩn API. Ứng dụng của bạn tương
tác với môi trường bằng cách sử dụng the Java Servlet standard, và có thể sử dụng
các công nghệ ứng dụng web phổ biến như JavaServer Pages (JSP)
CƠ SỞ LÝ THUYẾT
►
Java Runtime Environment sử dụng Java 6. Các App Engine Java SDK hỗ trợ phát
triển các ứng dụng bằng cách sử dụng Java 5 hoặc 6.
► Đối với các kho dữ liệu App Engine, Java SDK bao gồm việc triển khai của Java Data
Objects (JDO) và Java Persistence API (JPA) interfaces. Ứng dụng của bạn có thể sử
dụng các API JavaMail để gửi tin nhắn email với dịch vụ App Engine Mail. Các
java.net HTTP API truy cập vào App Engine lấy URL dịch vụ. App Engine cũng bao
gồm các API cấp thấp cho các dịch vụ của mình để thực hiện thêm bộ điều hợp,
hoặc sử dụng trực tiếp từ ứng dụng. Xem tài liệu cho the datastore, memcache, URL
fetch, mail, images and Google Accounts APIs.
► Thông thường, các nhà phát triển Java sử dụng các ngôn ngữ lập trình Java và các
API để thực hiện các ứng dụng web cho JVM. Với việc sử dụng các trình biên dịch
tương thích với JVM, người phiên dịch, bạn cũng có thể sử dụng các ngôn ngữ khác
để phát triển các ứng dụng web, chẳng hạn như JavaScript, Ruby, hoặc Scala.
c.Datastore
►
Datastore là cơ chế để thao tác với dữ liệu trên hệ thống dữ liệu phân tán của
Google. APIs của Datastore sẽ cung cấp cho bạn Interface để có thể thao tác với các
dữ liệu phía dưới.
CƠ SỞ LÝ THUYẾT
d.Google Accounts:
►
AppEngine liên kết mật thiết với tài khoản Google. Bạn có thể cho user login vào ứng
dụng của mình bằng tài khoản Google của họ.
e.App Engine Services:
►
Cung cấp nhiều dịch vụ để bạn có thể sử dụng cho ứng dụng của mình. Những dịch
vụ có thể liệt kê ở đây là: URL Fetch, Mail, Memcache, Image Manipulation
3.Hạn chế:
►
Tuy nhiên, mặt trái của việc xây dựng ứng dụng trên GAE là bạn sẽ phụ thuộc hoàn
toàn vào các công nghệ của Google và rất khó có thể tách ra thành một ứng dụng
độc lập. Yahoo hay Microsoft sẽ chẳng bao giờ mua một ứng dụng xây dựng trên
nền tảng của đối thủ. Còn các nhà đầu tư cũng rất e ngại khi tài sản của công ty bạn
đặt hết vào tay người khác, dù cho đó là Google
HƯỚNG DẪN CÀI ĐẶT
I.Yêu cầu:
► Eclipese
.
► Google plugin cho Eclipese.
► AppEngine-java-SDK-1.3.8.zip.
► Có
tài khoản ứng dụng trên goole app engine
II.Các bước cài đặt:
1.Đăng kí tài khoản:
Bước 1:
►
Để triển khai các ứng dụng của bạn với các đám mây của Google, bạn cần một tài
khoản AppEngine. Làm được một tài khoản bạn cần một tài khoản email của Google.
Open http://appengine.google.com/ và đăng nhập với thông tin tài khoản gmail của
bạn.
HƯỚNG DẪN CÀI ĐẶT
HƯỚNG DẪN CÀI ĐẶT
Bước 2: chọn nút Create Application
HƯỚNG DẪN CÀI ĐẶT
Bước 3: Bạn cần phải xác minh tài khoản của bạn thông qua một số điện thoại
hợp lệ.Sau khi cung cấp số điện thoại của bạn, Google sẽ nhắn cho bạn một
mã xác minh qua SMS.
HƯỚNG DẪN CÀI ĐẶT
Bước 4: Nhập mã xác nhận của google
HƯỚNG DẪN CÀI ĐẶT
Bước 5: Tiến hành tạo một ứng dụng.Chúng ta được phép tạo được 10 ứng
dụng cho một tài khoản gmail
HƯỚNG DẪN CÀI ĐẶT
ứng dụng được tạo ra như sau
HƯỚNG DẪN CÀI ĐẶT
Đây là giao diện chính của ứng dụng chúng ta tạo ra
HƯỚNG DẪN CÀI ĐẶT
2. Cài đặt Eclipse và Google Plugin cho Eclipse
►
Bước 1 : Cài đặt Eclipse vào máy tính của bạn đang dùng.
►
Bước 2 : Truy cập vào địa chỉ http://code.google.com/appengine/
►
Bước 3 : Mở chương trình Eclipse và cài đặt Google Plugin for Eclipse vào eclipse
3.Tạo project:
Cấu trúc thư mục project :
►
Một thư mục với tên Guestbook đượ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:
HƯỚNG DẪN CÀI ĐẶT
Guestbook
Greeting.java
Src
(mã nguồn)
GuestbookServlet.java
PMF.java
Guestbook
SignGuestbookServlet.java
META-INF
Jdoconfig.xml
(file cấu hình)
war
Guestbook.jsp
WEB-INF
Web.xml
Appengine-web.xml
classes
lib
Compiled classes
JARs for Libraries
HƯỚNG DẪN CÀI ĐẶT
4. Triển khai ứng dụng
►
*
Để upload code và các file chương trình của bạn lên Google App Engine ta dùng
một tập lệnh có trong SKD có tên: appcfg.cmd
Cần chuẩn bị :
 + Đưa ID vào ứng dụng :
 Cần 1 ID application đã được đăng ký trên google để upload ứng dụng, theo như cách
đăng ký phần trên, ta có được ID application là : le-thao
 Ta vào thưc mục war/WEB-INF/appengine-web.xml mở file appengine-web.xml lên, đặt ID
application vào giữa thẻ <application> </application> rồi save lại như hình vẽ :
HƯỚNG DẪN CÀI ĐẶT
4. Triển khai ứng dụng
►
Để upload code và các file chương trình của bạn lên Google App Engine ta dùng
một tập lệnh có trong SKD có tên: appcfg.cmd
*
Bắt đầu Upload :
 Giải nén appengine-java-sdk-1.3.8.zip ra ổ D ta được D:\appengine-java-sdk, mở
cmd ta gõ:
 D:
// Chuyển về ổ D
HƯỚNG DẪN CÀI ĐẶT
Gõ: D:\\appengine-java-sdk\bin\appcfg.cmd update D:\guestbook\war
như hình vẽ
►
để upload
Điền mail và pass nếu chương trình hỏi, và upload thành công như hình dưới:
DEMO CHƯƠNG TRÌNH
KIỂM TRA-ĐÁNH GIÁ
1. Đạt được :
Đã xây dựng được ứng dụng demo dựa trên gói thư viện của google.
► ứng dụng nhỏ gọn ,dễ sử dụng.
►
2. Chưa đạt được:
►
Vì điện toán đám mây là một đề tài lớn, đã và đang được nhiều ông lớn như google ,
intel ,microsoft…. nghiên cứu và phát triển cho nên trong thời gian ngắn chúng em
chỉ có thể đáp ứng được yêu cầu của thầy đề ra ,chứ chưa có thể nào xây dựng một
ứng dụng lớn cho công ty hay doanh nghiêp.
3. Hướng phát triển:
►
Điện toán đám mây là một đề tài khá hay và mới mẻ hy vọng rằng qua sự hướng
dẫn của thầy .Chúng em có thể tiếp tục phát triển lên làm đề tài tốt nghiệp và ứng
dụng thực tế hơn.
TÀI LiỆU THAM KHẢO
http://code.google.com/intl/vi-VN/appengine/
► http://www.google.com.vn/
► http://congdongit.org/bai-viet-ve-cloud-computing/
► http://vi.wikipedia.org/wiki/Điện_toán_đám_mây
► Các slide bài giảng của giảng viên Đặng Nhân Cách
► http://www.vogella.de/articles/GoogleAppEngineJava/articl
e.html
►