[elixir! #0041] I, Actor

[elixir! #0041] I, Actor_第1张图片

计算机科学中的演员模型是并行计算的数学模型,将“演员”视为并行计算的通用原语。 响应于收到的消息,演员可以:做出本地决定,创建更多演员,发送更多消息,并确定如何响应接收到的下一条消息。 演员可以修改私人状态,但只能通过消息相互影响(避免需要任何锁)。 ---- Wikipedia

引言

很长一段时间里, 编程对我来说是一件非常困难的事情. 在学校里, 学生们需要理解很多非常抽象的名词, 它们很难用现实生活里的事物来类比. 然而, 很多时候, 我们编程是为了解决现实中的问题, 程序员需要想方设法地填补现实与机器之间的鸿沟. 设想一下, 如果编程的方式更贴近于我们日常生活中人与人沟通的方式, 那么让计算机理解现实问题就会变得简单许多.

[elixir! #0041] I, Actor_第2张图片

于是, 我们在计算机里创造了一个机器人, 我们希望能够这样为他编写行动规则:

收到
  "你是谁?"      -> 回答 "你好,我是actor001."
  "现在的几点了?" -> 查询系统时间 | 回答
结束

[elixir! #0041] I, Actor_第3张图片

为了实现我们的设想, 首先, 这个机器人需要具有这几个要素: 1. 他需要可以接收到消息, 就像一个他的专属邮箱; 2. 他需要有一个行为规范的手册, 他会按照手册的内容来比对收到的消息, 从而进行行动; 3. 他需要有使用计算机里的资源的能力, 这样才能为我们提供服务.

一切看起来都很完美, 然而, 我们面对的现实问题可能非常复杂, 比如, 搭建一个数十万用户的游戏服务器. 这时候, 我们的机器人还可以正常服务吗?

[elixir! #0041] I, Actor_第4张图片

让我们先来思考一个现实问题: 小镇上有一家麻将馆, 平常只有7,8个人来打麻将. 后来, 小镇的经济快速发展, 变成了城市, 来打麻将的人多了不少, 原来的麻将桌已经不够用了, 这时候老板该怎么做. 老板买了更多的桌子, 直到摆不下了为止. 所以, 当我们使用 Actor 模型时, 只需要简单地创造更多的 Actor, 就可以为更多的用户服务.

你可能感兴趣的:(erlang,elixir)