【问题标题】:Actor Model for instant messaging app?即时通讯应用的演员模型?
【发布时间】:2018-10-05 00:45:02
【问题描述】:

我有使用诸如RabbitMQ 等消息传递技术的企业分布式系统的背景,尽管我对Actor Model 比较陌生。

话虽如此,我想知道将Actor Model 框架(例如AKKAAKKA.NET)用于类似于Whatsapp 的应用程序是否是个好主意? 考虑到此类应用的要求(高可用性、低延迟等...)。

我的另一个问题是,Erlang 的内置演员模型是大公司将它用于他们的消息传递应用程序的原因还是我不知道的其他东西?

高度赞赏技术解释。 提前致谢。

【问题讨论】:

  • 这是一个不错的选择,但是这个问题不适合 SO
  • @KeithNicholas 为什么不呢?这是一个广泛的概念。但事情并不总是真假。不知道为什么这里的人坚持这一点。 SO只是因为这个想法而结束了很多好问题。
  • 这不是关于好与坏的问题,有很多好问题对 SO 不利,通常会让提问者感到沮丧,但 SO 确实试图更像维基百科,提供明确的答案具体问题。当谷歌搜索时,许多特定的编程问题都会在顶部有 SO 答案。这对于讨论/基于意见/过于宽泛的问题并不是那么好,因为没有明确的答案。不幸的是,没有一个好地方可以推荐人们去回答这些问题。
  • 是的,但问题是它本身对“有明确答案的问题”的定义是广泛的。所以不是讨论的地方,但它应该是分享经验的地方(可能不是一行或两行“确定”答案)我自己几乎已经知道我的问题的答案。我只需要了解该领域其他人的推理或经验(可能与我的不同)。我们都

标签: akka message-queue messaging akka.net actor-model


【解决方案1】:

我相信演员模型是使 Erlang 应用程序如此容错的原因之一。

进程/参与者可以在不影响其他进程或破坏共享数据的情况下死亡,因为没有。 Erlang 进程的启动也非常便宜,因此如果您需要一个进程或每个客户端 10 个进程,这不是问题。 Erlang 使用监督树,它可以以多种不同的策略重新启动进程,例如一对一或一对一,因此如果一个进程失败,它可以重新启动该分支中的所有进程或仅一个进程而不会触及其他进程。当您在实时语音/视频/聊天会话中有数百万客户时,这一点很重要。

Erlan 还带有内置的并发和垃圾收集。与其他语言相比,您花在思考如何扩展项目以及如何防止项目崩溃上的时间要少得多。由于模式匹配、OTP 和 Let It Crash 心态,它的开发速度也比低级语言更快。

抱歉,如果技术不够,也许其他人可以参与其中。如果您想全面了解 erlang,请查看这些视频 - https://www.cs.kent.ac.uk/ErlangMasterClasses/#class1

【讨论】:

  • 在您看来,这是否让Actor Model 成为即时通讯应用的好选择?
  • 考虑到 Whatsapp,根据我的理解,Facebook Messenger 现在使用 erlang,我会说有资格的人打了这个电话。
  • 另外,RabbitMQ 是一个用 Erlang 编写的即时通讯工具)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多