引言
在Akka的世界中,消息传输是异步的,异步是一种高效的通信机制,使得消息的发送者无须阻塞等待先前的消息处理完成。
异步也意味着不确定性,但是很多时候业务逻辑要求消息按一定的顺序被处理,此时Akka的另一基石 – Future就可以派上用场。
JavaScript采用回调函数来处理异步编程,但是用户经常会陷入一种被称作回调金字塔(Pyramid of Doom)的困境,即在回调函数内部嵌套其它回调函数,层层嵌套使得代码清晰性急剧下降。
1 | asyncOperation(function(data){ |
defer和promise是jQuery实现中,最难也最有趣的部分,它们以优雅的方式实现了JS世界中的异步回调。
1 | promiseSomething() |
Spark是继Hadoop之后的下一代分布式大数据处理框架,相对于传统的批处理框架Hadoop,Spark通过可存储在内存中的数据集RDD,以及对流式(streaming)处理的支持,可以获得10到100倍的性能提升。相对于仅支持流式处理的Storm框架,Spark提供了对批处理,流处理,交互式查询,机器学习及图形计算等一系列任务的支持,一站式解决各类大数据分析需求。
每个分布式框架需要解决分布式环境中天然的技术难题,比如并行效率,出错恢复和一致性等问题。分布式框架本身需要精巧的设计,但是对使用框架的用户来说,需要实现的客户端代码是比较简单直接的,无非是对数据集合的map, reduce, filter, group, join等一系列操作。
然而要实现高效的Spark应用,需要用户对数据在物理节点上的存取,在网络间的传递,以及任务的执行流程有清晰的理解,RDD和DAG是需要掌握的两个核心概念。