Skip to content

Commit c1ffaaf

Browse files
committed
implement design docs
1 parent e90668e commit c1ffaaf

17 files changed

+243
-0
lines changed

zh_CN/docs/design/architecture.md

+2
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ WeDPR的系统架构如下:
3939

4040
- 网络层互联互通:跨机构计算节点网络层互联互通
4141

42+
*******
4243
## 1.2 管理层
4344

4445
### 1.2.1 用户权限体系
@@ -80,6 +81,7 @@ WeDPR中需要审批的流程包括:
8081

8182
基于Jupyter + 隐私计算toolkit `wedpr-ml-toolkit`构建的一个更加灵活的开发环境;数据和模型开发者可自定义隐私计算任务流程,在不更新WeDPR隐私计算平台的前提下,实现定制化的业务需求,提升了系统的可扩展性。
8283

84+
*******
8385
## 1.3 网关
8486

8587
### 1.3.1 API网关

zh_CN/docs/design/authorization.md

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# 6.审批流
2+
3+
标签: ``数据同步`` ``跨机构``
4+
5+
----
6+
7+
## 6.1 背景
8+
9+
隐私计算平台中,对于他方资源的使用需要有申请、授权、审批的流程。审批流模块全生命周期管理资源的授权流程。
10+
当前系统需要授权的资源主要是【数据集资源】和【服务资源】。
11+
12+
*******
13+
## 6.2 功能目标
14+
15+
- **通用的审批流模块**:可支持不同类型的审批流程;即:有新的资源授权需要接入审批流时,可通过管理员设置表单模板直接支持,不需要修改审批模块的代码;
16+
- **支持设置审批链**:默认是【资源属主】审批,审批链有前后依赖关系,前面的人审批后,后面的人才能看到审批单
17+
- 审批任务状态管理
18+
- 支持审批信息的查看,审批单的更新、废弃
19+
- 仅申请人、审批链对应的人、关注人可以查看审批单
20+
- 仅申请人可修改、废弃审批单
21+
22+
*******
23+
## 6.3 审批状态流转
24+
25+
审批流的状态流转如下:
26+
27+
![](../../images/design/auth_lifecycle.png)
28+
29+
30+

zh_CN/docs/design/gateway.md

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
# 3. 统一网关
2+
3+
标签: ``网关`` ``跨机构通信``
4+
5+
----
6+
7+
## 3.1 功能目标
8+
9+
所有隐私计算组件均通过统一的网关进行通信。 功能包括:
10+
- 支持基于服务的路由策略: 如消息可从机构A的调度服务路由到机构B的调度服务
11+
- 支持基于NodeID的路由策略: 用于支持计算节点路由
12+
- 兼容基于taskID的路由策略
13+
Note: 基于NodeID、组件类型进行消息路由,是因为NodeID是相对比较稳定的节点标识,更适合于做基于Rip协议的最短路径网络转发;若采用基于taskID的路由方式,路由表的变更比较频繁;
14+
- 支持双向通信协议,网关可扩展
15+
- 支持基于最短路径网络转发(支持星形网络拓扑)
16+
- 网关前置与网关之间采用GRPC通信协议
17+
18+
*******
19+
## 3.2 系统架构
20+
21+
网关支持基于最短路径的路由转发策略,拓扑示例如下:
22+
23+
![](../../images/design/gateway_router.png)
24+
25+
![](../../images/design/gateway_router2.png)
26+
27+
*******
28+
## 3.3 协议设计
29+
30+
*******
31+
### 3.3.1 网关前置<==>网关通信协议(GRPC)
32+
33+
![](../../images/design/gateway_front_msg.png)
34+
35+
- 这里topic是用于唯一标记通信管道的字符串,可以是任务ID,也可以是模块ID
36+
37+
*******
38+
### 3.3.2 网关<==> 网关通信协议(TLS/HTTPS)
39+
40+
![](../../images/design/gateway_msg.png)
41+
42+
*******
43+
## 3.4 接口
44+
45+
```eval_rst
46+
.. note::
47+
- Java SDK接口参考 `WeDPRTransport <https://github.com/WeBankBlockchain/WeDPR-Component/blob/main/cpp/wedpr-transport/sdk-wrapper/java/bindings/src/main/java/com/webank/wedpr/sdk/jni/transport/WeDPRTransport.java>`_
48+
- Python SDK接口参考 `transport_api.py <https://github.com/WeBankBlockchain/WeDPR-Component/blob/main/cpp/wedpr-transport/sdk-wrapper/python/bindings/wedpr_python_gateway_sdk/transport/api/transport_api.py>`_
49+
```
50+
51+
52+

zh_CN/docs/design/jupyter.md

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
# 7. 专家模式-Jupyter管理
2+
3+
标签: ``Jupyter`` ``专家模式``
4+
5+
----
6+
7+
## 7.1 背景
8+
9+
为了满足业务用户灵活建模的需求,需要为每个用户准备一个jupyter环境。为了满足这个目标,有很多个点需要考虑。(详细在功能目标中介绍)。
10+
11+
*******
12+
## 7.2 功能目标
13+
14+
- jupyter资源分配模式:一个用户一个jupyter(这里考虑了配比,默认配比是1个虚拟机最多可分配8个Jupyter用户)
15+
- jupyter之间权限隔离,包括:
16+
- 鉴权: 实现Jupyter鉴权插件, 适配WeDPR的鉴权体系
17+
- 部署 && 临时数据存储: 多租户,通过linux用户体系进行多用户权限隔离
18+
19+
- 业务分析人员可使用jupyter交互式的方式发起隐私计算任务: 提供了专家模式SDK [wedpr-ml-toolkit](../sdk/ml_sdk/index.md).
20+
21+
*******
22+
## 7.3 系统架构
23+
24+
![](../../images/design/jupyter.png)
25+
26+
```eval_rst
27+
.. note::
28+
- 后续可考虑通过JupyterEnterpriseGateway接入到远端大数据集群
29+
```
30+
31+
- `JupyterRouter`: 提供Jupyter多租户路由功能
32+
- `JupyterLab`: 提供交互式分析环境
33+
- `wedpr-ml-toolkit`: 访问隐私计算系统的SDK
34+
35+
*******
36+
## 7.4 模块设计
37+
38+
**前端接入**
39+
- **基础接入**:通过用户信息生成唯一链接去访问部署的jupyter服务中的前端页面,并将用户鉴权信息通过地址栏参数传递给jupyter服务
40+
- **jupyter功能拓展**:后续如果有jupyter内其他定制化功能需求,可开发jupyter notebook 页面 文档参考: https://blog.csdn.net/gameboxer/article/details/128484402
41+
42+
************
43+
**鉴权适配**
44+
- 添加Jupyter鉴权插件`wedpr-authorization`(已上传pypip),以适配WeDPR鉴权认证体系
45+
- 集成JupyterHub的LocalAuthenticator对接wedpr鉴权系统
46+
47+
*********
48+
**多租户Jupyter管理(JupyterRouter)**
49+
- 用户注册时,为其在docker内默认创建用户,并在其home目录启动JupyterLab服务,作为其交互式分析的基础环境
50+
- 站点端记录每个JupyterLab的访问入口以及用户到JupyterLab的映射
51+
- 用户打开专家模式时,从站点端Jupyter管理模块获取并访问Jupyter入口
52+
- Jupyter环境已默认安装了专家模式SDK `wedpr-ml-toolkit`

zh_CN/docs/design/scheduler.md

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# 4. 调度模块
2+
3+
标签: ``WeDPR`` ``调度服务``
4+
5+
----
6+
7+
WeDPR隐私计算服务涉及多种任务,需要调度服务负责任务管理、任务调度、任务编排、任务状态跟踪。
8+
9+
## 4.1 功能目标
10+
11+
- **节点管理**: 计算节点向统一网关注册服务信息;调度服务从统一网关拉取所有正常工作的节点信息
12+
- **任务管理**:创建、杀死任务,任务重试;任务之间可通过握手方式协调任务,从而支持多活
13+
- **任务调度**:根据建模节点负载、节点支持的任务类型,将任务负载均衡地调度到不同计算节点,计算节点横向可扩展
14+
- **任务编排**: 支持定义子任务之间的依赖关系,可断点重试
15+
- **任务状态跟踪**:跟踪任务运行状态,收集任务执行日志、执行进度
16+
17+
****
18+
19+
## 4.2 系统架构
20+
21+
![](../../images/design/scheduler.png)
22+
23+
调度器(位于站点端)功能包括:
24+
- 任务编排
25+
- 任务跨机构调度 && 任务管理
26+
- 任务编排
27+
- 任务执行结果查询
28+
29+
工作节点功能包括:
30+
- 执行任务(Shell/Jupyter/Python/PSI/PIR/MPC等)
31+
- 注册节点信息到网关
32+
- 提供状态检查接口
33+
- 提供日志上报接口

zh_CN/docs/design/sync.md

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# 2. 跨机构元信息同步
2+
3+
标签: ``数据同步`` ``跨机构`` ``区块链``
4+
5+
----
6+
7+
## 2.1 背景
8+
9+
隐私计算节点部署于各机构,机构之间数据隔离。但为了协调多个机构完成隐私计算任务,机构之间需引入资源同步服务来共享一些资源元数据信息。
10+
11+
*******
12+
## 2.2 功能目标
13+
14+
- 可灵活接入多种资源
15+
- 新接入机构可同步开放访问的所有历史资源元信息
16+
- 支持去中心化的资源同步方式(区块链)
17+
18+
*******
19+
## 2.3 整体架构
20+
21+
![](../../images/design/sync.png)
22+
23+
**全局定序**
24+
- 客户端或其他隐私隐私计算平台(互联互通场景)向站点端发起资源操作请求,如上传、更新、删除数据集等,校验请求,涉及到元数据Create, Remove, Update的操作均封装成ResourceTx,部署到区块链
25+
- 区块链为每个`ResourceTx`分配全局递增的状态index,并将`index, ResourceTx`写入到链上
26+
27+
**状态同步**
28+
- 站点端监听合约事件,并从链上同步最新状态的资源元信息,将其放入到资源池中
29+
30+
**提交ResourceTx**
31+
32+
- 站点端定期从ResourcePool中按序取出ResourceTx,并根据资源类型ResourceType dispatch到不同模块处理,并将处理的ResourceTx对应的index记录到DB中
33+
- ResoureTx执行完毕后,请求对应的站点端通过ResponseCallback,将资源执行结果推送给客户端
34+
35+
涉及到需要同步的资源元信息包括:
36+
37+
- 数据集 && 数据集授权信息
38+
- 审批流
39+
- 服务 && 服务授权信息
40+
41+

zh_CN/docs/design/user.md

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# 5. 用户管理
2+
3+
标签: ``WeDPR`` ``用户管理``
4+
5+
----
6+
7+
WeDRP2.0缺少部门维度的管理,不便于部门维度的权限控制。WeDRP3.0相比WeDRP2.0, 新增用户组管理模块,平台用户分三层:机构-》用户组-》用户,其中用户组对应一个部门。
8+
9+
## 5.1 系统角色
10+
11+
WeDPR隐私计算系统包括如下几类角色:
12+
13+
- **机构管理员**:管理用户组信息、用户信息,管理角色权限信息
14+
- **用户组管理员**:管理本用户组信息和用户
15+
- **用户**:管理数据集,发起隐私计算任务等
16+
17+
18+
## 5.2 系统功能
19+
20+
用户管理模块功能包括(操作指南可参考[这里](../manual/user_mgr.md)):
21+
22+
- 创建用户组:机构管理员admin直接创建用户组
23+
- 查询用户组:机构管理员查询用户组列表,用户组内用户。用户组管理员可以查看本用户组内的用户
24+
- 编辑用户组:机构管理员可以编辑所有用户组信息,包括用户组名称,用户组管理员。用户组管理员可以编辑本用户组信息。
25+
- 删除用户组:机构管理员删除用户组
26+
- 用户组用户新增和删除:机构管理员可以查询,新增,删除所有用户组内的用户? 用户组管理员只能查询,新增,删除本机构内的用户。
27+
- 用户角色权限:存储用户角色权限
98.5 KB
Loading
23.2 KB
Loading

zh_CN/images/design/gateway_msg.png

57.8 KB
Loading
27.3 KB
Loading
53.5 KB
Loading

zh_CN/images/design/jupyter.png

161 KB
Loading

zh_CN/images/design/scheduler.png

96.9 KB
Loading

zh_CN/images/design/sync.png

80.2 KB
Loading

zh_CN/images/design/wedpr_arch.png

35.6 KB
Loading

zh_CN/index.rst

+6
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,12 @@ WeDPR(星隐)是基于区块链、安全多方计算、联合建模等技术构
6767
:caption: 系统设计
6868

6969
docs/design/architecture.md
70+
docs/design/sync.md
71+
docs/design/gateway.md
72+
docs/design/scheduler.md
73+
docs/design/user.md
74+
docs/design/authorization.md
75+
docs/design/jupyter.md
7076

7177
========
7278

0 commit comments

Comments
 (0)