用户数据存储在两个相当大(>1 PB)的 OpenStack Swift 存储集群上。让它们成为Cluster A和Cluster B。
此外,还有几个PoP需要与该数据进行交互。这些 PoP 中的服务器实际上是无盘的,这意味着没有用户数据存储在它们上面,也没有下载到它们。PoP 可以分为一般的世界区域(例如北美、南非、中欧等)。
一些 PoP 与任何集群的 Swift 端点相距很远,从而引入了不受欢迎的延迟。为了在一定程度上缓解这种情况,我想在每个区域中设置一个缓存网关服务器,它将缓存 r/w 请求到最近的集群。
目前,任何 PoP 中的客户端都通过永久安装的swift 虚拟文件系统访问用户数据,这是一个 FUSE 模块,将 Swift 对象存储安装为块设备(或多或少)。然而,svfs 并不是那么稳定,在未来,客户端应该通过 NFS 访问缓存服务器。
这是所需架构的一个分支的图:
+------------------+ +------------------+ NFS +------------------+
| Cluster A | SVFS | Region 1 Cache +----------> R1 PoP a Client |
| +----------------> | | |
|Persistent Storage| |Ephemeral Storage+----+ |Generates R/W Load|
+-----------------++ +------------------+ | …
Run Code Online (Sandbox Code Playgroud)