• 首页
  • 关于

我自然

Gae进阶和优化

在 2009年8月7日 上公布 作者为 yankay

俺炒作Gae已经很长时间的,却纠缠于细节,没有能很好的研究。自从eclipse之后我就对“云”耿耿于怀,遂看了一些资料。写个总结帖子。

云计算是什么,我又该重点炒作哪些内容?

记得院杯初赛的时候,郑淘同志向我逼问“云计算是个啥子嘛”,我回答到了“分布式”之后便无言以对,他便说“漂移”是云的精妙所在,我豁然没开朗。一万个听众心中,有一万个春哥。云计算知识用来被炒作的寂寞罢了。目前有两类很主流的云计算服务。

  • 一类是 Amazon S3(提供云存储),Amazon ec2(提供云计算服务)。S3用分布式文件系统实现,ec2则是用类似Xen的虚拟化来提供可伸缩的计算服务。两者商业应用很成功。
  • 另一种是Gae,同时提供 云存储和云计算服务。不同于前者,他使用MapReduce算法来提供可伸缩性。MapReduce算法说白了,在带宽比计算能力值钱,就是把任务切割为几块,到各自的机器上去跑,在合并起来。 与普通分布式不同的是每台机器上都有“数据库”,而不是普通系统中的只有专门的数据库服务器。Google其实拥有大量的底配置机器(和我们的PC差不多),和少量大机器完成管理工作,提供了无与伦比的计算能力。但Gae商业应用目前很不成功。原因在于Gae程序的迁移问题(其实也有方案的,下面会介绍),更多人愿意选择Amazon。

唠唠叨叨了半天,大概解释如下:云计算提供一个分布式的存储系统(Amazon S3 or BigTable),还有“云的运算”这不是重点。因为计算能力是最不值钱的。换句话说云计算相对于分布式,和春哥相对于李宇春一样。都是前者更为“性感”一些。而我就是要炒作“纯爷们”这个特点,并告诉大家信他得永生。也可以说云计算是把分布式推向大众的一个口号罢了。详细一点,我的炒点是 如何使程序适应云计算的环境。

如何让程序适应Gae?

不管是Gae还是Amazon都提供了一套API。你甚至能把普通的程序完全迁移过去,为什么要适应?

颠覆的数据库理论。什么一二三范式,什么数据库的良好实践,什么XXX。在这么都没应用无效。我们要换一种眼光来看待。这个要谈谈GaeVfs说起,这个是分布式文件系统,你可以大概理解为索引放在一台机器上,数据分散着。计算要跟着数据跑,所以数据表的粒度要大,一次要能取出全部数据,不要怕冗余,冗余是应该的。比方说,我建个人人网,我把某个人的全部数据包括日志啥的建成一个表,新鲜事也建成一个表,用户刷主页和新鲜事都只要刷一次表,速度极快。这才是我认为的最佳实践。有些人(大概就是作这个的工程师)总结的一下使用BigTable的要点,罗列如下。

  • 假定数据访问是较慢的随机访问而非较快的连续访问。
  • 为并发读取对数据进行分组
  • 磁盘和CPU都很便宜,不要再为它们操心,尽力提高可伸缩性吧
  • 围绕数据的用途来决定数据的结构
  • 创建大型的实体,允许可选的字段
  • 在模型中定义Schema
  • 用Ajax隐藏更新操作。
  • Put是昂贵的
  • 按显式费用模型设计
  • 将many-to-many关系包含到实体中,但减少关联元素的数量
  • 避免无限制条件的查询
  • 避免出现对数据存储实体的争用
  • 避免庞大的实体组

数据库设计完了,那么其他可以用领域模型设计,注意粒度放细便于Gae切割任务。

还有一点,很重要,缓存。是的,分布式缓存。很明确,Gae使用Memcached接口来缓存。缓存实现原理应该和GaeVfs差不多。注意点也差不多。Restful应用对于缓存来说是个不错的实践。

其他相关项目

我不得不提几个项目:

Hadoop,可以理解为Gae的一个Apache的实现,可以跑在普通机器上。跑在Amazon上可以实现类似Gae的效果。

Appscale,提供Gae程序到Hadoop的迁移。

Gaeo是前朝人的项目,想法和我们的GaeS如出一辙,只是他的语言的Python,我们是Java,相信我们可以借鉴不少东西。

文章分类 未分类 |
« Maven中多模块项目的Site生成
latex文档模板 »

发表评论 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注

近期文章

  • 听说 Docker 被 kubenetes 抛弃了,怎么办?containerd
  • 公告 – 博客重开了
  • CloudFoundry v2面面谈,内赠MicroCFv2福利
  • Docker能够运行任何应用的“PaaS”云
  • Scala Tour – 精选

近期评论

  • [整理]完美哈希函数(Perfect Hash Function) - 高性能架构探索发表在《最小完美哈希函数简介》
  • Scala Tour – 精选 - Java天堂发表在《Scala Tour – 精选》
  • Golang适合高并发场景的原因分析 - 站壳网发表在《Go-简洁的并发》
  • HBase 官方文档 – 源码巴士发表在《Windows下eclipse的 C++环境配置》
  • Go-简洁的并发-点开发表在《Go-简洁的并发》

归档

  • 2021年6月
  • 2021年3月
  • 2014年2月
  • 2013年9月
  • 2013年5月
  • 2013年1月
  • 2012年11月
  • 2012年9月
  • 2012年8月
  • 2012年3月
  • 2012年2月
  • 2012年1月
  • 2011年11月
  • 2011年10月
  • 2011年9月
  • 2010年10月
  • 2010年8月
  • 2010年7月
  • 2010年6月
  • 2010年5月
  • 2010年4月
  • 2010年3月
  • 2010年2月
  • 2010年1月
  • 2009年10月
  • 2009年9月
  • 2009年8月
  • 2009年7月
  • 2009年6月
  • 2008年10月
  • 2008年8月
  • 2008年7月
  • 2008年6月

分类目录

  • 家庭生活
  • 未分类
  • 每日心得
  • 软件技术

友情链接

  • DaoCloud Enterprise
  • DaoCloud 云原生一体机

CyberChimps WordPress Themes

沪ICP备2021008917号-1 © 颜开