1 个不稳定版本
0.0.1 | 2022年9月7日 |
---|
#68 in #actors
30KB
605 代码行数,不包括注释
Motley - 架构模拟的图案
让我们创建一个演员模拟库,
- 通过实际编译的事实来验证模拟演员的稳定性
- 通过简单的测试套件验证演员交互的图案。
目标
- 模拟
- 云部署类型(服务、函数等)
- 云部署图案(HTTP、PubSub等)
- 数据库类型(SQL、NoSQL等)
- 数据库图案(CRUD等)
- 云服务提供商类型(AWS、GCP、Azure等)
- 生成
- 生成常见的规范格式(OpenAPI、AsyncAPI等)
- 生成常见的部署格式(Terraform、CloudFormation等)
- 生成一个模拟服务器,可以用来测试模拟演员之间的图案
- 测试
- cargo build 成功? -> 模拟是稳定的
- cargo test 成功? -> 图案是稳定的
- 测试模拟演员之间的请求流
- 符合人体工程学,专注于验证模拟演员之间的图案
- 可视化
- 可视化模拟演员
- 可视化模拟演员之间的依赖关系
- 可视化模拟演员之间的图案
挑战目标
- 生成
- 从真实系统中生成模拟
- 从一组图案中生成模拟
- 保存/加载
- “保存文件”将是一个可编译的 Rust 二进制文件,可用于测试图案
- crate 的根将处理为图案设置模拟的连接
- 每个演员将表示为一个单独的同级子模块
- 每个演员模块将包含封装其依赖演员的子模块
- 将模拟演员保存到文件中
- 从文件中加载模拟演员
- “保存文件”将是一个可编译的 Rust 二进制文件,可用于测试图案
非目标
todo!()
立即回头
作者的牢骚和一些想法和动机
以与 mdBook
相同的方式进行可视化
将实现作为特性与枚举实现一起使用?从 OpenAPI 规范生成?输出到 OpenAPI 规范?输出到带有示例的 OpenAPI 规范?输出到 ORM 工具?输出到 Rust 框架?输出到 Go 框架?将子实现输出到语言或规范是一个好主意,可以帮助启动复杂的系统
RPC 服务
- HTTP
- 请求资源(常见端点)
- 嵌套?
- 列表 - GET /resource
- 显示 - GET /resource/:id
- 创建 - POST /resource
- 更新 - PUT /resource/:id
- 删除 - DELETE /resource/:id
- 请求对象
- 头部(结构体)
- 路径参数(结构体)
- 查询参数(结构体)
- 正文(结构体)
- 响应对象
- 头部(结构体)
- 状态码(枚举)
- 正文(结构体)
- 请求资源(常见端点)
- gRPC
- 服务对象
- RPC 方法
- 请求对象
- 元数据(结构体)
- 消息(结构体)
- 响应对象
- 元数据(结构体)
- 消息(结构体)
- 请求对象
- 流方法
- 请求对象
- 元数据(结构体)
- 消息(结构体)
- 响应对象
- 元数据(结构体)
- 消息(结构体)
- 请求对象
- RPC 方法
- 服务对象
数据库服务
- 关系型
- 仓库模式
- 定义 CRUD 操作的特定高级函数
- ORM 模式(稍后)
- 仅提供通用的 CRUD 操作
- 可能由于ORM模式复杂,属于后期目标
- 原始SQL(LATER)
- SELECT, INSERT, UPDATE, DELETE
- 仓库模式
- NoSQL
- 键/值
- 文档
- 图
- 列式
- 时间序列
- 搜索
- 缓存层?
消息队列服务
- 基于拉取
- 拉取 - GET /queue/:queue_name
- 确认 - POST /queue/:queue_name
- 拒绝 - POST /queue/:queue_name
- 基于推送
- 推送 -> 确认/拒绝 - POST /queue/:queue_name
- 请求对象
- 元数据
- 正文
依赖
~130KB