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