我已经阅读了一些有关actor模型的知识,但是并不太了解如何在现实世界中使用actor –如何为它们建模问题。
有人可以解释一下吗?一个简单的示例或示例的链接将不胜感激。
我已经阅读了一些有关actor模型的知识,但是并不太了解如何在现实世界中使用actor –如何为它们建模问题。
有人可以解释一下吗?一个简单的示例或示例的链接将不胜感激。
Answers:
从建模动作,消息等方面来讲,参与者是一种建模软件的方式,它提供了几个有用的项目...
Actor可以驻留在单个线程上,从而可以进行非线程安全/非并发操作,而无需一堆锁定魔术。演员将响应其收件箱中的消息。当您希望它处理命令时,您会向它发送一条消息,它将按收到顺序对其进行处理。就像普通的队列一样。线程安全是这里的杀手,,我在许多我从事的开源项目中都使用了它。
例如,在某些语言中,例如Scala,通过拆分参与者并将他们交流的渠道转变为远程渠道,很容易将基于参与者的代码在单个过程中转变为分布式系统。这在实现方式之间有所不同,但很简单,但这是一个了不起的功能。
帮助将重点放在基于任务的事件上,而不是CRUD事件上。CRUD很简单,但是就像与文件柜进行交互一样。如果我们可以提供比所生产的软件更多的价值,那么为什么要这样做呢?在基于任务的系统中,将多个操作绑定到单个“更新”命令比仅保存到数据库更有用。这也涉及到CQRS之类的东西。
特拉维斯的答案很可靠。当您开始谈论并发时,您正在尝试解决资源问题。与线程和锁的并发非常容易出错。角色模型有助于迫使您将代码的并发部分编程为自包含的块,这些块可以并行执行而无需依赖于另一段代码。您正在尝试避免种族状况和僵局之类的麻烦。
在这次对话中,演员就像你我一样。您只是无法进入我的大脑并挑选出我正在输入的内容。您给我传递了一条消息,说“我们为什么存在?” 我坐着,打一些电话,然后回信说:“我想,所以我是。” 您无法分辨我在自己的地球上所做的事情,您与我的唯一联系就是通过我们来回传递的信息。
编辑:
您没有说自己喜欢哪种语言,而是查看您的语言是否有参与者实现。也许最简单的是python中的一些actor库。但是可能对学习更好的是Erlang。语言有点粗糙,但是一旦您克服了细微差别,它就是一门好语言。
参与者是用例图的元素,它表示可以在系统上起作用的任何外部实体(用户,外部系统等)。任何基本用例都将包含参与者-仅以Google“用例”为例就可以了。