并行计算小节

节前花了两天半的时间整理了一下并行计算的材料,整出一个PPT和一包参考资料,大部分是人家的PPT。嗯……搞技术以后还是要以自娱自乐为主。

首先总结一下相关技术,我列了个表如下:

集群和
分布式技术
虚拟化Map-Reduce分布式
散列存储
演员模型
和函数编程
解决方案网格计算绿色计算云计算云计算??
设计模式(关联底层设计)虚拟资源池面向数据结构ER模型FP
典型方案负载均衡集群Hadoop CoreHBase,HDFSErlang虚拟机 
面向资源事务、存储计算、存储计算存储计算
资源利用率
系统可扩展性
高并发 
高吞吐  
海量存储   
复杂计算(关联底层设计)  
缺陷•设计模式顶层化
•业务关联性强
•设计模式顶层化
•人工干预程度高
•设计模式底层化
•代码复杂
•设计模式底层化
•PIG等还不成熟
•设计模式底层化
•代码晦涩

然后是列举各种语言、方案的相关内容。

首先是LISP,它本身对于列表的处理虽然并没有任何支持“并行”的地方,却给了人们无限遐想。

然后是Hadoop下的Map-Reduce。Apache Hadoop的Wiki上分别给出了用java、c写的文章词数统计,但java非常麻烦,c还好。这里我引用了java,一方面想说,其实Map-Reduce用起来很麻烦,一方面想就着一种纯面向对象的语言来表示,面向对象语义下的Map-Reduce并不很适合并行设计——相当于面向数据结构了。

我还大略看了一下PIG,它实际上承担了调度大数据处理算法的功能,虽然和SQL不是一个档次,确实很像。算是一种和上下层衔接都很好的4GL吧。不知道能否带来数据分析的革命。但它本身不是用来实现算法了,至少基本功能不是。

Hadoop方案到此结束,可以说是一个很全面但重量级的云计算方案,且至少可以用来做搜索引擎、海量存储,作为知识管理、档案管理的后端都是很好的选择,绝对属于可以落地的方案。只是,对于现有业务来说,想迁移到这上面难度非常大。

我自己本来想用Kilim实现一个Map-Reduce,但最终发现,Kilim实际上仅仅使用一个Scheduler实现了微线程、消息机制,却根本没有利用到富余的计算资源——它实质上就是单线程……Kilim的Annotation方式使代码很简洁,易于移植。但整体上来说Kilim的Task,或者叫fibre还是照着Thread来的,同样难以融入到设计中,且并没有给面向对象的语义带来足够的扩展。不过,还是期待它能够在并行、Annotation上更进一步,也许可以带来一些变革。

Kilim后,我只好用Thread写了个Map-Reduce的框架。我学着Hadoop的样用了个iterator作为输入,但还是不能完全实现“尽可能”,似乎要实现还要改动receiver才行。效率一般,算法稍微复杂一点的话,也就是效率接近提高一倍。毕竟Thread的耗损在那里呢,所以如果Kilim可以利用到多核会很有益处。我希望能把这样的机制搭载在虚拟机上(因为多机虚拟很容易实现多核,而且是超多),就可以让绿色计算进化成云计算了。

另外,我考察了一个叫Actor Architecture的演员模型框架,这是我头回听说。它的消息机制语义很明确,而且支持多机,有望实现完全分布式的大云,但我对其调度方式尚存疑惑。它的通信机制确实是太好了,值得学习。但可惜它的材料并不很丰富,讨论的人也不是很多。而且毕竟是架构在OO之上,设计模式仍存在问题。

接下来到重头戏Erlang。Erlang虚拟机的微线程、spawn+receive+感叹号的消息机制使之成为FP并行计算之典范,全面强过OO方案,只是语言晦涩(我花了整整半天才弄懂语法,开始能看懂代码),过渡难。另外,Erlang虚拟机也印证了封装并行调度算法的可行性,免去了人们很多担心。

在此基础上,我觉得我们真正需要的是能够与Java融合在一个平台上的Erlang,但要并列融合而不是寄宿在OO中。还有融合的设计模式、融合的整体架构方案。要写出并行算法,必须从一下笔开始就受到约束,要规避状态、使用Map-Reduce,否则人们一定会走OO的。而最终这样的设计方式也需要能够像OO那样直观朴实地反映出来,甚至能够讲给用户听。

有人提出Actor Based和Actor Oriented的说法,但我不同意。因为Actor给人的第一感觉仍然是个类。我们需要的不再是将谓词寄托在主语下的形式,因为那还是OO,而是需要把谓词置于顶端,去考虑谁能参与到动作中来。

另外,对于终极的并行架构,我认为应该有一定的SOA特性,可以将整个互联网变成一朵大云。我想,以REST风格的服务作为一种通信方式(局部还是算了)可能有助于此。

当然,贼心不死,我还是希望这些东西可以应用在企业应用建设中,尤其是我所关注的企业2.0,尤其是希望有机会自己努力。不过,靠我这个PPT悬了。

PPT放在了sourceforge上。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值