scala语言写的开源消息中间件:Kestrel

jopen 11年前

Kestrel推ter的开发团队用scala语言写的开源消息中间件。 

其具备了以下特点:

  快速:Kestrel运行在JVM上,用户可以视为java的项目来使用高级的优化手段。

  小巧:Kestrel大约2500scala代码

  持久性:为了获取不错的性能表现,队列是存储在内存中。但是同时在硬盘上保留了日志,因此服务器 关闭可以保证不丢失数据。

  可靠性:客户端可以尝试获取队列中的数据项,如果客户端在没有确认获取数据项之前断开链接,数据 项还可以被其他客户端获取,就是说客户端崩溃不会导致数据项的丢失。

除此之外kestrel还具备了很多让人眼前一亮的特性:

支持多请求协议:目前支持三种协议,

    memcache协议(并没有完整的实现memcache协议,只支持部分操作协议)
    协议的说明 https://github.com/memcached/memcached/blob/master/doc/protocol.txt

    text协议

    thrift协议

FanoutQueues(队列分发):根据队列的命名规则完成数据项的自动复制分发,可以发送端只发送一次,多个接受端可以相互之间不受影响的独立接收数据。

集群支持:kestrel集群类似于memcache集群,集群中的服务器互相并不知道对方的存在。请求的分发主要由客户端来完成,kestrel本身也可以通过设置来结合zookeeper来管理其集群资源。

灵活的配置:kestrel具备很多可调节的配置项,比如可以选择是否持久化或者数据项过期时长,结合jvm本身的配置,可提供给使用者更多的优化空间。

官方网址:http://推ter.github.io/kestrel/