LẬP TRÌNH MẠNG – NETWORK PROGRAMMING
Trang 1NGHIÊ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 2
Tóm tắt hệ thống: 2
Chương II: Cơ sở lý thuyết 3
1.Điện toán đám mây là gi: _3
2 Lợi ích cloud computing: 3
3 Ai đang ứng dụng Cloud computing: 4
4 Google App Engine là gì: 4
Chương III: Hướng dẫn cài đặt 5
1.Yêu cầu: _5 2.Đăng kí tài khoản Google App Engine: _5 3.Tạo một project: 11 4.Triển khai ứng dụng : 20
Chương IV: Hiện thực chương trình 22
Chương V: Kiểm tra và Đánh giá 24
Trang 2Chươ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ệ
Trang 3Hì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ầnnà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: http://code.google.com/appengine/
Windows Azure của Microsoft:
Trang 4 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/
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ư http://www.example.com/ ) thông qua google apps Hoặc bạn có thể dùng domain miễn phí của appspot.com
sub-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.
Trang 5- 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 http://appengine.google.com/ 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
Trang 6
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
Trang 7Bước 4:
Nhập mã xác nhận của google
Trang 8Bướ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
Trang 9Đây là giao diện chính của ứng dụng chúng ta tạo ra.
Trang 103.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:
Trang 11b.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
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
Trang 12Google 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 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 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 xemngườ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
public class GuestbookServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
UserService userService = UserServiceFactory.getUserService();
User user = userService.getCurrentUser();
Trang 13Đ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
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);
Trang 14Chương IV: Kiểm thử và nhận xét
public final class PMF {
private static final PersistenceManagerFactory pmfInstance =
private Date date;
public Greeting(User author, String content, Date date) {
Trang 15Lớ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
Trang 16<form action="/sign" method="post">
<div><textarea name="content" rows="3"
cols="60"></textarea></div>
<div><input type="submit" value="Post Greeting"
/></div>
Trang 17-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." 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
Trang 18i.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 ứngdụng File này được đặt tên appengine-web.xml , và nằm trong WEB-INF/ cùng với web.xml 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ềunà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à
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
Trang 19Ta vào thưc mục war/WEB-INF/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ẽ
Trang 21Đ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ỉ
http:// le-thao appspot.com/
Trang 22Hì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
Trang 23Cứ 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
Trang 24Chư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