开源Bloom是一个REST API缓存中间件,充当负载均衡器和REST API工作者之间的反向代理。

栏目: 编程工具 · 发布时间: 5年前

内容简介:Bloom与您的API实现完全无关,并且只需对现有API代码进行最少的更改即可。Bloom使用redisBloom可以热插拔,位于您现有的Load Balancers(例如NGINX)和您的API worker(例如NodeJS)之间。最初构建它是为了减少工作负载,并在API流量高峰或DOS / DDoS攻击的情况下大幅降低CPU使用率。更简单的高速缓存方法一般是直能够在负载平衡器级缓存读取HTTP方法(GET,HEAD,OPTIONS)。虽然这个作为解决方案很简单,但它不适用于REST API。REST

Bloom与您的API实现完全无关,并且只需对现有API代码进行最少的更改即可。Bloom使用redis 配置作为缓存 来存储数据。使用Rust构建,专注于稳定性,性能和低资源使用。

Bloom可以热插拔,位于您现有的Load Balancers(例如NGINX)和您的API worker(例如NodeJS)之间。最初构建它是为了减少工作负载,并在API流量高峰或DOS / DDoS攻击的情况下大幅降低CPU使用率。

更简单的高速缓存方法一般是直能够在负载平衡器级缓存读取HTTP方法(GET,HEAD,OPTIONS)。虽然这个作为解决方案很简单,但它不适用于REST API。REST API本质上提供动态内容,严重依赖授权标头。此外,如果缓存中的内容由于某些数据库中的数据更新而变得陈旧,则需要在某些时候清除任何缓存。

NGINX Lua脚本也可以这样做得很好!好吧,我坚信我们的方案应该很简单,只是基于配置,没有脚本。由于负载平衡器是所有HTTP / WebSocket服务的入口点,因此避免了频繁部署和自定义代码,并将缓存复杂性移交给专用中间件组件。

它是如何工作的?

Bloom与每个API工作程序安装在同一服务器上。从Load Balancers可以看出,每个API worker都有一个Bloom实例。这样,您的负载平衡设置(例如,带有运行状况检查的Round-Robin)就不会中断。每个Bloom实例都可以设置为可以从负载平衡器指向的自己的LAN IP中看到,然后这些Bloom实例可以指向本地的API工作者侦听器。

特征:

  • 同一个Bloom服务器可以同时用于不同的API工作者
  • 存储在存储桶上的缓存,使用HTTP标头在REST API响应中指定Bloom-Response-Buckets。
  • 通过身份验证令牌聚集的缓存,使用标准AuthorizationHTTP头可以在用户之间没有缓存泄漏。
  • 缓存可以通过控制通道直接从REST API失效过期。
  • 可配置的每请求缓存策略
  • 可配置的每响应缓存策略
  • 服务304 Not Modified于未修改的路由内容,降低带宽使用并加快对用户的请求。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Data Structures and Algorithms in Java

Data Structures and Algorithms in Java

Michael T. Goodrich、Roberto Tamassia / Wiley / 2010-01-26 / USD 177.41

* This newest edition examines fundamental data structures by following a consistent object-oriented framework that builds intuition and analysis skills of data structures and algorithms * Presents ne......一起来看看 《Data Structures and Algorithms in Java》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试