标签: lamina-clojure

Clojure中Web服务的异步作业队列

目前我正在尝试使用RESTful API构建一个Web服务来处理一些长时间运行的任务(作业).

这个想法是用户通过执行POST来提交作业,该POST返回一些用于检查作业状态的URL,该URL还包含结果的URL.一旦作业完成(即某些值写入数据库),结果URL将返回相应的信息(而不是没有结果),并且作业URL将指示已完成的状态.

不幸的是,计算非常密集,因此一次只能运行一个,因此需要对作业进行排队.

在伪事情中需要这样的东西

(def job-queue (atom queue)) ;; some queue 
(def jobs (atom {}))

(defn schedule-job [params] 
  ;; schedules the job into the queue and 
  ;; adds the job to a jobs map for checking status via GET
  ;; note that the job should not  be evaluated until popped from the queue
)

(POST "/analyze" [{params :params}] 
 (schedulde-job params))

(GET "job/:id" [:d] 
 (get @jobs id))

;; Some function that pops the next item from the queue 
;; and …
Run Code Online (Sandbox Code Playgroud)

queue jobs web-services clojure lamina-clojure

7
推荐指数
1
解决办法
1681
查看次数

拉米娜与风暴

我正在设计一个原型实时监视器,用于处理相当大量(> 30G /天)的流数字数据.我想在Clojure中写这个,因为该语言似乎非常适合那种"观察者+状态机"系统,这可能最终会成为.

我找到的两个主要候选人是Lamina和Storm.还有Riemann和Pulse,但前者似乎更像是一个完整的解决方案,而不是一个框架,我宁愿不承诺最终的设计; Pulse的回购看起来有点不受维护?

我想知道的是; 这两个项目针对哪些数据和工作流程进行了优化?风暴似乎更成熟,但Lamina似乎更具有组合性和"Clojureic"(我的背景是Python,所以我倾向于高度评价).

我在网上看到的内容:

  • Storm似乎是以Big Data(流)为重点,核心是带有Clojure DSL的直接Java.它似乎具有针对许多现有数据源的pre = built处理程序.

  • Lamina更像是一个轻量级,可重用的组件,可以对Clojure进行编码以实现抽象,这意味着它可以作为其他事件系统的基础重用.数据源需要在代码中处理.

  • 两者都有一组有用的聚合/分裂/计算库函数.Lamina的graphviz集成是一个不错的选择.

events clojure stream-processing lamina-clojure apache-storm

5
推荐指数
2
解决办法
785
查看次数

Clojure core.async和Lamina

core.async是Lamina的替代品还是打算成为Lamina的替代品?

如果没有,是否有明显的情况,哪一个优于另一个?

clojure lamina-clojure core.async

5
推荐指数
1
解决办法
698
查看次数