Gaes项目展示

1,171 views

Published on

Published in: Education, Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,171
On SlideShare
0
From Embeds
0
Number of Embeds
12
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Gaes项目展示

  1. 1. Gaes项目展示<br />Jerrymouse Studio<br />
  2. 2. 一个网站的发展之路<br />单服务器(包含所有的内容)<br />服务器群<br />云计算服务器群<br />大规模服务器群<br />访问量/网站规模/服务器支持<br />
  3. 3. 前台<br />Web后台的 横向比较<br />在企业不断发展的过程中,每一个阶段都需要大量的重构,而横向比较,功能并没有发生太多的变化,重构只是为了适应负载的增加,可以说,如此多的重构造成了巨大的资源浪费。<br />后台<br />
  4. 4. 我们的目标<br />用Gaes实现,用开发普通j2ee程序的方法开发具有复杂后台数据逻辑的程序实现,从简单后台到复杂后台的迁移,为您的软件提供最大限度的可伸缩性。<br />
  5. 5. 我们面临的问题<br />我们的目标就是把不同的java web 应用的后台之间的gap磨平,从而实现迁移<br />选取一些比较流行的后台<br /><ul><li>普通java容器
  6. 6. Gae app
  7. 7. Hadoop & Amazon </li></li></ul><li>Gae & Hadoop介绍(待编辑)<br />GAE(Google App Engine) Google App Engine是一个开发、托管网络应用程序的平台。<br />Hadoop<br />  一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。<br />Hadoop有三个核心组件<br />  1、GFS(Google File System)。一个分布式文件系统,隐藏下层负载均衡,冗余复制等细节,对上层程序提供一个统一的文件系统API接口。。<br />  2、MapReduce。大多数分布式运算可以抽象为MapReduce操 作。Map是把输入Input分解成中间的Key/Value对,Reduce把Key/Value合成最终输出Output。这两个函数由程序员提供给 系统,下层设施把Map和Reduce操作分布在集群上运行,并把结果存储在GFS上。<br />  3、BigTable。一个大型的分布式数据库,这个数据库不是关系式的数据库。像它的名字一样,就是一个巨大的表格,用来存储结构化的数据。<br />
  8. 8. 他们之间的结构是不同的<br />Gae结构<br />分布式结构<br />Single app结构<br />图二<br />图三<br />图一<br />
  9. 9. 我们是如何实现的<br />七个子项目,实现解决方案<br />gaes-framework<br />为开发Gae程序提供一个便捷的框架。这个框架为程序提供一个统一的接口,为各个运行环境提供不同的实现,(待编辑)<br />maven-gaes-plugin<br />以Maven为构建工具,开发一个Maven插件,为Gae程序提供,Gae安装、测试、部署、eclipse集成,等一系列开发工具支持。<br />gaes-archetypes <br />负责从各种模版生成原型,结合Maven可以让用户快速构建项目。 <br />
  10. 10. gaes-framework-database gaes-framework-database<br />为程序提供一个统一的数据访问接口,并有各种实现,有jdo和jpa的三种实现单机,分布式,和gae实现。<br />
  11. 11. 实例接口 <br />根据restful思想,提供存取删改四个操作,便于进行restful的设计。package org.jerrymouse.database;import java.util.List;public interface DaoSupport {    // 取一个对象    Object get(Object key, Class type);    // 存一个对象    void put(Object object);    // 改一个对象    void post(Object object);    // 删一个对象    void delete(Object object);    List getList(Class type);    List getList(Class type, List keys);}<br />
  12. 12. maven-gaes-plugin实现介绍<br />以往开发Gae程序,用户必须使用Ant来测试,部署。有时用lvy来处理依赖。但对于Maven还没有一个比较好的解决方案。有一个名为maven-gae-plugin的项目,基本实现了要求。但是它在处理gae运行的时候,采用直接调用的方式,产生了一些Bug。更新不勤,没能看到我们提交的能解决这个Bug的补丁。而且功能不全面,没有提供eclipse集成之类的服务,也没提供模板支持。所以我们决定复用一部分maven-gae-plugin代码,使用反射和Ant task为核心,建立一个maven-gaes-plugin的项目。<br />
  13. 13. gaes-patch<br />针对Gae的服务器沙箱,大量类库无法直接使用,必须加以修改。这个项目主要是为各种插件提供补丁。 <br />Google本身提供的兼容性列表<br />http://groups.google.com/group/google-appengine-java/web/will-it-play-in-app-engine以上这个链接是google提供的一份关于兼容性说明,有三中标示,兼容,不兼容,部分兼容,下表使我们对他的增量型补充。<br />
  14. 14. 以下为我们自身提供的补丁 <br />Gaevfs提供对Google虚拟文件系统的支持<br />Structs-gae-patch 修改Structs的安全配置,使之适应Gae<br />Structs2-rome-plugin 提供对rome文件格式的支持,处理一些问题,并协助打包 <br />Structs2-convention-plugin-gae 修改Structs-plugin的安全配置,使之适应Gae<br />
  15. 15. gaes-framework-test <br />设计 <br />如图,test类继承了一个baseTest,一个dataStoretest,而environment可以导入多种环境,对javeeeunit进行结合<br />gaes-framework-test <br />因为分布式测试和正常测试不同,而且较为复杂,有的时候本地测试正确,但是在远程测试时错误的,而且gae的测试需要一些预处理的动作,所以测试支持是必要的<br />解决方法,<br />利用Catcus中junitee runner接在web容器之中的能力,并在浏览器中观察实现。<br />
  16. 16. 其他<br />sandbox <br />该项目为GaeS的其他项目,提供一个实验室,来测试新技术,保证项目稳定。 <br />gaes-templates <br />提供各种模板,作为实例,也可以作用项目起点<br />gaes-site<br />为其他项目提供发布和文档站点。 <br />http://gaes.appspot.com/<br />
  17. 17. 实时展示<br />用Gae开发类twitter应用<br />
  18. 18. 谢谢<br />

×