Actor模型是做什么的?

问题

用户A的操作 (1)开始事务 (2)操作资源1 (3)操作资源2 (4)提交事务 用户B的操作 (1)开始事务 (2)操作资源2 (3)操作资源1 (4)提交事务 如果用户A和用户B的两个事务同时发生,A锁住了资源1,B锁住了资源2,互相等待,陷入死锁 如果采用同步锁synchronized,可能会出现破坏逻辑一致性的问题 这个问题的根本原因:数据是被动的被处理 在读多写少,较少涉及事务机制的场景下,这个问题不明显,否则就面临此问题

Actor模型

Actor模型就是用来解决事务并发问题的 Actor模型 = 数据 + 行为 + 消息 上面的问题是因为数据是被动的,那么Actor模型就让数据有了自己的行为意识,不让别人处理自己的数据,别人只能通过消息的发送,激发行为处理数据,保证Actor内部数据只能被自己修改 传递消息是Actor模型的基础,这个过程类似收发邮件 (1)用户A给用户B发送了一封邮件 (2)用户B在合适的时候去检查邮箱,收到邮件,进行处理 (3)处理后给用户A发送一封确认结果的邮件 (4)用户A也会在合适的时候去检查邮箱,接收邮件 邮件就是消息,处理邮件就是对自己的数据执行相应的行为,用户A并不处理用户B的数据,只是发送消息告诉用户B处理 对于并发的情况也一样,因为每个参与者都有自己的邮箱,每封邮件都会按照它们到达的顺序被处理 所以,Actor模型固有了处理并发的特性 Actor模型的口号是:一切皆Actor,这和面向对象的‘一切皆对象’很相似,但面向对象是顺序性的,而Actor模型固有并发的特质 Actor是一个个独立的实体,他们之间毫无关联,只有发送消息这一种通信方式,消息让Actor之间解耦,消息传递形式简化了并行程序的开发 消息的类型、内容是任意的,有点像webservice,只传递消息,不必了解是如何实现的 Erlang,Go,Scala等语言都是支持Actor模型的

原文发布于微信公众号 - 性能与架构(yogoup)

原文发表时间:2016-04-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏编程

每个Python新手都应该知道的一些编程技巧

每天你都应该努力提升自己的编码技能,今天我给Python新手带来了一些编程建议。 Python箴言 打开Python交互终端并运行下面命令 然后命令会有一些输出...

2009
来自专栏python3

python .pyc是个什么啥?

我初学Python时,听到的关于Python的第一句话就是,Python是一门解释性语言,我就这样一直相信下去,直到发现了*.pyc文件的存在。如果是解释型语言...

1201
来自专栏喵了个咪的博客空间

phalcon-入门篇8(Model层基础使用2)

phalcon-入门篇8(Model层基础使用2) ? 本教程基于phalcon2.0.9版本 先在这里感谢各位phalcon技术爱好者,我们提供这样一个优秀的...

3834
来自专栏FreeBuf

挖洞经验 | 如何在一条UPDATE查询中实现SQL注入

前段时间,我在对Synack漏洞平台上的一个待测试目标进行测试的过程中发现了一个非常有意思的SQL注入漏洞,所以我打算在这篇文章中好好给大家介绍一下这个有趣的漏...

2465
来自专栏IMWeb前端团队

【原译】javascript中的错误处理

本文作者:IMWeb ouven 原文出处:IMWeb社区 未经同意,禁止转载 【原译】javascript中的正确错误处理 A Guide to P...

2449
来自专栏小灰灰

SPI框架实现之旅一:背景介绍

SPI框架实现之旅一:背景介绍 SPI的全名为Service Provider Interface,简单的总结下java spi机制的思想。我们系统里抽象的各...

24610
来自专栏ChaMd5安全团队

HBCTF第一场2个pwn题的简单分析

【ChaMd5安全团队所有文章均来源实战,为保证厂商安全信息,文章内容以思路为主。 需要转载,请先联系ChaMd5安全团队授权。 未经授权请勿转载。】...

46310
来自专栏积累沉淀

Javascript模块化编程(一)

随着网站逐渐变成"互联网应用程序",嵌入网页的Javascript代码越来越庞大,越来越复杂。 网页越来越像桌面程序,需要一个团队分工协作、进度管理、单元测...

37210
来自专栏PHP在线

小技巧让你的 if else 看起来更漂亮

刚看到一个提问帖: 《如果程序中出现多层嵌套的 if...else...语句,如何重构可使程序逻辑变得更为清晰易读?》,因回答篇幅比较大,单独开个帖子答一下。 ...

2886
来自专栏python3

python3--文件操作

rb,只读,以bytes类型读取(非文字类的文件时,用rb,比如图片,音频文件等)

1752

扫码关注云+社区

领取腾讯云代金券