Kestrel是twitter的开发团队用scala语言写的开源消息中间件。
Kestrel is a simple, distributed message queue written on the JVM, based on Blaine Cook's "starling".
Each server handles a set of reliable, ordered message queues, with no cross communication, resulting in a cluster of k-ordered ("loosely ordered") queues. Kestrel is fast, small, and reliable.
Kestrel is:
1)fast
It runs on the JVM so it can take advantage of the hard work people have put into java performance.
2)small
Currently about 2500 lines of scala, because it relies on Netty (a rough equivalent of Danger's ziggurat or Ruby's EventMachine) -- and because Scala is extremely expressive.
3)durable
Queues are stored in memory for speed, but logged into a journal on disk so that servers can be shutdown or moved without losing any data.
4)reliable
A client can ask to "tentatively" fetch an item from a queue, and if that client disconnects from kestrel before confirming ownership of the item, the item is handed to another client. In this way, crashing clients don't cause lost messages.
具备了以下特点:
快速:Kestrel运行在JVM上,用户可以视为java的项目来使用高级的优化手段。
小巧:Kestrel大约2500行scala代码
持久性:为了获取不错的性能表现,队列是存储在内存中。但是同时在硬盘上保留了日志,因此服务器 关闭可以保证不丢失数据。
可靠性:客户端可以尝试获取队列中的数据项,如果客户端在没有确认获取数据项之前断开链接,数据 项还可以被其他客户端获取,就是说客户端崩溃不会导致数据项的丢失。
支持多请求协议:目前支持三种协议,
memcache协议(并没有完整的实现memcache协议,只支持部分操作协议),
text协议,
thrift协议
Kestrel is not:
strongly ordered
While each queue is strongly ordered on each machine, a cluster will appear "loosely ordered" because clients pick a machine at random for each operation. The end result should be "mostly fair".
transactional
This is not a database. Item ownership is transferred with acknowledgement, but kestrel does not support grouping multiple operations into an atomic unit.
相关推荐
1. **消息中间件**: 作为微服务架构中的消息传递组件,协调不同服务之间的通信。 2. **实时处理**: 在大数据分析场景中,Kestrel可以接收实时数据流,然后分发到处理系统。 3. **缓存**: 对于低访问频率但需要长期...
当服务之间需要进行异步通信或数据交换时,Kestrel可以作为消息传递的中间件,而XMemcached则用于临时存储从Kestrel获取的数据,以减少数据库的访问频率。例如,在电商网站中,用户添加商品到购物车的操作可以先通过...
3. `Startup.cs`:配置服务和中间件,包括Kestrel的配置。 4. `Controllers`目录:包含MVC控制器,处理HTTP请求。 5. `.json`配置文件:如`appsettings.json`,存储应用程序的配置信息,可能包含Kestrel的配置部分。...
4. **可扩展性**:Kestrel允许通过中间件系统进行扩展,开发者可以自定义请求处理逻辑,满足特定需求。 5. **与其他服务器集成**:Kestrel可以作为反向代理服务器,与其他Web服务器(如IIS、Nginx或Apache)一起...
5. **可扩展性**:Kestrel设计为模块化,可以通过中间件系统轻松扩展其功能。 6. **集成能力**:Kestrel可以与反向代理服务器如Nginx或IIS集成,实现负载均衡和静态文件服务等功能。 **三、KestrelHttpServer的...
oauth.apisample.netcore 概述 使用OAuth和Open Id ...Kestrel Web服务器用于使用OpenSSL自签名证书通过SSL托管API。 AWS Cognito用作云授权服务器 用于API OAuth处理 用于中缓存API声明 可以将API日志汇总到以支持
Kestrel通过监听端口接收请求,然后将这些请求传递给ASP.NET Core的中间件管道,管道中的每个组件都可以读取、修改或转发请求,最后由应用处理并返回响应。 在"hidden-ginkgo"这个项目中,我们可以推测它可能包含...
总的来说,ASP.NET Core通过Kestrel服务器和中间件机制提供了对WebSocket的强大支持。通过自定义中间件,开发者可以构建高度定制的WebSocket解决方案,满足各种实时通信的需求,同时保持代码的整洁和模块化。这正是...
StatusCodePagesMiddleware中间件的主要作用是在响应状态码处于400到599之间时,即当服务器遇到非成功状态(如404找不到资源,500服务器内部错误等)时,触发自定义的错误处理逻辑,呈现给用户一个错误页面。...
本文将深入探讨 ASP.NET Core 相较于传统 ASP.NET 的变化,特别是关于 Program.cs 文件、静态文件处理、配置管理和中间件的概念。 首先,让我们来看一下标题中提到的 `Program.cs` 文件。在 ASP.NET Core 中,`...
此外,SequoiaDB与其他数据处理工具如Kafka、Flume、Kestrel和Kettle的集成,进一步强化了其在数据流转、日志收集、消息中间件和ETL过程中的应用能力。 Kafka是一个高吞吐量的分布式消息系统,适用于实时数据流处理...
- **独立服务器解决方案**:OWIN 允许在非 IIS 的服务器环境下运行 .NET 应用,例如自托管的 Kestrel 服务器。 - **微服务架构**:在微服务架构中,每个服务可以拥有自己的身份验证和授权策略,而不依赖于中央认证...
它们形成一个请求/响应管道,每个中间件都可以读取、修改请求,然后传递给下一个中间件。Startup.cs的Configure方法用于设置中间件顺序。 7. **kestrel服务器** Kestrel是Asp.Net Core默认的HTTP服务器,它可以...
首先,确保您的Kestrel实例正在正确的端口上进行监听(根据Scaleway的无服务器运行时提供的${PORT}环境变量)。 其次,它基于提供的令牌和公钥对私有功能执行令牌验证/授权。 它还具有一些其他好处,例如,可以...
在ASP.NET Core中,静态文件处理是由Kestrel服务器完成的,它允许开发者直接控制静态文件的处理流程。 首先,我们关注"StaticFile三剑客",它们是`UseStaticFiles`、`UseDefaultFiles`和`UseDirectoryBrowser`这三...
首先,我们要了解ASP.NET Core的基石——Kestrel服务器。Kestrel是一个轻量级的HTTP服务器,它负责接收HTTP请求并将其转发给ASP.NET Core的请求处理管道。Kestrel支持多种平台,并且可以与其他服务器(如IIS或Nginx...
首先,ASP.NET Core 2.2的主要改进之一是对Kestrel Web服务器的增强。Kestrel在2.2版本中增加了对HTTP/2的支持,这是一个重要的性能提升,因为HTTP/2协议提供了多路复用,减少了网络延迟,提高了网页加载速度。此外...
RedHttpServer具有Websocket支持的低仪式跨平台HTTP服务器框架 一个基于ASP.NET Core(带有Kestrel)的.NET Standard Web应用程序框架,其设计灵感来自Express.js的简单性安装可以从 Install-Package RHttpServer :...
ASP.NET Core 2.1是基于.NET Core 2的一个版本,它引入了多项改进和新特性,如HTTP/2支持、Kestrel服务器优化、中间件的增强、新的模板以及对.NET Standard 2.0的支持。这个版本提高了开发效率,增强了性能,并提供...
在深入探讨之前,我们需要理解ASP.NET Core的一些基础概念,如依赖注入、中间件、Kestrel服务器、Blazor(如果8.0.0版本已支持)等。 1. **依赖注入 (Dependency Injection, DI)**:ASP.NET Core 内置了强大的DI...