RESTBase
RESTBase是支撑Wikimedia REST API 的缓存/存储API代理。
它的配置基于Swagger规范,其主存储后端使用Cassandra。
它支撑起了维基媒体REST内容API(rest_v1
),该API被VisualEditor用来检索页面HTML以便编辑。
为了提高性能(工單T95229),每个维基上也有服务端点,例如在这个维基上。
RESTBase 目前已被弃用。 See RESTBase/deprecation for details. |
作为代理,RESTBase本身不执行任何重要的内容处理。 相反,它在需要时请求来自后端服务的内容转换,并且通常(取决于配置)将其存储回来供以后检索。 对于高容量静态端点,大多数请求将直接从存储中满足。
其存储后端暴露了一个类似于Amazon DynamoDB和Google DataStore的RESTful存储API。 其最主要的实现使用的是Apache Cassandra。 值得注意的功能包括自动维护二级索引和一些轻量级的交易支持。 已经开发了一个SQLite后端,是软件包中的默认后端。
RESTBase自动发出关于所有存储和后端请求的statsd指标。 这为微服务架构中的性能和错误检测提供了良好的基线水平。
使用场景
我们的第一个用例是通过减少HTML大小来加快VisualEditor的速度,并消除Varnish缓存漏掉的问题。 RESTBase将Parsoid元数据与页面的HTML分开存储,这使得后者的大小减少了约40%。 RESTBase只向VE提供这种HTML,这大大降低了网络传输和处理的延迟。 从长远来看,我们的目标是将HTML的大小降低到目前PHP解析器输出的大小,使其适合普通的页面浏览。 这有可能使切换到可视化编辑瞬间完成,并且不需要任何滚动。
如果解析时间对你的维基来说不是一个紧迫的问题(例如,它没有复杂的模板或大量嵌套),那么直接访问Parsoid可能比引入RESTBase的这个依赖更有意义。
我们非常感兴趣的另一个用例是为小编辑和极快的VisualEditor保存提供一个章节级的编辑API,甚至比wikitext还要快。
帮助文档
安裝
参见
HyperSwitch
|
- 浏览源代码
- 通过加入和观看RESTBase-架构项目,关注有关RESTBase的架构讨论。
- 在Phabricator报告问题,'RESTBase'项目
- RESTBase/Alternative architectural options considered
- RESTBase/Table storage backend options
- 原始RFC:Storage service (talk)与Content API (talk)