查看sse-chat框架的Clojure Pedestal演示 - 它依赖于基座中的SSE features - 我注意到the following code:
(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频谱的解决方案)
答案 0 :(得分:1)
目前没有免费的午餐/银弹用于多节点并行。大多数人使用SOA方法(REST,队列等)来并行化他们的应用程序。当然,在大型企业中,您失去了协调资源访问的能力,而且解决方案可能是hackish。我听说Immutant(Jboss)的XA事务很好,它们可以自动应用于缓存和消息传递的工作方式,但是没有亲自使用这种方法。您可能会发现另一个有用的工具是Storm,它允许您为分布式处理设置拓扑,添加一些声明性抽象来代替繁琐的手动开发和等效服务架构的配置。