【问题标题】:Akka as the concurrency model for ClojureAkka 作为 Clojure 的并发模型
【发布时间】:2011-07-22 14:27:21
【问题描述】:

看起来Akka框架有很多很酷的东西(我不是很了解框架,希望尽快深入研究)。
是否鼓励在 Clojure 中使用 Akka?在 Clojure 项目中使用 Akka 作为并发模型并放弃内置设施是否有意义?

【问题讨论】:

    标签: concurrency clojure jvm jvm-languages akka


    【解决方案1】:

    Clojure 为处理并发提供了很多内置支持。除非您确实需要演员,否则无需将演员库带入您的项目。你的问题没有详细说明你的系统的架构或设计,所以我不能真正谈论你的项目是否需要演员,但我当然不会直接跳进去。先看看 Clojure 的代理和其他并发原语。它们应该非常适合您的需求。

    就 Akka(或任何 Actor 库)作为 Clojure 的并发模型而言,这不是该语言的设计方式。您可以选择为您的应用程序使用演员库,但这不是 Clojure 语言采用的方法。

    【讨论】:

    • Clojure 不支持分发,对吧?所以如果你想扩展到多台机器,你在 Clojure 中做什么?
    • 有一个“模仿 Erlang OTP 平台的 Clojure 演员库”。 (而 erlang 是 akka 的灵感来源??)github.com/antoniogarrote/jobim 和 antoniogarrote.wordpress.com/2010/09/03/…
    • 没错,不支持分发。大多数时候,人们认为他们需要分发,最终陷入混乱的演员之中,而他们真正需要的只是一个队列或一些简单的东西。不是每个人都这样,但这是常见的情况:)
    • @Viktor - Clojure 中有多种分发方式,它们只是在库中提供,而不是在核心语言中提供。 Zach Tellman 的 Aleph 框架可能是最有趣的 - github.com/ztellman/aleph
    • 当然,即使是 Scala 也没有在语言中内置分布。
    【解决方案2】:

    这取决于您的项目是否已经在使用内置设施。这还取决于您的公司/项目是否首先容忍这个想法,容忍图书馆的许可条款,以及您/您的团队是否愿意接受社区支持或为商业支持付费。

    见:

    除此之外,这将归结为对项目开发人员的偏好、您编写的代码与标准工具的可维护性、对库的支持程度、Clojure 软件开发社区对库的接受程度,等等

    我的建议是评估它并使用您正在考虑的所有技术制作可比较的概念验证原型。

    这种建议适用于将任何第三方代码添加到项目中。

    盲目地接受别人的意见可能会花费你大量的时间、精力、金钱和其他开发人员的支持。

    【讨论】:

    • 请注意,我对 Clojure 或这个库一无所知,但我已经在多个项目/公司中宣传并接受了第三方库。希望这会有所帮助:)
    • 这是有史以来最专业、最务实的建议之一。
    【解决方案3】:

    Pulsar 项目为 Clojure 带来了轻量级线程、CSP 和类似 Erlang 的演员。

    【讨论】:

      猜你喜欢
      • 2012-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多