kestrel消息队列介绍

在学习storm的过程中,storm的官方文档中多次在实例中列举kestrel消息队列的例子。处于好奇和兴趣顺便了解了一下kestrel消息队列。

Kestreltwitter的开发团队用scala语言写的开源消息中间件。 官方网址:http://twitter.github.io/kestrel/  

其具备了以下特点:

  快速: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本身的配置,可提供给使用者更多的优化空间。


有关kestrel的性能:

kestrel安装包中自带了测试kestrel性能的脚本在安装路径下 /scripts/load/下

我个人测试结果如下:

测试机 内存32G  cpu:Intel(R) Xeon(R) CPU           E5645  @ 2.40GHz * 24 


数据大小1kb每条






并发插入线程数

连接数

插入数据

总数据量

时长

单位时间处理数

1

1

10000

10000

3s

3333/s

10

1

3000

30000

3s

10000/s

20

1

10000

200000

14s

14286/s

10

10

10000

100000

6s

16667/s

20

10

10000

200000

10s

20000/s

40

10

10000

400000

20s

20000/s

40

40

10000

400000

20s

20000/s

40

1

10000

400000

20s

20000/s

20

1

10000

200000

10s

20000/s

20

20

10000

200000

10s

20000/s

80

1

10000

800000

80s

10000/s

80

1

10000

800000

40s

20000/s

80

20

10000

800000

39s

20000/s


白色背景服务器启动参数Xmx=1GB红色背景为修改了Kestrel服务器配置Xmx=4GB测试结果。

目前测试的Kestrel的结果来看。单线程处理大概3MB/s。而在多线程的测试情况下达到2wQPS20MB/s。基本上和官方的测试结果相同。


由于对于Kestrel还在逐渐的熟悉没有进行过多的服务器调优。所以只能形成暂时的结论。


kestrel的安装运行:

下载kestrel的安装包 下载地址  http://twitter.github.io/kestrel/  官网上选择kestrel的安装包

解压之后路径假设 KESTREL_HOME

运行 KESTREL_HOME/scripts/devel.sh 可以按照开发的模式启动kestrel。

devel.sh内容其实很少如下:

#!/bin/bash
echo "Starting kestrel in development mode..."

# find jar no matter what the root dir name
SCRIPT_DIR=$(cd `dirname "$0"`; pwd)
ROOT_DIR=`dirname "$SCRIPT_DIR"`

java -server -Xmx1024m -Dstage=development -jar "$ROOT_DIR"/kestrel_2.9.2-2.4.1.jar

其中-Dstage=development 相当与将应用 KESTREL_HOME/config/development.scala 文件作为kestrel的配置文件。

因此修改-Dstage参数可以应用其他的配置。比如 -Dstage=production 就是应用 KESTREL_HOME/config/production.scala 配置文件

另外在实际生产环境中可以使用kestrel.sh脚本来管理kestrel进程。 

kestrel.sh 参数有 start stop 等






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wp500

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值