《A Universal Modular Actor Formalism for Artificial Intelligence》
目录
一.Akka 到底是什么,以及 Akka 试图要解决什么样的问题
二.akka几个重要的概念和比喻什么是Actor
一.Akka 到底是什么?以及 Akka 试图要解决什么样的问题?
我们说到 Akka 时,通常是指一个分布式工具集,用于协调远程计算资源来进行一些工作。Akka 是 Actor 并发模型的一种现代化实现,用于构建高 容错性分布式系统的框架。
可以把一个 Actor 看作是一个工人,就像能够工作或是处理任务的进程和线程一样。 把 Actor 看成是某个机构中拥有特定职位及职责的员工可能会对理解有所帮助。比如说一个餐馆。餐馆的职员需要做各种各样不同的工作,给客人准备餐盘就是其中之一。
二.akka几个重要的概念和比喻什么是Actor:
Actor:一个表示工作节点的并发原语,同步处理接收到的消息。Actor 可以保存并修改内部状态。
消息:用于跨进程(比如多个 Actor 之间)通信的数据。 消息传递:一种软件开发范式,通过传递消息来触发各种行为,而不是直接触发行为。
邮箱地址:消息传递的目标地址,当 Actor 空闲时会从该地址获取消息进行处理。
邮箱:在 Actor 处理消息前具体存储消息的地方。可以将其看作是一个消息队列。
Actor 系统:多个 Actor 的集合以及这些 Actor 的邮箱地址、邮箱和配置等。
饭店的例子来理解actor:
虽然现在看来可能还不是太明显,但是 Actor 模型要比命令式的面向对象并发应用程序容易理解多了。我们可以举一个现实世界中的例子来比喻使用 Actor 模型来建模的 过程,这会帮助我们理解它带来的好处。比如有一个寿司餐馆,其中有 3 个 Actor:客人 、 服务员以及厨师。首先,客人向服务员点单。服务员将客人点的菜品写在一张纸条上,然后将这张纸 条放在厨师的邮箱中(将纸条贴在厨房的窗户上)。当厨师有空闲的时候,就会获取这条 消息(客人点的菜品),然后就开始制作寿司(处理消息),直至寿司制作完成。寿司准 备好以后,厨师会发送一条消息(盛放寿司的盘子)到服务员的邮箱(厨房的窗户),等 待服务员来获取这条消息。此时厨师可以去处理其他客人的订单。当服务员有空闲时,就可以从厨房的窗户获取食物的消息(盛放寿司的盘子),然后 将其送到客人的邮箱(比如餐桌)。当客人准备好的时候,他们就会处理消息(吃寿司),运用餐厅的运作来理解 Actor 模型是很容易的。随着越来越多的客人来到餐厅,我们 可以想象服务员每次接收一位客人的下单,并将订单交给厨房,接着厨师处理订单制作寿 司,最后服务员将寿司交给客人。每个任务都可以并发进行。这就是 Actor 模型提供的最 大好处之一:当每个人各司其职时,使用 Actor 模型分析并发事件非常容易。而使用 Actor 模型对真实应用程序的建模过程和本例中对寿司餐厅的建模过程并没有太大差异。
Actor 模型的另一个好处就是可以消除共享状态。因为一个 Actor 每次只处理一条消 息,所以可以在 Actor 内部安全地保存状态。如果读者此前没有接触过并发系统,那么 可能不是很容易马上理解这一点。不过我们可以用一种简单的方式来进行说明。假设我 们尝试执行两个操作,同时读取、修改并保存一个变量,那么如果我们不进行同步操作 并加锁的话,其中的一个操作结果将丢失。这是一个非常容易犯的错误。
295

被折叠的 条评论
为什么被折叠?



