Để 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ì đó.
24 trang |
Chia sẻ: ngtr9097 | Lượt xem: 4921 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Đề tài Nghiên cứu công nghệ điện toán đám mây để viết một số chương trình- Google App Engine của Google, Window Azure của Microsoft, Sun Cloud của Sun, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
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
Mục lục:
Chương I: 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ì đó.
Chương II: Cơ sở lý thuyết
1.Điện toán đám mây là gi:
Đ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) – Theo Wikipedia
Mô hình này đã và đang được các công ty ,doanh nghiệp hướng đến .Sử dụng mô hình này các doanh nghiệp chỉ cần trả phí cho những ứng dụng mà họ dung ,mà không cần đầu tư nhiều vào sơ sở hạ tầng, cũng như quan tâm nhiều đến công nghệ .
Hình 1: Mọi thứ đều tập trung vào đám mây
2. Lợi ích cloud computing:
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ý. (Bạn có thể chơi Call of Duty 6 trên iPad hoặc iPhone mà không cần quan tâm đến cấu hình của nó)
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. (Hãy tưởng tượng 1 ngày nào đó, server yêu quý của công ty tự nhiên bốc cháy với toàn bộ dữ liệu quý giá bên trong, bạn sẽ làm gì??)
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.
3. Ai đang ứng dụng Cloud computing:
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:
Windows Azure của Microsoft:
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
Facebook
4. Google App Engine là gì:
“Google 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.
Bạn có thể sử dụng tên miền riêng của mình (chẳng hạn như ) thông qua google apps. Hoặc bạn 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ô 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.
Tóm lại, giờ đây bạn chỉ cần phải nghĩ ra và viết những ứng dụng tuyệt vời nhất rồi kêu gọi cả thế giới vào dùng. 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.
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.
Chương III: Hướng dẫn cài đặt
1.Yêu cầu:
Eclipese hay jcreator
Google plugin cho Eclipese
AppEngine-java-SDK-1.3.8.zip
2.Đăng kí tài khoản Google App Engine:
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 và đăng nhập với thông tin tài khoản gmail của bạn
Bước 2: Chọn nút Create Application
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.
Bước 4:
Nhập mã xác nhận của google
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.
Đây là giao diện chính của ứng dụng chúng ta tạo ra.
3.Tạo một project:
Các ứng dụng App Engine Java sử dụng các chuẩn java servlet để tương tác với môi trường máy chủ web. Các file của một ứng dụng bao gồm: các file class đã được biên dịch từ file java, các file JAR của bộ thư viện, các file tĩnh (css,…) và các file xml cấu hình. Tất cả được sắp xếp theo một cấu trúc thư mục và nằm trong thư mục WAR
a.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:
Guestbook
Src (mã nguồn)
Guestbook
META-INF
(file cấu hình)
Greeting.java
GuestbookServlet.java
PMF.java
SignGuestbookServlet.java
Jdoconfig.xml
Guestbook.jsp
war
WEB-INF
Web.xml
Appengine-web.xml
classes
lib
Compiled classes
JARs for Libraries
b.The servlet class:
Các ứng dụng App Engine Java sử dụng java servlet API để tương tác với máy chủ web. Một HTTP Servlet là một lớp ứng dụng có khả năng xử lý và phản hồi các yêu cầu web. Lớp này thừa kế lớp javax.servlet.GenericServlet hoặc lớp javax.servlet.http.HttpServlet.
Trong thư mục src/guestbook tạo một file có tên GuestbookServlet.java có nội dung:
package guestbook;
import java.io.IOException;
import javax.servlet.http.*;
import com.google.appengine.api.users.User;
import com.google.appengine.api.users.UserService;
import com.google.appengine.api.users.UserServiceFactory;
public class GuestbookServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
UserService userService = UserServiceFactory.getUserService();
User user = userService.getCurrentUser();
if (user != null) {
resp.setContentType("text/plain");
resp.getWriter().println("Hello, " + user.getNickname());
} else {
resp.sendRedirect(userService.createLoginURL(req.getRequestURI()));
}
}
}
Google App Engine cung cấp một số dịch vụ hữu ích dựa trên cơ sở hạ tầng Google, có thể truy cập bởi các ứng dụng bằng cách sử dụng thư viện có trong SDK. One such service is the Users service, which lets your application integrate with Google user accounts. Một trong những dịch vụ là dịch vụ người dùng, cho phép tích hợp các ứng dụng của bạn với tài khoản người dùng Google. With the Users service, your users can use the Google accounts they already have to sign in to your application. Với dịch vụ người dùng, người dùng của bạn có thể sử dụng Google các tài khoản mà họ đã có để đăng nhập vào ứng dụng của bạn.
Trong đoạn code trên, class GuestbookServlet sử dụng Users API để kiểm tra xem người dùng đã đăng nhập với tài khoản Google. Nếu chưa, thì người dùng sẽ được chuyển đến màn hình đăng nhập tài khoản Google. userService.createLoginURL(...) sẽ trả về URL của màn hình đăng nhập.
c.Signgustbookservlet.java file:
Trong src/guestbook/ tạo 1 file SignGuestbookServlet.java có nội dung sau:
package guestbook;
import java.io.IOException;
import java.util.Date;
import java.util.logging.Logger;
import javax.jdo.PersistenceManager;
import javax.servlet.http.*;
import com.google.appengine.api.users.User;
import com.google.appengine.api.users.UserService;
import com.google.appengine.api.users.UserServiceFactory;
import guestbook.Greeting;
import guestbook.PMF;
public class SignGuestbookServlet extends HttpServlet {
private static final Logger log = Logger.getLogger(SignGuestbookServlet.class.getName());
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
UserService userService = UserServiceFactory.getUserService();
User user = userService.getCurrentUser();
String content = req.getParameter("content");
Date date = new Date();
Greeting greeting = new Greeting(user, content, date);
PersistenceManager pm = PMF.get().getPersistenceManager();
try {
pm.makePersistent(greeting);
} finally {
pm.close();
}
resp.sendRedirect("/guestbook.jsp");
}
}
Đoạn code này tạo đối tượng Greeting mới bằng việc gọi hàm. Để lưu đối tượng vào kho dữ liệu, nó tạo ra PersistenceManager nhờ vào việc sử dụng PersistenceManagerFactory . Khi makePersistent được trả về, các đối tượng mới được lưu trong kho dữ liệu.
d.PMF file:
Mỗi khi yêu cầu sử dụng, kho dữ liệu sẽ tạo ra một đối tượng mới của lớp PersistenceManager thong qua thư class PersistenceManagerFactory.
Trong thư mục src/guestbook tao một file PMF.java có nội dung:
package guestbook;
import javax.jdo.JDOHelper;
import javax.jdo.PersistenceManagerFactory;
public final class PMF {
private static final PersistenceManagerFactory pmfInstance =
JDOHelper.getPersistenceManagerFactory("transactions-optional");
private PMF() {}
public static PersistenceManagerFactory get() {
return pmfInstance;
}
}
Chương IV: Kiểm thử và nhận xét
1.Kiểm thử:
e.Getting.java
Trong thư mực src/guestbook ta tạo một file Greeting.java có nội dung:
package guestbook;
import java.util.Date;
import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;
import com.google.appengine.api.users.User;
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Greeting {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;
@Persistent
private User author;
@Persistent
private String content;
@Persistent
private Date date;
public Greeting(User author, String content, Date date) {
this.author = author;
this.content = content;
this.date = date;
}
public Long getId() {
return id;
}
public User getAuthor() {
return author;
}
public String getContent() {
return content;
}
public Date getDate() {
return date;
}
public void setAuthor(User author) {
this.author = author;
}
public void setContent(String content) {
this.content = content;
}
public void setDate(Date date) {
this.date = date;
}
}
Lớp này sẽ định nghĩa 3 thuộc tính: author, content và date. Ba cái trường này sẽ được chú thích @Persistence để thông báo cho DataNucleus lưu chúng như 3 đối tượng thuộc tính trong Goolge App.
f.jdoconfig.xml file:
Trong thư mục war/WEB-INF/classes/META-INF/, ta tạo file jdoconfig.xml để cấu hình Goole APP thành nền tảng try xuất.
<jdoconfig xmlns=""
xmlns:xsi=""
xsi:noNamespaceSchemaLocation="">
<property name="javax.jdo.PersistenceManagerFactoryClass"
value="org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory"/>
g.guestbook.jsp file:
Trong war/ ta tạo 1 file guestbook.jsp để làm giao diện cho người sử dụng post các bình luận.
The guestbook has no messages.
<%
} else {
for (Greeting g : greetings) {
if (g.getAuthor() == null) {
%>
An anonymous person wrote:
<%
} else {
%>
wrote:
<%
}
%>
<%
}
}
pm.close();
%>
-Test case 1: Nhập sai các thông tin SQL server connect.
àServer thông báo, kết nối không thành công.
h.web.xml file:
Khi máy chủ web nhận được yêu cầu, nó xác định servlet class để gọi bằng cách sử dụng một file cấu hình được gọi là "mô tả triển khai ứng dụng web." This file is named web.xml , and resides in the war/WEB-INF/ directory in the WAR. WEB-INF/ and web.xml are part of the servlet specification. File này được đặt tên là web.xml , và nằm trong war/WEB-INF/ thư mục trong WAR. WEB-INF/ và web.xml là một phần của đặc tả servlet.
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"">
guestbook
guestbook.GuestbookServlet
guestbook
/guestbook
sign
guestbook.SignGuestbookServlet
sign
/sign
guestbook.jsp
i.theappengine-web.xml :
App Engine cần một tập tin cấu hình bổ sung để tìm ra cách để triển khai và chạy ứng dụng. This file is named appengine-web.xml , and resides in WEB-INF/ alongside web.xml . File này được đặt tên appengine-web.xml , và nằm trong WEB-INF/ cùng với web.xml . It includes the registered ID of your application (Eclipse creates this with an empty ID for you to fill in later), the version number of your application, and lists of files that ought to be treated as static files (such as images and CSS) and resource files (such as JSPs and other application data). Nó bao gồm các ID đăng ký của các ứng dụng của bạn (Eclipse tạo ra điều này với một ID trống để bạn điền vào sau), số phiên bản của ứng dụng của bạn, và danh sách các file đó phải được đối xử như các file tĩnh (như hình ảnh và CSS) và các file tài nguyên (như JSP và dữ liệu ứng dụng khác).
In the directory war/WEB-INF/ , a file named appengine-web.xml has the following contents: Trong thư mục war/WEB-INF/ , một tập tin có tên appengine-web.xml có nội dung sau đây:
1
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ẻ rồi save lại như hình vẽ
Bắt đầu upload:
Sau đó giải nén ra ổ D ta được D:\appengine-java-sdk, mở cmd ta gõ:
D: // Chuyển về ổ D
Gõ: D:\\appengine-java-sdk\bin\appcfg.cmd update D:\guestbook\war để upload như hình vẽ
Điền mail và pass nếu chương trình hỏi, và upload thành công như hình dưới:
Chương IV: Hiện thực chương trình
Yêu cầu phải có internet .các bạn truy cập vào địa chỉ
Hình trên là giao diện chính của ứng dụng .Bạn có thể ko đăng nhập cũng được nhưng người khác không biết bạn là ai.Vì vậy yêu cầu bạn nên đăng nhập trước khi viết bình luận
Cứ như vậy khi thành viên vào sau sẽ thấy nội dung người viết trước và có thể viết những phản hồi.về hình thức các bạn thấy ứng dụng như một diễn đàn hay blog …
Chắc có lẽ các bạn cũng chưa hình dung điểm khác nhau của ứng dụng này đúng ko .Các bạn thiết kế websie hay viết các chương trình đòi hỏi phải tạo csdl và nơi lưu csdl .Đối với ứng dụng này bạn không cần phải quan tâm đến csdl lưu ở đâu và truy vấn như thế nào .Bởi vì điều này đã có Google app engine làm .
Cụ thể nội dung các bạn bình luận được lưu trên Google app engine
Chương V: Kiểm tra và Đánh giá
Đạt được:
Đã xây dựng được ứng dụng dựa trên gói thư viện của google
ứng dụng nhỏ gọn ,dễ sử dụng
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.
Hướng phát triển:
- Điện toán đám mây là một đề tài khá hay và mới mẻ huy 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
__The end__