2014年冬季的Clojure网络相关进展

首先

内容很简单但是浅显,请多多包涵。

我会列举一些在Clojure相关讨论中提到的Web相关库等内容。
未来可能会写一些无法具体介绍的文章。

会议介绍

首先,我整理了今年在重要的Clojure活动上发布的资料。即使您不擅长英语,也可以通过包含图示的幻灯片等方式来感受其中的氛围。

欧洲克卢日2014

每年六月下旬举办的欧洲独有活动。

建议您查看今年的EuroClojure感想和幻灯片,因为有许多实用的演讲,并且似乎在其他活动中也会进行相同的演讲。

印象笔记

欧洲克罗地亚 2014 年,在克拉科夫举办的 EuroClojure 大会。请访问链接获取更多信息:https://gist.github.com/philandstuff/299cda371c7e74b03f18

投影片

视频

介绍其中一个

我会介绍我认为很有趣的会议。

模式和Swagger – 让你的Clojure Web API更加强大

使用compojure作为基础,创建基于WEB API的讨论。
通过使用Prismatic的Schema来定义输入和输出的类型,
可以通过使用Swagger UI来自动生成API的文档,并且还可以实际调用和测试。

实际上,值得一看的就是正在运行的地方,所以我们来实际操作一下。
操作示例1(源代码)
https://immense-inlet-2435.herokuapp.com/index.html
操作示例2(源代码)
https://infinite-wave-1738.herokuapp.com/index.html
Github
https://github.com/metosin/compojure-api

在一个邮局里使用Clojure

澳大利亚邮政公司建立了一个使用http-kit和异步API构建的智能手机应用程序的后端。该WEB API服务每秒处理约5000个请求,同时有30万用户使用,运行在EC2 C1 Medium实例(8核/7GB内存)上。由于采用了CQRS(命令与查询分离)设计,所以API是异步的。事件存储使用了Cassandra技术。

使用Clojure对推特空间进行情感分析

收集和分析推文的过程中,使用了接收推文的ring服务器,保存推文的机制和分析推文的机制。推文通过LMAX Disruptor进行异步缓冲和保存。

使用Om进行响应式数据可视化。

使用Om进行可视化的讨论。
描述了实际所做的事情。

还有,下面clojure/conj的演讲资料中,有一个幻灯片提到“避免使用饼图”,另外还讲到了使用websocket时,可以考虑使用chestnut作为开发环境。

嗯嗯嗯嗯

试用一下演示应用。
演示: http://evening-citadel-3933.herokuapp.com/
Github: https://github.com/annapawlicka/pumpkin

奇怪的循环2014

每年9月下半月在圣路易斯举办的活动。
由Alex Miller先生发起的明日软件技术相关的演讲是主要内容。
在为期两天的活动中,有大约1个演讲是与Clojure相关的,同时进行5个不同的演讲。

我认为今年的报告中,涉及到如何通过JVM来加速实现和使用Clojure开发的RPC(finagle-clojure)和异步协作(Onyx)等方面的演讲。我认为这些报告可能对那些希望开发类似于EuroClojure2014中提到的服务的人具有参考价值。

感受记录

幻灯片

视频

克洛雅西2014

美国西海岸将举办一个专注于Clojure的活动,预计在三月的后半月。这个活动与Clojure/conj类似,由Clojure开发核心成员组织的Cognitect主办,每半年在东海岸和西海岸交替举办。

视频

Clojure/conj 2014 的中文意义是什么?

每年11月下旬举行的clojure顶级开发者聚会,吸引来自世界各地的clojure开发者参与。将来预计仍将在美国东海岸举办。

视频 (shì

图书馆介绍

网络服务器

使用ring,可以通过lein ring在jetty上启动,也可以通过lein ring war等方式创建servlet容器文件,但如果要使用异步API,则需要使用http-kit或aleph等工具。

根据12月份的基准测试结果显示,nginx-clojure、ring-undertow、immutant2和aleph等在速度上表现出色。

nginx-clojure是作为nginx后端运行的机制。
ring-undertow是使用JBoss WildFly的web subsystem中的undertow的ring模块。
immutant2是基于JBoss WildFly的Clojure应用服务器,可以像ring-undertow一样通过启动或部署到WildFly的war来运行。
接下来会继续介绍一下immutant2。

不可变的二

今年春天发布了Beta版并持续开发中。
http://immutant.org/news/2014/04/28/getting-started-with-2x/

如果使用Immutant2,就像WildFly一样,可以利用JBoss应用程序中的消息传递(HornetQ)、缓存(Infinispan)、事务(Narayana)、作业调度(Quartz)、日志记录等功能。但由于它只能用作Web服务器,所以是否实际使用取决于个人喜好。

文档位于CloudBees的CI服务器上。
https://projectodd.ci.cloudbees.com/job/immutant2-incremental/lastSuccessfulBuild/artifact/target/apidocs/index.html

网络框架

Compojure、Luminus、Caribou等,这些Web框架在immutant2的文档中也有提到。

闪亮

在noir这个Web框架被停止之后,我们将noir转为库进行重新构建,形成了一个新的web框架。

构成

以下是構成詳情:Compojure/Ring、Hiccup、Selmer(類似Django的模板)、libnoir和ActiveRecord的Korma。

黑色图书馆

中心是libnoir,
libnoir是一个包含cookie、session、io(用于处理静态文件的响应)、请求、头部和重定向、响应内容格式处理、以及验证库的集合。
http://yogthos.github.io/lib-noir/index.html

北美馴鹿

Caribou是一个全栈Web框架。虽然在clojure生态系统中并不太受欢迎,不过究竟会有怎样的发展呢?

架构和Swagger(Compojure-API)

请参考EuroClojure的Schema & Swagger。
Metosin公司除了创建用于使用Schema和Swagger的库外,也创建了其他用于处理HTTP响应等的库。

远程过程调用

如果尽管在构建后端时优先使用REST/HTTP,但无法完全处理所有服务的异步HTTP情况,则需要使用类似于“HTTP – RPC – Resource”配置的RPC。

当需要实现RPC服务时,常常会使用JVM的Reactor或Finagle等工具。

(When it is necessary to implement RPC services, it is common to use tools such as JVM’s Reactor or Finagle.)

克隆辑-费内格尔

如果像示例那样定义Thrift接口,就可以使用Clojure编写Finagle服务器和客户端的实现。

因为有一个在2014年的Strangeloop会议上的演讲,所以希望你能参考一下。
标题是《使用Finagle和Clojure开发高并发服务》。
链接是https://www.youtube.com/watch?v=-woCYVaMBsg。

其他

在JVM的世界中,越来越多的应用程序正在采用LMAX Disruptor来实现内部异步消息传递。

在Spring的团队中,他们宣布使用LMAX Disruptor这个异步库实现了Reactive Streams,并且开发者数量也在增加。

在Clojure中,Onyx被使用在Storm和Strengeloop 2014等分布式数据处理器中的发表中。

最后

虽然变得没有头绪,但这次就到这里吧。希望还能有机会总结MQTT和分布式处理系统的讨论。

感谢您一直陪伴到最后。

下周的文章再见。

广告
将在 10 秒后关闭
bannerAds