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

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

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

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

查看所有标签

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

小圈子·大社交

小圈子·大社交

Paul Adams / 王志慧 / 人民邮电出版社 / 2013-1 / 29.00元

网络正在脱离以内容为核心构建的方式,转向以人为核心重新构建。这样深远的变革将影响我们制定商业策略、设计以及营销和广告的方式。 本书作者先后在谷歌和Facebook供职,对于社交网络有深入的研究和丰富的实战经验。他以学术界和工业界最新的调查研究为基础,阐述了人们如何通过社交圈子相互联系的规律,探讨了理念和品牌信息如何通过社交网络传播开来的过程。书中介绍了许多实际的例子,通过这些鲜活的实例,你将......一起来看看 《小圈子·大社交》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具