Google App Engine Service

Download Report

Transcript Google App Engine Service

Google App
Engine
Các Công nghệ lập trình hiện đại
LOGO
TH2009/03
Contents
www.thmemgallery.com
Giới thiệu
Môi trường GAE
Google App Engine Service
Quotas & Limit
Phát triển Ứng dụng trên GAE
ĐH-KHTN
Giới thiệu
www.thmemgallery.com
Google App Engine là gì?
GAE là một nền tảng cho phép chúng ta có thể
triển khai các ứng dụng của mình trên nền cơ
sở hạ tầng sẵn của Google
ĐH-KHTN
Giới thiệu
www.thmemgallery.com
Lợi ích của GAE:
Easy build: cơ chế build tự động của Google.
Maintain: chúng ta sẽ không cần quan tâm
đến các vấn đề bảo trì Server vì đã có Google
giúp chúng ta làm chuyện đó.
Easy scale: Server tự điều chỉnh băng thông và
dung lượng lưu trữ cho phù hợp.
Công việc chính của chúng ta chỉ là xây dựng
và upload mã nguồn lên GAE.
ĐH-KHTN
Môi trường GAE:
www.thmemgallery.com
Tổng quan:
GAE bao gồm những tính năng sau:
Các công nghệ web động phổ biến.
Cơ sở dữ liệu cho phép truy vấn, sắp xếp và xử lý theo
Session.
Khả năng Scalable dễ dàng.
API để xác thực và gửi mail bằng tài khoản Google.
Một bộ SDK có khả năng giả lập Local Server như GAE
Server.
Task Queue và Task Schedule
ĐH-KHTN
Môi trường GAE:
www.thmemgallery.com
Tổng quan:
GAE hỗ trợ 3 ngôn ngữ chính:
Java - Java runtime environment
Python - Python runtime environments
Go - Go runtime environment
ĐH-KHTN
Môi trường GAE:
www.thmemgallery.com
Sandbox:
Sandbox là một môi trường đảm bảo các ứng
dụng chạy trên GAE phải tuân thủ một số quy tắc
nhất định:
Thay đổi hệ thống tập tin.
Mở Một socket hoặc truy cập trực tiếp Một máy chủ khác
Sinh ra Một tiến trình phụ khác trong khi sử lý một Request
Tạo các loại System Call khác nhau
ĐH-KHTN
Môi trường GAE:
www.thmemgallery.com
Storing Your Data:
GAE cung cấp một số lựa chọn cho việc lưu dữ
liêu:
App Engine Datastore:
https://developers.google.com/appengine/docs/whatisgoogleappengine
Google Cloud SQL:
https://developers.google.com/cloud-sql/
Google Cloud Storage:
https://developers.google.com/storage/
ĐH-KHTN
Môi trường GAE:
www.thmemgallery.com
Google Accounts:
Cho phép Ứng dụng của chúng ta sử dụng
Google Account làm hệ thống xác thực người
dùng.
Lợi ích:
• Người dùng không cần tạo 1 acc mới để đăng nhập vào hệ thống
của chúng ta.
• Chúng ta không cần phải tốn thời gian trong việc phát triển và bảo
mật một hệ thống quản lý người dùng.
ĐH-KHTN
Google App Engine Service:
www.thmemgallery.com
App Engine cung cấp một loạt các dịch vụ cho
phép thực hiện các hoạt động phổ biến trên ứng
dụng:
1) URL Fetch
2) Mail
3) MemCache
4) Image Manipulation
5) Scheduled Tasks and Task Queues
6) XMPP
ĐH-KHTN
Google App Engine Service:
www.thmemgallery.com
1.URL Fetch:
Đặc điểm:
•Truy cập các URL bên ngoài thông qua HTTP và HTTPS.
•Hỗ trợ các phương thức: GET, POST, DELETE, PUT, HEAD.
•Hỗ trợ các yêu cầu: Đồng bộ và Bất đồng bộ.
Giới hạn:
•Dung lượng yêu cầu và thông tin trả về không được quá 1MB.
ĐH-KHTN
Google App Engine Service:
www.thmemgallery.com
2.Mail:
Đặc điểm:
• Gửi mail dưới danh nghĩa của admin hoặc người dùng Google.
Giới hạn:
• Tổng dung lượng một mail bao gồm cả phần đính kèm không
quá 1MB.
• Nếu admin là người nhận dung lượng mail không được quá
16KB.
ĐH-KHTN
Google App Engine Service:
www.thmemgallery.com
3.MemCache:
Đặc điểm:
• Nhanh hơn lưu trữ trên DataStore
• Lưu trữ liệu lên bộ nhớ thay vì lên đĩa.
• Tổ chức key-value pair.
• Kế thừa Jcahe inteface.
Giới hạn:
• Dung lượng lưu trữ không vượt quá 1MB.
ĐH-KHTN
Google App Engine Service:
www.thmemgallery.com
4.Image Manipulation:
Đặc điểm:
• Xử lí ảnh, cải thiện ảnh, chuyển đổi định dạng.
• Có thể sử dụng ảnh trong BlobStore, khi đó kích thước
ảnh có thể bỏ qua tuy nhiên ảnh trả về vẫn bị giới hạn nhỏ
hơn 1MB.
Giới hạn:
• Kích thước tối đa của ảnh nhận và gửi là 1MB.
ĐH-KHTN
Google App Engine Service:
www.thmemgallery.com
5.Scheduled Tasks & Task Queues:
Đặc điểm:
• Thực hiện các tác vụ nền bằng cách thêm chúng vào các
hàng đợi.
• File queue.xml phải được cấu hình.
Giới hạn:
• Một đối tượng Task có kích thước phải nhỏ hơn 10 KB.
• Số hàng đợi tối đa là 10.
• Tối đa 20 task được thực thi trong 1 giây.
ĐH-KHTN
Google App Engine Service:
www.thmemgallery.com
6.XMPP:
Đặc điểm:
• Tương thích với các ứng dụng chat phổ biến.
• Không hỗ trợ chat nhóm.
Giới hạn:
• Dung lượng mỗi thông điệp không quá 100KB.
ĐH-KHTN
Google App Engine Service:
www.thmemgallery.com
6.XMPP:
Đặc điểm:
• Tương thích với các ứng dụng chat phổ biến.
• Không hỗ trợ chat nhóm.
Giới hạn:
• Dung lượng mỗi thông điệp không quá 100KB.
ĐH-KHTN
Quotas and Limit:
www.thmemgallery.com
Google App Engine cung cấp trên mỗi tài
khoản Gmail là 10 Ứng dụng. Mỗi ứng dụng sẽ
có:
• 1GB lưu trữ.
• 5 triệu lượt xem/1 tháng/1 ứng dụng.
Lưu ý:
• Nếu bạn muốn mở rộng hệ thống của bạn, bạn chỉ cần
trả cho những khoản vượt qua mức Quotas(Limit trên 1
App của 1 tài khoản Free)
• Tuy nhiên nếu bạn lợi dụng Quotas để gian lận(Xây
dựng một loạt ứng dụng link với nhau) thì tất cả ứng
dụng đó sẽ bị ngắt và tài khoản của bạn sẽ bị block.
ĐH-KHTN
Phát triển Ứng dụng trên GAE
www.thmemgallery.com
Một số bước phát triển ứng dụng GAE Java
Application:
1)Cài đặt GAE SDK.
2)Tạo Project.
3)Sử dụng User Service.
4)Sử dụng DataStore.
5)Deploy ứng dụng lên GAE.
ĐH-KHTN
Google App Engine Service:
www.thmemgallery.com
1.Cài đặt GAE SDK:
a)Cài đặt JDK:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
b)Cài đặt Eclipse:
http://www.eclipse.org/downloads/packages/eclipse-classic-421/junosr1
c)Dùng Eclipse cài đặt GAE SDK:
https://dl.google.com/eclipse/plugin/4.2
Xem Video Demo
ĐH-KHTN
Google App Engine Service:
www.thmemgallery.com
2.Tạo Project:
Sau khi cài đặt Eclipse với GAE SDK bạn có thể
tạo GAE Application thông qua 2 cách:
i) Click vào Button New Web Application Project trên
thanh toolbar.
ii) File → New → Web Application Project.
ĐH-KHTN
Google App Engine Service:
www.thmemgallery.com
2.Tạo Project:
a) Cấu trúc thư mục:
Java Web Application tuân theo tiêu chuẩn WAR. Ứng dụng
sẽ bao gồm các file .class, static file và các file config được
tổ chức như sau:
ĐH-KHTN
Google App Engine Service:
www.thmemgallery.com
2.Tạo Project:
Nội dung trình bày:
a) Cấu trúc thư mục.
b) Một số tập tin đặc biệt.
c) Running & Testing.
ĐH-KHTN
Google App Engine Service:
www.thmemgallery.com
2.Tạo Project:
b) Một số tập tin đặc biệt:
• web.xml:
Giúp ứng dụng khi nhận được một Web Request sẽ biết
được nên chạy Servlet nào. Nội dung file web.xml
3
2
1
Web
Request
ĐH-KHTN
Google App Engine Service:
www.thmemgallery.com
2.Tạo Project:
b) Một số tập tin đặc biệt:
App ID
được
đăng ký
trên GAE
• appengine-web.xml:
File appengine-web.xml có nhiệm vụ cho hệ thống biết
được làm cách nào để deploy và chạy ứng dụng. Nội dung
file appengine-web.xml:
Version
hiện tại của
ứng dụng
trên GAE
ĐH-KHTN
Google App Engine Service:
www.thmemgallery.com
2.Tạo Project:
c) Running & Testing(tt):
Lưu ý:Khi phát triển ứng dụng trên Eclipse hay một số IDE
khác, Nếu bạn thay đổi một sồ file như JSPs, static files,
class, appengine-web.xml, hệ thống sẽ cố gắng cập nhật
những thay đổi đó lên Server. Nhưng nếu bạn thay đổi trên
file web.xml, bắt buộc bạn phải stop Server mới có thể cập
nhật thay đổi.
ĐH-KHTN
Google App Engine Service:
www.thmemgallery.com
2.Tạo Project:
c) Running & Testing:
Khi phát triển ứng dụng GAE bằng Eclipse trên local, ứng
dụng sẽ được Deploy với Port mặc định là 8888.
VD: http://localhost:8888/guestbook
Nếu bạn đang sử dụng dev_appserver command, ứng
dụng sẽ được Deploy với Port là 8080.
VD: http://localhost:8080/guestbook
ĐH-KHTN
Google App Engine Service:
www.thmemgallery.com
3.Sử dụng User Service:
a) Giới thiệu:
Như đã nói ở trên Google cung cấp cho chúng ta một dịch
vụ hết sức bổ ích chính là hệ thống Google Account. Các
ứng dụng trên GAE có thể dễ dàng tích hợp hệ thống
Google Account một cách dễ dàng
ĐH-KHTN
Google App Engine Service:
www.thmemgallery.com
3.Sử dụng User Service:
b) Cách sử dụng:
// Lấy thông tin người dùng hiện tại
UserService userService =UserServiceFactory.getUserService();
User user = userService.getCurrentUser();
Login: userService.createLoginURL();
Logout: userService.createLogoutURL();
Lưu ý: Khi Deploy ứng dụng trên Server Local, thì hàm
createLoginURL() sẽ Redirect đến trang login của ứng
dụng hiện tại. Ở trang này, không hề có bất cứ xử lý
nào liên quan đến Google Account. Chỉ khi ta deploy
ứng dụng lên GAE, ta mới được Redirect đến trang
đăng nhập của Google.
ĐH-KHTN
Google App Engine Service:
www.thmemgallery.com
4.Sử dụng DataStore:
a) Giới thiệu:
Đa số ứng dụng trên GAE đều sử dụng DataStore
là nơi lưu trữ dữ liệu. Trong đó các Object được
lưu trong DataStore được gọi là Entity. Các Entity
được tổ chức với nhau dưới dạng cây thư mục.
VD:
ĐH-KHTN
Google App Engine Service:
www.thmemgallery.com
4.Sử dụng DataStore:
a) Giới thiệu(tt):
Những Entity cùng là con của một Entity thì thuộc
về một group. Chính vì vậy, ngoài Common Key
của Entity, Các Entity còn có thêm một Key nữa để
định danh Parent của nó.
VD:
Các câu truy vấn thường dùng Parent Key để truy vấn được gọi là:ancestor
queries. Cấu trúc dữ liệu theo kiểu này đảm bảo dữ liệu luôn được thống
nhất và toàn vẹn.
ĐH-KHTN
Google App Engine Service:
www.thmemgallery.com
4.Sử dụng DataStore:
b) Các thao tác cơ bản trên DataStore:
i) Create Object:
// Lấy Parent Key
String guestbookName =req.getParameter("guestbookName");
Key guestbookKey =KeyFactory.createKey("Guestbook", guestbookName);
String content =req.getParameter("content");
Date date =newDate();
//Set các thuộc tính cho Object
Entity greeting =newEntity("Greeting", guestbookKey);
greeting.setProperty("user", user);
greeting.setProperty("date", date);
greeting.setProperty("content", content);
// Thêm Object vào Database
DatastoreService datastore =DatastoreServiceFactory.getDatastoreService();
datastore.put(greeting);
ĐH-KHTN
Google App Engine Service:
www.thmemgallery.com
4.Sử dụng DataStore:
b) Các thao tác cơ bản trên DataStore:
ii) Read(Query) Object:
// Lấy Parent Key
DatastoreService datastore =DatastoreServiceFactory.getDatastoreService();
Key guestbookKey =KeyFactory.createKey("Guestbook", guestbookName);
// Run an ancestor query to ensure we see the most up-to-date
// view of the Greetings belonging to the selected Guestbook.
//Tạo câu truy vấn có thêm dùng hàm addFilter(“Column”, FilterOperator.EQUAL,value) để thêm các điều kiện Where
Query query =newQuery("Greeting", guestbookKey).addSort("date",Query.SortDirection.DESCENDING);
List<Entity> greetings = datastore.prepare(query).asList(FetchOptions.Builder.withLimit(5));
ĐH-KHTN
Google App Engine Service:
www.thmemgallery.com
4.Sử dụng DataStore:
b) Các thao tác cơ bản trên DataStore:
iii) Delete Object:
•// Key employeeKey = ...;
datastore.delete(employeeKey);
iii) Update Object:
Để cập nhật một entity, ta truy vấn sau đó sửa đổi các
thuộc tính của đối tượng và gọi thông qua phương thức
DatastoreService.put(). Dữ liệu sẽ được ghi đè.
ĐH-KHTN
Google App Engine Service:
www.thmemgallery.com
4.Sử dụng DataStore:
c) DataStore Index:
i) Giới thiệu:
Để hỗ trợ cho việc truy vấn trên DataStore, GAE hỗ trợ kỹ thuật
Index(Datastore Indexes).Tất cả các câu Query trên DataStore
đều có ít nhất một Index.Các Index của ứng dụng đều được lưu
trong file datastore-indexes.xml. Hệ thống sẽ tự động add các
Entry vào file này. Ta cũng có thể custome file này cho tối ưu
nhất.
VD:
<?xml version="1.0" encoding="utf-8"?>
<datastore-indexes
autoGenerate="true">
<datastore-indexkind="Greeting"ancestor="true">
<propertyname="date"direction="desc"/>
</datastore-index>
</datastore-indexes>
ĐH-KHTN
Google App Engine Service:
www.thmemgallery.com
4.Sử dụng DataStore:
c) DataStore Index:
i) Cách thức hoạt động:
•Lấy ra các Index từ câu Query.
VD:
Query q =newQuery("Person")
.addFilter("lastName",Query.FilterOperator.EQUAL,"Smith")
.addSort("height",Query.SortDirection.DESCENDING);
Các Index được chọn: lastName, height.
•Lọc ra các Potential Result.
Lựa chọn ra các Entity có lastName và height có giá trị hoặc bằng
Null
ĐH-KHTN
Google App Engine Service:
www.thmemgallery.com
4.Sử dụng DataStore:
c) DataStore Index:
i) Cách thức hoạt động(tt):
•Sắp xếp Potential Result vào Table Index.
Table Index sẽ sắp xếp các Entity theo lần lượt các hàm
addSort của Query.
•Scan ra kết quả cuối cùng.
Sau đó, Hệ thống sẽ scan để tìm ra được Entity đầu tiên thỏa
mãn điều kiện cuả các Index trong TableIndex. Nếu gặp được
Entity đầu tiên thỏa mãn hệ thống sẽ lấy luôn các phần tử sau
cho đến khi:
•Entity tiếp theo không thỏa các Index.
•Không gặp được Entity tiếp theo(Kết thúc bảng).
•Đạt đủ số lượng yêu cầu.
ĐH-KHTN
Google App Engine Service:
www.thmemgallery.com
5.Deploy ứng dụng lên GAE:
Trước khi deploy ứng dụng ta cần phải đăng kí ứng dụng trên GAE:
 Đăng ký một tài khoản Gmail.
 Đăng nhập trên trang: https://appengine.google.com/ với tài khoản Gmail vừa tạo
 Click vào button Create Application:
ĐH-KHTN
Google App Engine Service:
www.thmemgallery.com
5.Deploy ứng dụng lên GAE:
 Điền các mục theo yêu cầu .
ĐH-KHTN
Google App Engine Service:
Chỉnh sửa file appengine-web.xml.
<application>application-ID vừa đăng ký </application>
<version>Số version của ứng dụng được chạy trên GAE</version>
www.thmemgallery.com
5.Deploy ứng dụng lên GAE:
Các bước để deploy ứng dụng lên GAE:
 Chỉnh sửa file appengine-web.xml.
<application>application-ID vừa đăng ký </application>
<version>Số version của ứng dụng được chạy trên GAE</version>
ĐH-KHTN
Google App Engine Service:
Chỉnh sửa file appengine-web.xml.
<application>application-ID vừa đăng ký </application>
<version>Số version của ứng dụng được chạy trên GAE</version>
www.thmemgallery.com
5.Deploy ứng dụng lên GAE:
Các bước để deploy ứng dụng lên GAE:
 Trong Elipse ta click vào button
trên Toolbar và chọn Deploy to App Engine…
 Truy cập vào Website http://your_app_id.appspot.com/ để kiểm
tra
ĐH-KHTN
www.themegallery.com
LOGO