3

查看Clojure Pedestal框架的sse-chat演示- 它依赖于 Pedestal 中的SSE 功能- 我注意到以下代码

(defn publish
  [request]
  (doseq [sse-context @subscribers]
    (try
      (sse/send-event sse-context "message" (-> request :form-params (get "msg")))
      (catch java.io.IOException e
        (remove-subscriber sse-context))))
  {:status 204})

基本上,这会保留订阅者的地图(EventSource 客户端的地图)并向他们发送聊天事件。

我的问题是 - 假设您想跨多个服务器扩展此应用程序。执行此操作的惯用模式是什么?(希望在 Clojure Pedestal 中 - 但可能是整个 Java 领域的解决方案)

4

1 回答 1

1

目前没有免费的午餐/多节点并行性的灵丹妙药。大多数人使用 SOA 方法(REST、队列等)来并行化他们的应用程序。当然,在大环境中,您将失去协调对资源的访问的能力,而且变通办法可能是骇人听闻的。我听说过有关 Immutant (Jboss) 的 XA 事务的好消息,这些事务自动应用于它们的缓存和消息传递的工作方式,但没有亲自使用过这种方法。您可能会发现另一个有用的工具是 Storm,它允许您为分布式处理设置拓扑,添加一些声明性抽象来代替繁琐的手动开发和提供等效服务架构。

于 2013-07-28T19:37:21.843 回答