云计算是一个新潮而且听起来很牛的名词,今天探其根源,俺还是有点体会。
云计算可以说是分布式计算,网格计算的近亲,或者干脆点,就是它们的衍生品。这里的概念模糊不清,关系也并不明确。总之,不同机构有不同解释。
1.如何保证扩展性?
2.如何保证24×7?
3.如何保证处理效率?
4.灾难发生,如何补偿?
回想起那个时候的技术架构,简直就是糟糕到底。一群学院派的老前辈用OLTP方式处理这些数据ETL的问题,数据处理全部集中到数据库,其后果也是恐怖到底。好了,几个月后,数据库就是永远的瓶颈。
现在看来,ETL是最适合分布式计算的应用场景。原因:
1.被处理数据无需考虑状态。可以很随意拆分处理。
2.ETL处理的数据量往往很大,需首要考虑性能问题。分布式可以更好的提高效率。
3.既然有分布式的结构存在,自然扩展性和可靠性就很高。
当时自己也在实践中看到了这一点,所以写了一个很小的通信模块用来实现扩展性。原理很简单,只要这个程序运行,一旦它接收到控制信号,就取出一部分原始数据,执行设定的业务逻辑代码。记得当时写了两个版本,一个用UNIX C,一个用delphi。以后逐渐地把原来放在数据库中的处理,如数据清洗, 移到这些分布模块去做。很大程度上减少了数据库压力,而且效率和扩展性上有了很好的提升,架构也清晰多了。后来又完成了一个程序,起了个名字叫控制面板,就是用来监控各个分布程序的状态。基本上,这样的系统就成了分布式的并发处理系统,尽管很多其它的问题还没有考虑。
以后,偶然机会看到了一个开源项目,叫巡天望远镜计划(http://lsstcorp.org/),关注了一段时间。发现其IT系统的一个模块,用来收集来自射电望远镜的数据,处理方式也是采用分布式并行处理方式,架构与我曾思考的类似。但这样的科研项目面临的挑战就大多了,其一是数据量大,50G/天。其二是,你如何找到足够的机器去完成分布运算环境。靠网友的捐助是比较好的方法,比如贡献你的机器,让它在晚上加入运算网络。当募捐到足够的机器时,一个庞大的计算网格形成了。
当回来商业环境中,我们发现类似的分布式系统还有很多,但总不能都让网友捐助吧。那么只能掏钱买机器,如果觉得贵,又想只临时用一用,怎末办?那就租好了,如同租房一样。如果租实际的机器还觉得麻烦,那该如何?从互联网上租些虚拟的,方便且便宜。正是看到了这个商机,提供此类服务的提供商如雨后春笋般出现。那末需要给这种模式起个名字,既然服务来源于互联网,而且画结构图时,大家都爱把互联网画成一朵云,那就叫’云计算‘吧。
既然可以租到机器,如果能够让这些机器在缺省状态下实现一些基本功能,操作将更加便捷。事实上也的确如此。那末新的问题是,该实现哪些功能?解决方法也比较简单,既然系统架构分为若干层,那末根据系统层次,提供不同的服务。比如某些人需要数据存储,那就有必要专门提供些类似数据存储的服务,于是再给个新名字,云存储(cloud storage),比如Amazon SimpleDB, Google big table. 如果你需要平台性质的计算资源,那末就提供类似的,再给个名字cloud platform,比如 Google App Engine.
总之,云计算更像是市场化的产物,市场行为驱使,人们需要什么,就必然有人提供什么。新的技术,新的名词也就此诞生。
0 comments:
发表评论