关于Kestrel

在Storm的相关例子中,看到很多于Kestrel相关的例子。但之前并未接触过这个软件,于是通过各种资料进行了了解。

Kestrel是由twitter的开发团队的一套开源消息队列。要想了解什么是Kestrel,还得从消息队列讲起。

消息中间件

消息队列是消息中间件的一种。
中间件的维基定义如下:向软件应用提供操作系统所不能提供的服务的软件。可以简化软件设计中的通信和输入输出,使软件开发者可以专注于应用自身的业务逻辑。
如果中间件的概念让你觉得模糊不清的话,那消息中间件可能会更易于理解一些。分布式消息中间件是硬件或者软件基础设施,它支持在分布式系统中收发消息,可以解决系统之间消息传递的问题。
依照我的理解,消息中间件的存在正如中间件的定义那样,是为了是不同的系统专注于自身的业务逻辑。它使得各个系统不需要考虑于其他系统的沟通,只需要考虑发送和接受消息即可。消息中间件有以下几个应用场景:

  1. 业务解耦:可以将不同业务之间的强耦合关系接触,比如快递物流信息和物流短信通知服务,两者不一定互相知道对方,快递物流信息系统只需能够发送消息,而物流短信通知服务只需能够接受消息,消息中间件就可以将他们很好的连接在一起。
  2. 削峰填谷:消息中间件可以起一个缓冲器的作用,在上游应用流量较高时堆积消息,在上游流量较低时就可以将堆积的消息进行处理,从而解决流量洪峰问题。
  3. 事件驱动:不同的系统之间可以通过消息传递的形式驱动业务,以流式的模型进行出业务处理。可以实现消息异步。

消息队列

消息队列是消息中间件的一种,可以实现高性能、高可用、可伸缩和最终一致性架构。是大型分布式系统之中不可缺少的中间件。
关于消息队列的相关应用场景,这篇文章讲的很不错,推荐大家阅读。

Kestrel

我们回到Kestrel,Kestrel是由twitter的开发团队的一套开源软件。是在JVM上运行的简单、分布式的消息队列。Kestrel快速、小巧且十分可靠。
Kestrel官方列出的feature如下:

  1. 支持缓存协议
  2. 支持thrift协议
  3. 支持队列的日志记录(持久的)
  4. 支持分列队列(一个发送端,多个接受端)
  5. 支持项的关闭
  6. 事务读取(transactional reads)

关于Kestrel的安装、配置,之后会专门再写一篇总结,在搜索过程中我差点把它与微软的Kestrel Web Server弄混,以后要注意区分。

PS:这里是Kestrel的“官网”Github页面

PPS:Kestrel已经很久未进行更新了,了解它只是为了更好地理解storm的一些样例,以及了解消息队列和消息中间件的一些概念。

发表评论

电子邮件地址不会被公开。 必填项已用*标注