scala语言写的开源消息中间件:Kestrel
jopen
11年前
Kestrel是推ter的开发团队用scala语言写的开源消息中间件。
其具备了以下特点:
快速:Kestrel运行在JVM上,用户可以视为java的项目来使用高级的优化手段。
小巧:Kestrel大约2500行scala代码
持久性:为了获取不错的性能表现,队列是存储在内存中。但是同时在硬盘上保留了日志,因此服务器 关闭可以保证不丢失数据。
可靠性:客户端可以尝试获取队列中的数据项,如果客户端在没有确认获取数据项之前断开链接,数据 项还可以被其他客户端获取,就是说客户端崩溃不会导致数据项的丢失。
除此之外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/