《七周七并发模型》阅读总结
《七周七并发模型》是介绍并发模型的好书,值得一读。最近是第二遍读这本书了。
很多开发者,对并发模型却只知道多进程和多线程这两种。这本书是全面介绍并发模型的一本非常好的书,介绍了许多非常有用的并发模型:
1. 最基础的线程和锁模型,这个做过Java并发编程的都会有一定的了解。
2. 通过无变量的函数式编程实现并发,是无锁并发的一种模型。函数式编程在一些数值计算的领域有广泛的使用,支持并发应该算是其中很重要的一个特性。
3. 状态和标识的分离,类似数据库里面的事务管理,不过是由编程语言在内存中支持的,可以轻松实现内存事务模型。这本书通过 Clojure 作为示例语言。这种事务模型只在数据库上接触过,也比较熟悉,但是在编程语言层面却是一个新的体验,很有趣
4. Actor 模型是容错性非常高的分布式并发模型,这是 Erlang 的核心概念,在 Java 和 Scala 中也有 Akka 的实现。感觉基本的思想就是将任务分块,分发到每个 Aactor 的 Mailbox 里面由每一个 Actor 自己执行,各自独立完成任务,避免使用同一份数据而产生冲突。
5. CSP 模型是另一种分布式并发模型,很 Actor 模型很像,这个在 Go 里面有 goroutine 的实现。
CSP 通常是同步的,Actor 通常是异步的;CSP 中的 Channel 通常是匿名的, 而 Actor 是有标识的;在 CSP 中,只能通过 Channel 在任务间传递消息, 在Actor中,可以直接从一个 Actor 往另一个 Actor 传输数据;CSP 中消息的交互是同步的,Actor 中支持异步的消息交互。
这是从网上找到的资料,未经过实际使用的体验。
6. GPU 的并行计算主要针对数据密集型计算的并行。将数据划分成很多块,然后由统一的指令执行,Single Instruction Multiple Data (SIMD)。CUDA、OpenCL 这些高性能计算框架都是这么干的。
7. Lambda架构,应该说是目前很多大数据处理系统的指导思想。Lambda架构的主要思想就是将大数据系统构建为多个层次,Batch Layer(存储 Master Dataset,不变的持续增长的数据集并针对这个 Master Dataset 进行预运算)、Serving Layer(对 Master Dataset 随机访问并更新 Master Dataset)、Speed Layer(通过快速、增量的算法对更新到 Serving Layer 带来的高延迟的一种补充,最终 Batch Layer 会覆盖 Speed Layer)
这种非工具技术书阅读带来的收获更多的是思想上的提升和视野的开阔,一段短短的总结实在无法表达太多的东西。粗浅的阅读总结。