Kestrel 是 Scala 的一个非常小的队列系统,基于 starling。 kestrel : 就是Web服务器。默认包括在 ASP.NET Core 项目模板中。
Kestrel是一个scala写的twitter开源的消息中间件,特点是高性能、小巧(2K行代码)、持久存储(记录日志到journal)并且可靠(支持可靠获取)。Kestrel的前身是Ruby写的Starling项目,后来twitter的开发人员尝试用scala重新实现。它的代码非常简洁并且优雅。
Kestrel的特点:快——它在 JVM 上运行,能够高效的利用 Java 平台的性能。小——目前大约有 2500 行的 Scala。
经久耐用——队列能够快速存储到内存中,但日志记录存储到磁盘上,以便服务器能够关闭或移动。而不丢失任何数据。可靠——客户端能够“暂时(tentatively)”从队列中提取项目,如果客户端确认与该项目失联,则该项目会被转交到另一个客户端。这样子即使是崩溃,也不会导致信息丢失。
默认情况下,ASP.NET Core 项目模板使用 Kestrel。 在 Program.cs 中,模板代码调用 CreateDefaultBuilder,后者在后台调用 UseKestrel。
Kestrel采用的协议是memcached的文本协议,但是并不完全支持所有memcached协议,也不是完全兼容现有协议。标准的协议它仅支持GET、SET、FLUSH_ALL、STATS。
项目地址: https://github.com/twitter-archive/kestrel