mirror of
https://github.com/8butubb/8butubb.github.io.git
synced 2026-10-11 15:50:05 +08:00
1
This commit is contained in:
+55
-214
@@ -39,113 +39,72 @@ Gitea 采用微内核 + 插件扩展的轻量架构,核心组件如下:
|
|||||||
### 架构图(Mermaid)
|
### 架构图(Mermaid)
|
||||||
|
|
||||||
```mermaid
|
```mermaid
|
||||||
graph TB
|
graph TD
|
||||||
subgraph "客户端层"
|
%% 客户端层
|
||||||
A[Web浏览器]
|
Client_Web[Web浏览器]
|
||||||
B[Git客户端]
|
Client_Git[Git客户端]
|
||||||
C[API客户端]
|
Client_API[API客户端]
|
||||||
|
|
||||||
|
%% 负载层
|
||||||
|
Proxy[Nginx / 反向代理]
|
||||||
|
|
||||||
|
%% 核心服务层
|
||||||
|
subgraph Gitea核心服务
|
||||||
|
Web[Web服务 / Gin]
|
||||||
|
API[RESTful API]
|
||||||
|
Git[Git协议处理器]
|
||||||
|
Auth[认证授权 / Session / OAuth]
|
||||||
end
|
end
|
||||||
|
|
||||||
subgraph "负载均衡/反向代理"
|
%% 业务逻辑层
|
||||||
D[Nginx/Apache]
|
subgraph 业务逻辑层
|
||||||
|
Repo[仓库管理]
|
||||||
|
User[用户与组织]
|
||||||
|
ACL[权限控制 RBAC]
|
||||||
|
Hook[WebHook]
|
||||||
|
Mail[邮件服务]
|
||||||
end
|
end
|
||||||
|
|
||||||
subgraph "Gitea核心服务"
|
%% 存储层
|
||||||
E[Web服务<br/>Gin框架]
|
subgraph 数据存储层
|
||||||
F[API服务<br/>RESTful]
|
DB[(数据库<br/>SQLite/MySQL)]
|
||||||
G[Git服务<br/>SSH/HTTP]
|
FS[(Git仓库文件)]
|
||||||
H[认证授权<br/>Session/OAuth]
|
LFS[(LFS对象)]
|
||||||
|
Cache[(Redis缓存)]
|
||||||
end
|
end
|
||||||
|
|
||||||
subgraph "业务逻辑层"
|
%% 扩展
|
||||||
I[仓库管理]
|
Runner[[Gitea Runner<br/>CI/CD]]
|
||||||
J[用户管理]
|
Pack[[包管理<br/>npm/docker]]
|
||||||
K[组织管理]
|
|
||||||
L[权限控制<br/>RBAC]
|
|
||||||
M[WebHook]
|
|
||||||
N[邮件服务]
|
|
||||||
end
|
|
||||||
|
|
||||||
subgraph "数据存储层"
|
%% 关系连线
|
||||||
O[数据库<br/>SQLite/MySQL/PostgreSQL]
|
Client_Web --> Proxy
|
||||||
P[Git仓库<br/>文件系统]
|
Client_Git --> Proxy
|
||||||
Q[LFS对象存储]
|
Client_API --> Proxy
|
||||||
R[缓存<br/>Redis/Memcached]
|
|
||||||
end
|
|
||||||
|
|
||||||
subgraph "后台任务"
|
Proxy --> Web
|
||||||
S[定时任务<br/>Cron]
|
Proxy --> API
|
||||||
T[队列处理<br/>WebHook/邮件]
|
Proxy --> Git
|
||||||
U[索引构建]
|
|
||||||
V[镜像同步]
|
|
||||||
end
|
|
||||||
|
|
||||||
subgraph "可选扩展"
|
Web --> Auth
|
||||||
W[Gitea Runner<br/>CI/CD]
|
API --> Auth
|
||||||
X[包管理<br/>npm/docker/maven]
|
Git --> Auth
|
||||||
Y[代码搜索<br/>Bleve]
|
|
||||||
end
|
|
||||||
|
|
||||||
A --> D
|
Auth --> Repo
|
||||||
B --> D
|
Auth --> User
|
||||||
C --> D
|
Auth --> ACL
|
||||||
|
|
||||||
D --> E
|
|
||||||
D --> F
|
|
||||||
D --> G
|
|
||||||
|
|
||||||
E --> H
|
|
||||||
F --> H
|
|
||||||
G --> H
|
|
||||||
|
|
||||||
H --> I
|
|
||||||
H --> J
|
|
||||||
H --> K
|
|
||||||
H --> L
|
|
||||||
|
|
||||||
I --> O
|
|
||||||
I --> P
|
|
||||||
J --> O
|
|
||||||
K --> O
|
|
||||||
L --> O
|
|
||||||
|
|
||||||
I --> Q
|
|
||||||
M --> T
|
|
||||||
N --> T
|
|
||||||
|
|
||||||
S --> V
|
|
||||||
U --> R
|
|
||||||
T --> N
|
|
||||||
|
|
||||||
W --> P
|
|
||||||
X --> Q
|
|
||||||
Y --> R
|
|
||||||
|
|
||||||
style A fill:#e1f5fe
|
Repo --> DB
|
||||||
style B fill:#e1f5fe
|
Repo --> FS
|
||||||
style C fill:#e1f5fe
|
Repo --> LFS
|
||||||
style D fill:#fff3e0
|
User --> DB
|
||||||
style E fill:#f3e5f5
|
ACL --> DB
|
||||||
style F fill:#f3e5f5
|
|
||||||
style G fill:#f3e5f5
|
Repo --> Hook
|
||||||
style H fill:#f3e5f5
|
Hook --> Mail
|
||||||
style I fill:#e8f5e9
|
|
||||||
style J fill:#e8f5e9
|
Runner -.-> API
|
||||||
style K fill:#e8f5e9
|
Pack -.-> FS
|
||||||
style L fill:#e8f5e9
|
|
||||||
style M fill:#e8f5e9
|
|
||||||
style N fill:#e8f5e9
|
|
||||||
style O fill:#ffebee
|
|
||||||
style P fill:#ffebee
|
|
||||||
style Q fill:#ffebee
|
|
||||||
style R fill:#ffebee
|
|
||||||
style S fill:#fce4ec
|
|
||||||
style T fill:#fce4ec
|
|
||||||
style U fill:#fce4ec
|
|
||||||
style V fill:#fce4ec
|
|
||||||
style W fill:#e0f2f1
|
|
||||||
style X fill:#e0f2f1
|
|
||||||
style Y fill:#e0f2f1
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 架构说明
|
### 架构说明
|
||||||
@@ -162,124 +121,6 @@ graph TB
|
|||||||
|
|
||||||
这种架构设计使得 Gitea 具有轻量级、高可用和易扩展的特点。
|
这种架构设计使得 Gitea 具有轻量级、高可用和易扩展的特点。
|
||||||
|
|
||||||
```mermaid
|
|
||||||
graph TB
|
|
||||||
subgraph "客户端层"
|
|
||||||
A[Web浏览器]
|
|
||||||
B[Git客户端]
|
|
||||||
C[API客户端]
|
|
||||||
end
|
|
||||||
|
|
||||||
subgraph "负载均衡层"
|
|
||||||
D[Nginx/反向代理]
|
|
||||||
end
|
|
||||||
|
|
||||||
subgraph "Gitea核心服务"
|
|
||||||
E[Web服务<br/>Gin框架]
|
|
||||||
F[REST API]
|
|
||||||
G[Git协议处理器]
|
|
||||||
H[认证授权<br/>RBAC]
|
|
||||||
I[中间件<br/>CSRF/Session]
|
|
||||||
end
|
|
||||||
|
|
||||||
subgraph "业务逻辑层"
|
|
||||||
J[仓库管理]
|
|
||||||
K[用户/组织管理]
|
|
||||||
L[问题跟踪]
|
|
||||||
M[PR/MR流程]
|
|
||||||
N[WebHook系统]
|
|
||||||
O[通知系统]
|
|
||||||
end
|
|
||||||
|
|
||||||
subgraph "数据存储层"
|
|
||||||
P[Git仓库<br/>文件系统]
|
|
||||||
Q[SQLite/MySQL<br/>PostgreSQL]
|
|
||||||
R[LFS对象存储]
|
|
||||||
S[会话存储]
|
|
||||||
T[缓存Redis]
|
|
||||||
end
|
|
||||||
|
|
||||||
subgraph "后台服务"
|
|
||||||
U[定时任务<br/>镜像同步]
|
|
||||||
V[队列服务<br/>异步任务]
|
|
||||||
W[邮件服务]
|
|
||||||
X[索引构建]
|
|
||||||
end
|
|
||||||
|
|
||||||
subgraph "扩展组件"
|
|
||||||
Y[Gitea Runner<br/>CI/CD]
|
|
||||||
Z[包管理<br/>npm/maven]
|
|
||||||
AA[容器注册表]
|
|
||||||
end
|
|
||||||
|
|
||||||
A --> D
|
|
||||||
B --> D
|
|
||||||
C --> D
|
|
||||||
|
|
||||||
D --> E
|
|
||||||
D --> F
|
|
||||||
D --> G
|
|
||||||
|
|
||||||
E --> H
|
|
||||||
F --> H
|
|
||||||
G --> H
|
|
||||||
|
|
||||||
H --> I
|
|
||||||
I --> J
|
|
||||||
I --> K
|
|
||||||
I --> L
|
|
||||||
I --> M
|
|
||||||
I --> N
|
|
||||||
I --> O
|
|
||||||
|
|
||||||
J --> P
|
|
||||||
K --> Q
|
|
||||||
L --> Q
|
|
||||||
M --> P
|
|
||||||
N --> V
|
|
||||||
O --> W
|
|
||||||
|
|
||||||
V --> U
|
|
||||||
V --> X
|
|
||||||
V --> W
|
|
||||||
|
|
||||||
J --> Y
|
|
||||||
J --> Z
|
|
||||||
J --> AA
|
|
||||||
|
|
||||||
P --> R
|
|
||||||
Q --> S
|
|
||||||
Q --> T
|
|
||||||
|
|
||||||
style A fill:#e1f5fe
|
|
||||||
style B fill:#e1f5fe
|
|
||||||
style C fill:#e1f5fe
|
|
||||||
style D fill:#fff3e0
|
|
||||||
style E fill:#f3e5f5
|
|
||||||
style F fill:#f3e5f5
|
|
||||||
style G fill:#f3e5f5
|
|
||||||
style H fill:#f3e5f5
|
|
||||||
style I fill:#f3e5f5
|
|
||||||
style J fill:#e8f5e8
|
|
||||||
style K fill:#e8f5e8
|
|
||||||
style L fill:#e8f5e8
|
|
||||||
style M fill:#e8f5e8
|
|
||||||
style N fill:#e8f5e8
|
|
||||||
style O fill:#e8f5e8
|
|
||||||
style P fill:#fce4ec
|
|
||||||
style Q fill:#fce4ec
|
|
||||||
style R fill:#fce4ec
|
|
||||||
style S fill:#fce4ec
|
|
||||||
style T fill:#fce4ec
|
|
||||||
style U fill:#fff9c4
|
|
||||||
style V fill:#fff9c4
|
|
||||||
style W fill:#fff9c4
|
|
||||||
style X fill:#fff9c4
|
|
||||||
style Y fill:#e0f2f1
|
|
||||||
style Z fill:#e0f2f1
|
|
||||||
style AA fill:#e0f2f1
|
|
||||||
```
|
|
||||||
|
|
||||||
### 架构特点说明
|
### 架构特点说明
|
||||||
|
|
||||||
**1. 轻量级设计**
|
**1. 轻量级设计**
|
||||||
|
|||||||
@@ -36,6 +36,29 @@
|
|||||||
|
|
||||||
{{- partial "extend_footer.html" . }}
|
{{- partial "extend_footer.html" . }}
|
||||||
|
|
||||||
|
<script type="module">
|
||||||
|
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.esm.min.mjs';
|
||||||
|
|
||||||
|
document.addEventListener("DOMContentLoaded", function() {
|
||||||
|
mermaid.initialize({ startOnLoad: true, theme: 'default' });
|
||||||
|
document.querySelectorAll('.language-mermaid').forEach(function(block) {
|
||||||
|
const container = block.closest('.highlight') || block.parentNode;
|
||||||
|
|
||||||
|
const div = document.createElement('div');
|
||||||
|
div.className = 'mermaid';
|
||||||
|
// Some Markdown parsers will escape < > " & etc.
|
||||||
|
// So we unescape them before sending to Mermaid
|
||||||
|
const txt = document.createElement("textarea");
|
||||||
|
txt.innerHTML = block.innerHTML;
|
||||||
|
div.textContent = txt.value;
|
||||||
|
|
||||||
|
if (container) {
|
||||||
|
container.parentNode.replaceChild(div, container);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
let menu = document.getElementById('menu');
|
let menu = document.getElementById('menu');
|
||||||
if (menu) {
|
if (menu) {
|
||||||
@@ -152,3 +175,5 @@
|
|||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user