演员模型与面向对象模型

Sug*_*Raj 10 oop actor-model akka

我在网上搜索了很长时间,找不到在Actor模型中克服的面向对象模型的具体缺点.请帮我一些指示和解释.

提前致谢.

Bre*_*ung 17

面向对象编程一词最初来自 Alan Kay 和 Smalltalk。它强调消息传递是其主要功能。这就是 OOP 最初的意思。

一旦 C++ 和 Java 出现,面向对象编程这个术语就具有了稍微不同的含义。它演变成某些人所说的“面向类的编程”。

演员模型再次强调传递为核心的基本面消息的最初OOP概念。

演员模特优点:

  • 在分布式系统中效果更好
  • 在许多情况下,在架构上更容易理解
  • 模拟现实世界的现象/具有多个“参与者”的复杂系统
  • 很大程度上兼容函数式编程风格(参见 Smalltalk)

演员模型缺点:

  • 很难对算法进行推理,因为它不仅仅存在于一个地方。它被分成不同的演员/文件,你必须追赶它并遵循代码。
  • 同样,多个算法可以在多个参与者之间混合使用。因此,您可能会转到一个文件并阅读 Actor 的代码以遵循算法,但会感到困惑,因为其他算法也混合到同一个 Actor 中。
  • 传统的信号量式锁定是不可能的。必须使用可能更复杂的 STM 风格。
  • 更难获得“返回值”。Actor 模型是“即发即忘”。您必须弄清楚如何将“返回值”返回给原始请求者。这会增加很多开销,因为现在您必须设置一种方法来接收它并通过整个系统传递上下文(uniqueId / taskId)。您还需要管理状态以保存该信息,直到“响应”回来。如果没有 actor 模型,它们将只是块作用域中的局部变量。


Sug*_*Raj 9

OO型号的缺点:

  1. 传统的OOP语言并非设计为并发.由于它使用的是共享状态,所以很容易引入竞争条件.
  2. 程序员必须通过使用锁定机制来识别和修复所有可能的问题区域.
  3. 对于简单的程序,锁定很容易实现.但随着程序变得复杂,锁定的实现也变得复杂.

Actor模型通过使用无共享模型克服了这个问题,因此不会影响并发性,也不需要锁定机制.