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

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

查看所有标签

猜你喜欢:

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

因计算机而强大

因计算机而强大

[美]西摩 佩珀特 Seymour Papert / 梁栋 / 新星出版社 / 2019-1 / 38

本书有两个中心主题—— 孩子可以轻松自如地学习使用计算机; 学习使用计算机能够改变他们学习其他知识的方式。 (前苹果公司总裁 约翰·斯卡利) 最有可能带来文化变革的就是计算机的不断普及。 计算机不仅是一个工具,它对我们的心智有着根本和深远的影响。 计算机不仅帮助我们学习 ,还帮助我们学习怎样学习。 计算机是一种调解人与人之间关系的移情对象。 一个数学的头脑......一起来看看 《因计算机而强大》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具