开源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于未修改的路由内容,降低带宽使用并加快对用户的请求。

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

查看所有标签

猜你喜欢:

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

数据压缩导论(第4版)

数据压缩导论(第4版)

[美] Khalid Sayood / 贾洪峰 / 人民邮电出版社 / 2014-1 / 129.00

数据压缩已经成为信息革命的一门支撑技术,这场革命已经改变了我们的生活,而在此过程中,数据压缩也变得几乎无处不在。从MP3播放器到智能手机,再到数字电视和数字电影,数据压缩几乎成了所有信息技术的必备要素。 近年来,以大数据为标志的互联网技术高歌猛进。数据规模大、产生速度快、来源多样等特性,导致数据存储和处理都前所未有地复杂。《数据压缩导论(第4版)》作为迄今为止数据压缩领域最全面而深入的著作,......一起来看看 《数据压缩导论(第4版)》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

html转js在线工具
html转js在线工具

html转js在线工具