BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Clojure语言的一个现实应用

| 作者 R.J. Lorimer 关注 0 他的粉丝 ,译者 霍泰稳 关注 1 他的粉丝 发布于 2009年1月22日. 估计阅读时间: 2 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

最近有人在Clojure的Google讨论组发布了一条消息,说有一个部分使用Clojure语言开发的医疗服务系统已经在一个重要的兽医院投入使用。这个产品看上去使用了好几种语言和技术,但是Clojure看上去也在其中扮演了一个重要的角色。

这一发布引发了一阵骚动,因为这是目前为数不多和Clojure相关的报道,而且是在一个大规模产品部署中使用Clojure,尤其是在医疗这么重要的环境中。作为一门语言,Clojure相对比较年轻,才开发了没几年。

这一产品的核心是一个复杂的HL7消息总线。这些消息的路由和归档,以及总线的容错功能和错误处理都由Clojure控制:

我们设计了一个HL7消息总线来连接医院里的不同服务,比如将病例系统和放射科进行连接等。这样做的最大好处是避免了每个系统里病人和请求的密钥信息重置。

在总线上我们还提供了一些密钥程序,允许人们在他们每日使用的系统里,以一个持久的方式共享信息。这就就好像一个巴比塔,放射科医师想使用他们的放射系统,而管理人员想用病例系统处理账单等等。基于一个用户库,每个系统都遇到特定的需求,从而需要一个通用的平台来共享信息。这就是我们这个系统所要解决的。

在这个产品里还应用了其他一些技术和规范,比如:

这个产品目前部署在多个迷你PC设备上,使用主从运行时模式提供容错处理。该产品使用并行处理模式,据报道可以每小时至少处理2000个交易。作者还谈到,在将来他们会进一步扩展Clojure和Terracotta集群类库中的并发特性,最终完全抛弃主从模式,然后通过在所有工作设备上同时运行它们来扩展系统的容错能力。

Clojure语言主要用于解决并发编程问题。通过软件事务内存模式和用作代理系统的线程分发框架,Clojure提供了诸多特性,以一种持久安全的方式在线程之间传递状态。

在Clojure的官方网站上你可以了解到更多关于Clojure的内容,而Clojure Google讨论组是该社区交流和发布信息的最佳场所。

查看英文原文:Live Production Clojure Application Announced

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

很好! by 胡 键

虽然clojure较新,但是其祖先lisp可是源远流长。

Re: 很好! by 霍 泰稳

JavaWorld的Java 2008大事记文章中这样提到了Clojure:

Clojure被称为Java平台的Erlang,是一个在JVM平台运行的动态函数式编程语言,其语法来自于LISP语言。

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

2 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT