1 / 42

Google App Engine

Google App Engine. Thành viên : Châu Hoàn Sơn – 0912392 Nguyễn Quốc Nhã – 0912317 Huỳnh Văn Lộc – 0912268. Nội dung tìm hiểu. Giới thiệu sơ lược Kiến trúc hoạt động Các thành phần chính và chức năng Hạn chế của google app engine Demo. Giới thiệu sơ lược. Điện toán đám mây.

duncan
Download Presentation

Google App Engine

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Google App Engine Thànhviên: ChâuHoànSơn – 0912392 NguyễnQuốcNhã – 0912317 HuỳnhVănLộc – 0912268

  2. Nội dung tìm hiểu Giớithiệusơlược Kiếntrúchoạtđộng Cácthànhphầnchínhvàchứcnăng Hạnchếcủagoogle app engine Demo

  3. Giớithiệusơlược

  4. Điệntoánđámmây

  5. Google app engine • Google App Engine (App Engine hay GAE) làmộtnềntảngđiệntoánđámmâycủa Google đểpháttriểnvàlưutrữứngdụng web trongnhữngtrungtâmdữliệu do Google quảnlý (google-managed data centers). Bản beta đượcgiớithiệulầnđầutiênvàongày 7 tháng 4 năm 2008.

  6. Google app engine • GAE là 1 dịchvụlưutrữcácứngdụng web. Khinóiđến “ứngdụng web”, chúng ta muốnnóitớicácứngdụng hay dịchvụđượctruycậptrêncáctrang web, thườnglàthông qua trìnhduyệt web: nhữngtrang web muabán, mạngxãhội… App Engine cũngcóthểphụcvụcáctrang web truyềnthốngnhưxửlývănbản hay hìnhảnhnhưngđượcthiếtkếdànhchothờigianthực.

  7. Google app engine • Thựcra, GAE đượcthiếtkếđểlưutrữnhữngứngdụngvàphụcvụnhiềungườidùngmộtcáchđồngthời. Khimộtứngdụngcóthểphụcvụnhiềungườidùngmộtcáchđồngthờimàkhônglàmgiảmhiệusuất, chúng ta gọiđólàsự co giãn (scales). Nhữngứngdụngđượcviếtcho App Engine sẽđược co giãnmộtcáchtựđộng. Càngnhiềungườisửdụngchươngtrình, App Engine sẽtạoracàngnhiềutàinguyênchoứngdụngđóvàquảnlýchúng. Chínhbảnthânứngdụngcũngkhôngcầnphảibiếtđếncáctàinguyênmànóđangsửdụng.

  8. Google app engine • Khôngnhưnhững server cungcấpcácdịchvụlưutrữthôngthường hay các server cóchứcnăngtựquảnlý, với Google App Engine, chúng ta chỉphảitrảtiềnchonhữngtàinguyênmàchúng ta sửdụng. Nhữngtàinguyênnàyđượcđobằng gigabyte vàkhôngcóbấtkìlệphíhàngthángnào hay lệphíđểchúng ta thayđổidiệnmạotrang web. Hóađơnthanhtoánnhữngnguồntàinguyênnàybaogồm CPU chúng ta sửdụng, lưutrữhàngtháng, băngthôngvàora (incoming and outgoing bandwidth), vàmộtsốcáctàinguyênkháccủadịchvụ App Engine

  9. Google app engine • Đểgiúpchúng ta cóthểlàmquenvới GAE, mỗilậptrìnhviênsẽcókhoảng 500 MB lưutrữ, mộtlượngtàinguyênmiễnphíđủđểchạynhữngứngdụngnhỏvớibăngthôngthấp. Google dựtoánrằngvớinguồntàinguyênmiễnphí, mộtứngdụngcóthểđạttới 5 triệulượttruycậptrongmộttháng.

  10. Google app engine • HiệnAppEnginehỗtrợ 2 loạingônngữlà: Python và Java. Mộtsốngônngữkhácnhư PHP cũngcóthểchạyđượcnếucàicùngvớibộchuyểntừ PHP sang Java.

  11. Kiếntrúchoạtđộng

  12. Kiếntrúchoạtđộng

  13. Kiếntrúchoạtđộng • Kiếntrúccủa App Engine khácvớinhững server lưutrữứngdụng web thôngthường. Ở phầnlõicủanó, App Engine sẽhạnchếnhữngtruycậptừứngdụngcủachúng ta đếncơsởhạtầngvậtlý, ngăncảnchúng ta từviệcmởcác socket, chạycáctiếntrìnhngầm, hay cáccáchđikhácbằngcổngsauđểgiúpchươngtrìnhcủa ta cóquyềntrênmôitrườngnày. Nênnhớrằng, App Engine đượcthiếtkếđểgiảiquyếtmốiquantâmcủachúng ta vềsựmởrộngvàđộ tin cậy. Nóđượcxâydựngdựatrênkháiniệmcóthểmởrộngtheochiềungang, nghĩalàthayvìứngdụngcủachúng ta sẽđượcchạytrênmộtphầncứngmạnhmẽ, thìnócóthểchạytrênnhiềuphầncứngyếuhơn.

  14. Kiếntrúchoạtđộng • Chúng ta cóthểthấyứngdụng App Engine chạynhưmộtthựcthểcôlậptrongmôitrườnggồmnhiềuthànhphần (multitenant environment). App Engine chia sẻnhữngnguồntàinguyêngiữacácứngdụngnhưngcôlậpvềdữliệuvàbảomậtgiữanhữngthànhphầnvớinhau. Ứngdụngcủachúng ta cóthểsửdụngmộtsốcácdịchvụcủa Google, nhưlàURLFetch. Bởivìchúng ta khôngthểmởcổng (port) mộtcáchtrựctiếptrongứngdụngcủamình, nênchúng ta phảilệthuộcvàodịchvụnày, vídụ: yêucầu Google mởcổngvàthựcthiứngdụngcủamình.

  15. Kiếntrúchoạtđộng • Xemxétkỹhơnmộtchút, giảsử App Engine làmộttòanhàcógắnhệthốngđiềuhòakhôngkhívànhiệtđộ. Chúng ta làmộtphầntrongcănnhàđó (chínhxáchơnlàứngdụngcủachúng ta). Chúng ta khôngthểđiềuchỉnhnhiệtđộmộtcáchtrựctiếpbởinósẽảnhhưởngđếnnhữngphầnkháctrongtòanhà (cácứngdụngkhác). Vìvậy, chúng ta phảigửimộtyêucầuđếnngườichủcủacănnhànàyđểnhờhọthayđổinhiệtđộchochúng ta. Chínhxácđólàcácdịchvụcủa GAE nhưURLFetch, Bigtable query, Memcache, mail, XMPP, vàcácdịchvụkhác. Đóchínhlàbảnchấtnhữnggìđangxảyratrong App Engine.

  16. Kiếntrúchoạtđộng • Nhưvậy, trong GAE, tùyvàoứngdụngviếttheongônngữnào, nósẽđượcchạytrênmôitrường Java hay Python tươngứng. Song songđó, chúng ta sẽđượccungcấpsửdụngmiễnphícácdịchvụcủagooglenhư URL Fetch, Mail, Memcache, … vàđượclưutrữtrêncơsởdữliệuhướngđốitượngdatastore. Khiyêucầuđượcgửilêntừphíangườidùng, GAE sẽchuyểnyêucầuđóchoứngdụngcủachúng ta. Tùytheoviệcxửlýchúngmà ta cấuhìnhvàsửdụngcácứngdụngthíchhợpcủa GAE.

  17. Cácthànhphầnchínhvàchứcnăng

  18. Runtime enviroment • Mộtứngdụng App Engine đápứngcácyêucầu web. Mộtyêucầu web sẽbắtđầukhicómộtngườidùng hay điểnhìnhlàcáctrìnhduyệt web củangườidùnggửimộtyêucầutruycậpvàoứngdụngthông qua giaothức HTTP. Khi App Engine nhậnđượcyêucầu, nósẽxácđịnhứngdụngdựavàotênmiền, hoặctênmiền con của <tênbạn>.appspot.com (cungcấpmiễnphímỗiứngdụng) hoặclàmộttênmiềnriêngcủachúng ta đãđượcđăngkívàthiếtlậpvới Google Apps. App Engine lựachọnmộtmáychủtừnhiềumáychủđểxửlýcácyêucầuđó. Sauđó, App Engine sẽgửicácyêucầuđãnhậnđượctừngườidùngđếnứngdụngphùhợpđểxửlý, saukhiđãxửlýxongcácứngdụngnàysẽgửidữliệutrảvềcho App Engine, App Engine sẽnhậndữliệuphảnhồitừcácứngdụngvàtrảvềchongườidùngthông qua trìnhduyệt web.

  19. Runtime enviroment • Google App Engine cungcấphaimôitrườngthựcthitốtchocácứngdụng. Đólà Java và Python. Môitrườngchúng ta chọnsẽphụthuộcvàongônngữvànhữngcôngnghệliênquankhichúng ta dùngđểpháttriểnứngdụng. • Môitrường Java thựcthicácứngdụngđượcviếtcho JVM6. Ứngdụngcóthểđượcpháttriểndựavàongônngữlậptrình Java hoặchầuhếtcácngônngữcóthểbiêndịchvàchạytrên JVM: vídụ PHP (dùngQuercus), Ruby (dùngJRuby), Javascript (dùng Rhino), Scala, Groovy. App Engine cũnghỗtrợ Google Web Tootkit (GWT).

  20. Runtime enviroment • Môitrường Python thựcthicácứngdụngđượcviếtdựavàongônngữlậptrình Python bản 2.5. App Engine gọicácứngdụng Python nhờvào CGI (Common Gateway Interface). Ứngdụngcóthểdùnghầuhếtcácthưviệncủa Python, các framework của Python nhưDjango, web2py, Pylons • Cảhaimôitrường Java và Python đềusửdụngchungmộtmôhình: mộtyêucầugửiđếnứngdụngtrên server, ứngdụngđượckíchhoạt (nếucầnthiết), gọibộphậnxửlýyêucầuvàtrảvềkếtquảcho client. Mỗimôitrườngsửdụngbộtiềnxửlý (interpreter) choriêngmình (JVM hay Python).

  21. Các file server tĩnh • Hầuhếtcác website cómộtsốtàinguyênmàchúngchuyểnđếncáctrìnhduyệtkhôngthayđổitrongsuốthoạtđộngcủa site. Vídụnhưcáchìnhảnhvàcác file Csshỗtrợhiểnthịcủa site, cácđoạnmãJavascriptchạytrêntrìnhduyện, vàcác file HTML tĩnh. Vìviệcgửinhững file nàykhôngcầnđếnviệcgọi code củaứngdụng, nóicáchkhác, việcnàykhôngcầnthiết, làmgiảmhiệnquảlàmviệccủacác server ứngdụng. • Thayvìthế, App Engine cungcấpmộttậpcác server táchbiệtchuyênlàmnhiệmvụtraođổicác file tĩnhnày. Những server nóitrêntốiưuhóachokiếntrúcbêntrongvàhạtầngmạngđểxửlýcác requests chocáctàinguyêntĩnh. Đốivới client, các file tĩnhnàycũnggiốngnhưcáctàinguyênkhácđượccungcấpbởiứngdụngcủachúngta.

  22. Các file server tĩnh • Chúng ta upload các file tĩnhcùngvới code ứngdụng. Chúng ta cóthểcấuhìnhvàicáchhiểnthịnhấtđịnhchocác file này, baogồmcác URL cho file tĩnh, loạinội dung, vàcáchướngdẫnchotrìnhduyệtđểlưucácbảnsao file nàytrongbộnhớ cache đểgiảmlưulượngvàtăngtốcchotrang web.

  23. Khodữliệu(datastore) • Hầuhếtmọiứngdụng web đềucầnmộtnơiđểchứathông tin khixửlýyêucầutừphía client vàlấythông tin chonhữnglầnyêucầusaunày. Việcsửdụngmột server làmmộttrungtâmdữliệulàmột ý tưởngrất hay nhưngcóvấnđềxảyrakhiquánhiềukếtnốiđượcgửitới server này. • Hệthống database của Google App Engine gầngiốngnhưmộtđốitượng database. Thiếtkếcủa App Engine datastorechỉlàtrừutượngđểcho App Engine cóthểxửlýviệcphântánvà co giãncácứngdụng. Chínhvìthếtrongcácđoạnmãcủachúng ta sẽquantâmđếnnhữngthứkhácđượcnêusauđây.

  24. Khodữliệu(datastore) • Thựcthể (entities) vàThuộctính (properties) • Mộtứngdụng App Engine cóthểchứadữliệutrongmột hay nhiềuthựcthểdatastore. Mỗithựcthểcómột hay nhiềuthuộctính, mỗithuộctínhđềucótênvàgiátrị. Mỗithựcthểđềuđượcphânloạiđểtiệnchoviệctruyvấn.

  25. Khodữliệu(datastore) • Thựcthể (entities) vàThuộctính (properties) • Ở cáinhìnđầutiên, chúng ta thấythựcthểcóthểgầngiốngcáchàng (row) trongmộtbảngtrongcơsởdữliệuquanhệ. Vàmỗithuộctínhcóthểgiốngvớimộtcột. Tuynhiênđốivớicácthựcthểcùngloạivớinhaucóthểcócácthuộctínhkhácnhau. Thứ 2, cácthựcthểcóthểcócùngthuộctínhvớicácthựcthểcùngloạikhácnhưngkhácvềkiểudữliệu. Mộtđiểmkhácnhaunữagiữathựcthểvàcáchàng (row) làcácthựcthểcóthểcónhiềugiátrịchomộtthuộctínhđơnlẻ.

  26. Khodữliệu(datastore) • Thựcthể (entities) vàThuộctính (properties) • Mỗithựcthểcómộtkhóariêng (key) phânbiệtlẫnnhauđượccungcấpbởiứngdụnghoặc do App Engine. Khácvới CSDL quanhệ, khoácủathựcthểkhôngphảilàthuộctính, nótồntạiđộclậpvớithựcthể. Khoácủathựcthểkhôngđượcthayđổikhithựcthểđãđượctạora.

  27. Khodữliệu(datastore) • Truyvấn (queries) vàchỉmục(indexes) • Mộtcâutruyvấntrêndatastoretrảvềkhônghoặcnhiềuthựcthểcùngloạivớinhau. Nócũngcóthểtrảvềcáckhóacủathựcthể. Câutruyvấncóthểdựavàocácgiátrịthuộctínhcủathựcthểvàđượcsắpxếptheogiátrịcủathuộctính. Câutruyvấncũngcóthểlàmviệcvớicáckhóacủathựcthể.

  28. Khodữliệu(datastore) • Truyvấn (queries) vàchỉmục(indexes) • Với App Engine, mỗicâutruyvấnsẽcómộtchỉmụctrongdatastore. Khiứngdụngcầnthựchiênmộtcâutruyvấn, thìdatastoresẽtìmchỉmụccủacâutruyvấnđó. Khichúng ta tạomớimộtthựcthểvàcậpnhậtcáicũthìdatastorecũngsẽcậpnhậtlạichỉmục. Điềunàygiúpchocâutruyvấnđượcnhanhhơn.

  29. Khodữliệu(datastore) • Phiêngiaodịch (transacsion) • Khimộtứngdụngcóquánhiều client liêntụcđọc hay ghicùngmộtdữliệu ở cùngmộtthờiđiểm, thìphiêngiaodịchrấtcầnthiếtđểdữliệukhôngbịđọcsai. Mỗiphiêngiaodịchlàđơnvịnhỏnhấtvàchỉcóhaitrạngtháilàthànhcônghoặcthấtbại.

  30. Khodữliệu(datastore) • Phiêngiaodịch (transacsion) • Mộtứngdụngđọc hay cậpnhậtnhiềuthựcthểtrongmộtphiêngiaodịch, nhưngnóphảinóicho App Engine biếtnhữngthựcthểnàosẽđượccậpnhậtkhinótạoranhiềuthựcthể. Ứngdụnglàmđượcđiềunàybởiviệctạoranhómthựcthể. Nhờnhómthựcthể, App Engine sẽbiếtđượccácthựcthểsẽphântánnhưthếnào qua các server, vìthếnócóthểkhẳngđịnhchắcchắnlàphiêngiaodịchthànhcông hay thấtbại. App Engine cũnghỗtrợnhữngphiêngiaodịchnộibộ (local transaction).

  31. Khodữliệu(datastore) • Phiêngiaodịch (transacsion) • Nếumộtngườidùngcốgắngcậpnhậtmộtthựcthểtrongkhingườikhácđangcậpnhậtthựcthểđóthìdatastoresẽngaylậptứctrảvềmộtbiệtlệbáolỗi. Trongthuậtngữ database, thì ta nói App Engine sửdụng “optimistic concurrency control”. Vớichỉmụcvà “optimistic concurrency control”, App Engine đượcthiếtkếgiúpchoứngdụngcóthểđọcdữliệunhanhhơnvàđảmbảohơn.

  32. Cácdịchvụ(services) • Dịchvụchínhlàmốiquanhệgiữadatastorevớimôitrườngthựcthi. GAE baogồmmộtsốcácdịchvụhữuíchchocácứngdụng web. • Dịchvụmemcachelàdịchvụlưutrữtheokhóa - giátrị. Thuậnlợichínhcủadịchvụnàytrêndatastorelàtốcđộnhanh, rấtnhanh so vớiviệclưutrữvàlấydữliệumộtcáchbìnhthườngtrêndatastore. Memcachelưutrữdữliệutrênbộnhớthayvìtrên ổ đĩađểtăngtốcđộtruycập. Nócũngphântánnhưdatastoretuynhiênkhônglưutrữ, vìthếnếumấtđiệnthìdữliệutrênmemcachecũngmất. Vànócũngcónhiềugiớihạnsửdụnghơndatastore. Việcsửdụngmemcachetốtnhấtlàlưulạicáckếtquảcủacáccâu query hay cáctínhtoántrướcđó. Ứngdụngsẽkiểmtratrongmemcache, nếukhôngcódữliệuthìsẽtiếnhành query trêndatastore.

  33. Cácdịchvụ(services) • Ứngdụng App Engine cóthểtruycậpcáctàinguyên web khácnhờvàodịchvụ URL Fetch. Dịchvụnàytạoracácyêucầutheodạng HTTP gửiđếncác server kháctrên Internet nhưlàviệctươngtácvớicác web service khác. Vìkhi ta truycậpđến server khácthờigiansẽlâunên URL Fetch hỗtrợchạyngầmbêndướitrongkhixửlýcácyêucầukhác. • Ứngdụng App Engine cóthểgửi mail dựavàodịchvụ Mail, hoặcnếuđượccấuhình, nócóthểnhậnđược email. • Ứngdụng App Engine cóthểgửivànhậnnhững tin nhắnđếncácdịchvụ chat cósửdụnggiaothức XMPP baogồm Google Talk

  34. Tàikhoảngoogle(google accounts) • Cácchứcnăngcủa App Engine tíchhợptrongcáctàikhoảncủa Google như Google Mail, Google Docs và Google Calendar. Chúng ta cóthểsửdụngtàikhoảntrên Google nhưchocácứngdụngcủachúng ta, do đókhôngcầnthiếtlậpthêm. Vànếucácngườidùngcủachúng ta đãcótàikhoảntrên Google, họcóthểđăngnhậpvàoứngdụngcủachúng ta vớicáctàikhoảnđó, màkhôngcầntạotàikhoảnriêngtrongứngdụng. Tấtnhiên, điềuđókhôngbắtbuộc. Chúng ta luôncóthểxâydựnghệthốngtàikhoảnriêngcủamình, hoặcsửdụngmột provider OpenID.

  35. Cáccôngcụlậptrình (programing tools) • Google cungcấpmộtsố tool miễnphíchoviệcphátriểnứngdụng App Engine bằngngônngữ Java và Python. Chúng ta cóthể download software development kit (SDK) chongônngữtươngứngvàhệđiềuhànhcủachúng ta từ website Google. Ngườidùng Java cóthể down SDK cho Java trong form plug-in cho Eclipse. Ngườidùng Python sửdụng Windows hoặc Mac OS X cóthểtải SDK cho Python từ form củagiaodiệnứngdụng. Các SDK đóđềucó file zip, sửdụng command-lines đểtrựctiếptíchhợpvàomôitrườngpháttriểnhoặcxâydựnghệthống.

  36. Cáccôngcụlậptrình (programing tools) • Mỗi SDK baogồmmột server web chạyứngdụngcủachúng ta tạimáycánhân, đóngvaitròmôitrườngthựcthi,khodữliệuvàcác service. Server nàytựđộngpháthiệnnhữngthayđổitrong file source và load lạichúngnếucần, vìthếchúng ta cóthểluônmở server trongkhiđanglậptrìnhchoứngdụng. • Nếuchúng ta sửdụng Eclipse, chúng ta cóthểchạy server cho Java trongbộtíchhợp debugger, vàcóthểđặtcác breakpoint trong code. Chúng ta cũngcóthểsửdụng Eclipse choứngdụngpháttriển Python dùngPyDev, mộtnhánhmởrộngcủa Eclipse, baogồmbộ debugger cho Python.

  37. Cáccôngcụlậptrình (programing tools) • Mỗi SDK cũngbaogồmmộtcôngcụchoviệctươngtácvớicácứngdụngchạytrên App Engine. Chủyếulàsửdụngchoviệc upload code lên App Engine. Chúng ta cũngcóthểsửdụng tool để download các file log từứngdụngđangchạy, hoặcquảnlýdanhmụcứngdụng.

  38. Cáccôngcụlậptrình (programing tools) • SDK Python và Java gồmmộtchứcnăngmàchúng ta cóthểcàiđặttrongứngdụngchoviệctruycậpcóthứtựtừxamộtcách an toànđếnứngdụng. SDK Python baogồmcáccôngcụdùngchoviệcxửlýdữliệulớn, như upload dữliệutừ file text, vàtảilượnglớndữliệu, hoặcsaolưuchomụcđíchlưutrữ. SDK cũngcó command-line shell của Python choviệc test, kiểmlỗivàthaotácvớidữliệu. (Các tool nàycótrong SDK cho Python, nhưngcũnglàmviệcvớicácứngdụng Java sửdụngphiênbản Java cóchứcnăngtruycậptừxa). Chúng ta cóthểviếtđoạnmã script vàchươngtrìnhsửdụngchứcnăngtruycậptừxachoviệcvậnchuyểnlượnglớndữliệuvàcácbiệnphápbảotrìkhác.

  39. Hạnchếcủagoogle app engine

  40. Hạnchếcủagoogle app engine • App Engine hỗtrợ HTTPS đốivới domain con của .appspot.com nhữngvẫnchưahỗtrợđốivớicác domain khác. • Hiện Google App Engine hỗtrợ 2 loạingônngữlà: Python, Java (Mộtsốngônngữkhácnhư PHP cũngcóthểchạyđượcnếucàicùngvớibộchuyểntừ PHP sang Java). • Phụthuộchoàntoànvàocácdịchvụcủa Google. • Microsoft, … sẽchẳngbaogiờmuasảnphẩmđượcxâydựngtrênnềntảngcủađốithủ. • Cácnhàđầutư e ngạivìtoànbộdữliệucủamìnhđềunằmtrongtaynhàcungcấpdịchvụ, dùchođólà Google.

  41. DEMO

  42. Thank You !!

More Related