本仓库包含数据集和代码,用于Cloudscape: A Study of Storage Services in Modern Cloud Architectures,该研究在FAST25会议上发表。
@inproceedings {cloudscape-fast25, author = {Sambhav Satija and Chenhao Ye and Ranjitha Kosgi and Aditya Jain and Romit Kankaria and Yiwei Chen and Andrea C. Arpaci-Dusseau and Remzi H. Arpaci-Dusseau and Kiran Srinivasan}, title = {Cloudscape: A Study of Storage Services in Modern Cloud Architectures}, booktitle = {23rd USENIX Conference on File and Storage Technologies (FAST 25)}, year = {2025}, address = {Santa Clara, CA}, url = {https://www.usenix.org/conference/fast25/presentation/satija}, publisher = {USENIX Association}, month = feb }
数据集: 数据集描述了396个云架构。每个云架构是一个位于 data/graphs/ 中的 GraphML 文件。这些架构中使用的服务记录在 data/services.csv 文件中。数据集模式部分描述了如何解释这些 GraphML 和 CSV 文件。
分析 Jupyter Notebook: 我们提供了一个 Jupyter notebook,用于复现论文中的分析。该 notebook 不一定生成论文中发布的图表,而是更注重展示查询的执行方式,并尽量减少展示代码的复杂性。我们的目标是向未来的研究人员展示如何遍历数据集。有关环境设置的说明,请参考分析部分。
基于 Web 的架构浏览器: 为了更方便地访问数据集,我们提供了一个托管在 cloudscape.cs.wisc.edu 的 Web 平台。本仓库还包含该平台的源代码。如果您希望修改它,请参考浏览器部分中的设置说明。
每个 GraphML 文件描述一个架构。架构被编码为一个 MultiDiGraph,即图包含有向边,并且可能在两个节点之间存在多条边。GraphML 文件有许多读取工具,我们使用 Python 的 networkx 包。
每个图具有以下属性:
| 属性名称 | 可选 | 描述 | 示例值 |
|---|---|---|---|
name | 描述该架构的 YouTube 视频的标题。 | Snap: Journey of a Snap on Snapchat Using AWS | |
link | 指向源 YouTube 视频的链接。 | https://www.youtube.com/watch?v=Cgv0kfp_6xQ | |
categories | 功能目标的逗号分隔列表。可能的目标包括:(data_ingestion, interactive, compute_intensive, control, other)。 | data_ingestion,compute_intesive | |
graph_usable | 编码的图是否可用于任何定量图分析?论文仅分析标记为 True 的架构。 | True | |
notes | 是 | 从视频中提炼的上下文,捕捉架构的需求以及服务的使用方式。 | 每天向 S3 传输 13TB 的峰值数据。使用 DynamoDB 存储元数据提高了吞吐量。 |
每个节点具有以下属性:
| 属性名称 | 可选 | 描述 | 示例值 |
|---|---|---|---|
service | AWS 服务的名称或其他服务的类别。使用于 services.csv。 | Lambda 或 UserMobile | |
name | 是 | (仅适用于 ThirdParty 节点)服务的名称。 | nginx 或 legacy API |
notes | 是 | 关于该服务使用方式的附加上下文。 | 每秒 6000 次调用,验证 20 万条记录 |
节点分为五种类型: AWS 节点、User 节点、Partner 节点、ThirdParty 节点、OnPremDC 节点。
AWS 节点表示 AWS 服务,User 节点表示终端用户,有时还包括设备(例如 Web 应用或 Alexa)。ThirdParty 节点表示不属于上述类别的节点,但通常在视频中提到,缺乏详细上下文(例如“内部公司 API”)。Partner 节点保留给通过 AWS Marketplace 提供软件的 AWS 合作伙伴公司(例如 SAP 或 Couchbase)。OnPremDC 节点表示公司的本地数据中心。实际上,ThirdParty 描述了仅用于解释单个架构的一次性服务,因此每个 ThirdParty 节点通过其 name 描述。
| 属性名称 | 可选 | 描述 | 示例值 |
|---|---|---|---|
flow_id | 表示该边所属的工作流的编号。具有相同 flow_id 的所有边属于同一工作流。 | 1 | |
seq | 对工作流中的边进行排序。当事件不是严格同步时,分支用撇号(')表示。分支内的事件可以有顺序。访问浏览器以查看示例。 | 3'.2 | |
type | data/meta。data 边表示数据的移动,meta 边表示请求触发或确认响应。 | data | |
notes | 是 | 关于这两个(连接的)节点如何通信的附加上下文。 | periodic |
视频通常描述一组交互,这些交互共同完成一个逻辑工作单元。我们将这些交互捕获为工作流。工作流使用 edge.flow_id 编码。具有相同 flow_id 的所有边及其对应的节点描述了该工作流的交互集。
data/services.csv 文件描述了数据集中使用的所有不同类型的节点。
| 字段 | 描述 |
|---|---|
name | AWS 服务的名称或节点类型。如节点部分中所述。 |
capability | AWS 服务将具有以下之一(storage、compute、networking、integration、control、other)。用户、合作伙伴、第三方和本地数据中心节点将包含相关值(User、Partner、ThirdParty、OnPremDC)。 |
is_aws | 对于 AWS 服务为 True,否则为 False。 |
schema | 仅适用于 AWS 存储服务。以下之一(fs、sql、nosql、specialized、object)。 |
aws_product_categories | 仅适用于 AWS 服务。逗号分隔的类别列表。 |
image_url | 仅用于浏览器目的。指向 static/icons 中的 SVG 文件。 |
要在本地运行 notebook,请克隆仓库并使用 pip install -r requirements-analysis.txt 安装依赖项。然后,您可以使用 jupyter-notebook 打开 notebook。开发环境为 Python 3.11。
要在本地运行浏览器,请克隆仓库并使用 pip install -r requirements-explorer.txt 安装依赖项。然后,您可以使用 streamlit run explorer_st.py 部署平台。开发环境为