跳到内容

github/法语

弗雷诺

生成状态 下载 释放

协作、高可用的节流器服务:客户端使用弗雷诺限制对资源的写入。

当前的实现可以根据这些集群的复制状态来限制对(多个)MySQL集群的写入。弗雷诺当复制延迟超过预定义阈值时,将限制协作客户端。

弗雷诺动态适应服务器库存的变化;用户可以进一步控制它,强制限制某些应用程序。

弗雷诺具有高可用性和用途共识协议,用于决定领导权并在成员节点之间传递用户事件。

合作的

弗雷诺从后端存储收集数据(此时仅限MySQL),并有逻辑来回答“我可以向后端存储写入数据吗?”

客户端(应用程序、脚本、作业)应咨询弗雷诺.弗雷诺不是客户端和后端存储之间的代理。它只是观察商店并声明“你很适合写作”或“你应该停止写作”。客户应咨询弗雷诺并尊重其建议。

商店和应用程序

弗雷诺按数据存储收集数据。例如,当探测MySQL集群时,它将独立收集每个集群的复制延迟。后端存储指标会自动收集并表示绝对事实。

弗雷诺为客户服务,标识为应用程序.自弗雷诺是合作的,它信任应用程序来识别自己。可以管理应用程序:弗雷诺可以指示强制限制某个应用程序。这是为了使其他高优先级应用程序能够运行到完成。弗雷诺只接受关于限制谁的指令,而没有自己的调度/优先级逻辑。

MySQL数据库

弗雷诺最初设计用于为MySQL节流提供一个统一的、自适应的解决方案:在保持低复制滞后的同时控制写入。

弗雷诺配置了预定义的MySQL群集列表。这可能包括凭证、滞后(或其他)检查查询和预期阈值。对于每个集群,弗雷诺需要知道要探测和收集数据的服务器。对于每个集群,您可以提供以下列表:

  • 的静态硬编码列表主机名[:端口]
  • 动态。主机可能会来来去去,节流可能会适应这些变化。支持的动态选项:
    • 通过杂乱无章的:提供弗雷诺用一个杂乱无章的URL和后端/池名称,以及弗雷诺将定期分析该池中已启用的服务器列表,并动态调整以进行探测。

阅读更多关于freno和MySQL节流

用例

法国对于批量操作很有用:大规模加载/归档任务、模式迁移、大规模更新。此类操作通常会遍历数千到数百万行,可能会导致不希望出现的影响,例如MySQL复制延迟。通过将这些任务分解为小个子任务(例如。100行),并通过咨询弗雷诺在应用每个这样的子任务之前,我们能够实现相同的结果,而不会对数据库和使用它的应用程序产生不良影响。

弗雷诺还可以用于确定实际延迟,以推断副本的有效性。这有助于减轻主阅读的先写后读的痛苦。请参见在这里.

超文本传输协议

弗雷诺通过服务请求超文本传输协议。最重要的要求是检查request:“这个应用可以写入这个商店吗?”。弗雷诺赞赏头部请求(GET(获取)也被接受,具有更多的开销),并以状态代码进行响应:

  • 200(确定):应用程序可以写入数据存储
  • 404(找不到):未知度量名称。
  • 417(预期失败):明确禁止请求应用程序写入。
  • 429(请求太多):不要写入。正常状态表示存储状态不符合预期阈值。
  • 500(内部服务器错误):内部错误。不要写。

阅读更多HTTP请求和响应

客户

客户通常会发出/检查/。。。请求通过头部.

可以期望客户端每秒发出许多请求。弗雷诺在资源上是轻量级的。它应该可以被击中弗雷诺每秒数百次。当然,这取决于您的硬件和资源。

打是有道理的弗雷诺在人们所关注的粒度的位置。如果你的客户要在1000毫秒复制延迟,检查弗雷诺 200每秒次可能有些过头了。但是,如果你想让你的客户端保持天真,并且不缓存,这应该没问题。

阅读更多客户

弗雷诺使用以提供高可用性。弗雷诺节点将竞争领导只有领导者才会收集指标并为客户服务。

阅读更多高可用性

配置

请参见示例配置文件。还可以找到:

部署

请参见部署文档关于推荐的弗雷诺部署设置。

资源

您可能会发现各种资源用于设置弗雷诺在您的环境中。

法语客户端是我们的Ruby客户端弗雷诺,开源,可用作Ruby Gem。

名字里有什么?

“Freno”是西班牙语中“brake”的意思,如汽车制动器。基本上,我们只是想将其称为“throttler”或“throttered”,但这两个名称都被其他多个存储库使用,我们还寻找了其他名称。当我们在字典中查找单词“freno”时,我们发现了以下句子:

Echa el freno,magdaleno!

这让我们想起了80年代,就这样。

项目状态

该项目正在积极开发中。

贡献

此存储库是开放供款。另请参见行为准则

许可证

该项目发布于麻省理工学院许可证。请注意,它包括根据自己的许可证发布的第三方依赖项;这些可以在下面找到小贩.

作者

GitHub Engineering编写