我需要一个后台作业处理解决方案。一个任务队列,其中worker可以是不同机器上的远程进程。
我在互联网上搜索过,但发现只有Psychiq属于alfa而不建议用于制作。
我不相信,对于像Common Lisp这样成熟的语言,没有其他解决方案。
它们在哪里?
更新:
可能的解决方案:
答案 0 :(得分:4)
我不确定这是否与您完全相同,但LFARM可能是一个很好的候选人:
lfarm是lparallel的分布式版本,它将工作线程替换为远程进程。例如,lfarm:pmap将细分输入序列,将部件发送到远程机器进行映射,然后组合结果。同样,lfarm:future将承诺中的远程任务执行包装起来。大多数lparallel内核API都保留了很小的变化。
github repository有一些例子。
另请参阅Erlangen,了解基于本机线程的分布式Erlang方法。
Erlangen将分布式异步消息传递给Clozure Common Lisp。它使用消息传递协调Clozure CL进程(本机线程),并使用supervison树鼓励容错软件体系结构。它也是透明分布式的,其所有功能都可以跨IP网络无缝运行。因此,它可用于跨不同主机上的多个Clozure CL实例构建应用程序。埃尔兰根借用了Erlang / OTP的许多想法,因而得名。 (这是一个小镇!)