Akka中最重要的便是actor模型。
几十年前,Carl Hewitt提出了actor模型,以作为在高性能网络下并行处理的一种方式。但是在当时并没有这样的环境,如今硬件和基础设施能力已经赶上并超越了Carl Hewitt当时的预料。所以,那些想构建高性能分布式系统的组织遇到的使用面向对象编程(OOP)模型无法完全解决的挑战,现在可以使用actor模型解决。
如今,actor模型不仅被认为是一种高效的解决方案,而且也已经在世界上一些要求苛刻的应用中得到了验证。为了突出actor模型所能解决的问题,本主题主要讨论传统编程思想与现代多线程多CPU架构之间的不匹配:
- 封装的挑战
- 共享内存的错觉
- 调用栈的错觉
封装的挑战
OOP的核心是封装。封装规定对象内的数据不能直接从外部访问,只能调用方法来进行修改。对象需要暴露出一些安全的操作,这些安全操作用来维护其内部数据的约束。
例如,对有序二叉树的操作不得违反二叉树有序的约束。调用者希望排序是完整的,当查询树中某个数据时,他们需要能够依赖这个约束。
当我们分析OOP运行时行为时,我们有时会绘制一个时序图,显示方法调用的交互。
reny125.jpeg
网友评论