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和分布式处理系统的讨论。
感谢您一直陪伴到最后。
下周的文章再见。