Skip to content

Commit

Permalink
doc: 备份文章;
Browse files Browse the repository at this point in the history
  • Loading branch information
01Petard committed Feb 20, 2025
1 parent 330ceea commit 4d459b3
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 29 deletions.
1 change: 1 addition & 0 deletions docs/.vitepress/config.mts
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ export default defineConfig({
{
text: '开发',
items: [
{text: '一对多的数据交互方案设计', link: '/开发/一对多的数据交互方案设计'},
{text: '最佳实践-参数校验', link: '/开发/最佳实践-参数校验'},
{text: '最佳实践-日志记录', link: '/开发/最佳实践-日志记录'},
{text: 'Nginx配置文件说明', link: '/开发/Nginx配置文件说明'},
Expand Down
27 changes: 14 additions & 13 deletions docs/开发/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,17 @@

## 目录

1. [最佳实践-参数校验](./最佳实践-参数校验.md)
2. [最佳实践-日志记录](./最佳实践-日志记录.md)
3. [Nginx配置文件说明](./Nginx配置文件说明.md)
4. [搭建K8S集群环境](./搭建K8S集群环境.md)
5. [抖音评论区设计](./抖音评论区设计.md)
6. [MYDB操作手册](./MYDB操作手册.md)
7. [批量导出zip压缩包和Excel表格](./批量导出zip压缩包和Excel表格.md)
8. [阿里云OSS和内容安全Java实现参考代码](./阿里云OSS和内容安全Java实现参考代码.md)
9. [SSO单点登录的实现原理](./SSO单点登录的实现原理.md)
10. [ThreadLocal原理和使用](./ThreadLocal原理和使用.md)
11. [对Java中多态的理解](./对Java中多态的理解.md)
12. [JDBC和JAVA类型对比](./JDBC和JAVA类型对比.md)
13. [C++的STL库常见函数](./C++的STL库常见函数.md)
1. [一对多的数据交互方案设计](./一对多的数据交互方案设计.md)
2. [最佳实践-参数校验](./最佳实践-参数校验.md)
3. [最佳实践-日志记录](./最佳实践-日志记录.md)
4. [Nginx配置文件说明](./Nginx配置文件说明.md)
5. [搭建K8S集群环境](./搭建K8S集群环境.md)
6. [抖音评论区设计](./抖音评论区设计.md)
7. [MYDB操作手册](./MYDB操作手册.md)
8. [批量导出zip压缩包和Excel表格](./批量导出zip压缩包和Excel表格.md)
9. [阿里云OSS和内容安全Java实现参考代码](./阿里云OSS和内容安全Java实现参考代码.md)
10. [SSO单点登录的实现原理](./SSO单点登录的实现原理.md)
11. [ThreadLocal原理和使用](./ThreadLocal原理和使用.md)
12. [对Java中多态的理解](./对Java中多态的理解.md)
13. [JDBC和JAVA类型对比](./JDBC和JAVA类型对比.md)
14. [C++的STL库常见函数](./C++的STL库常见函数.md)
16 changes: 0 additions & 16 deletions docs/开发/一对多的数据交互方案设计.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,7 @@
---

# 总部与分公司数据交互方案

设想有这样一个场景:总部通过统一接口访问多个分公司的数据,并且请求中包含多个查询参数。这虽然是一个分布式系统场景,涉及总部和多个分公司之间的数据交互,但解决方案依然可以通过单体项目的思维来实现。本文将详细描述如何通过 Nginx 反向代理实现统一接口调用,并展示具体的前端、Nginx 和后端实现方式,实现在局域网环境,动态获取不同数据接口源的信息。

---

## 1. 场景描述

- **背景**:总部和四个分公司各自部署一个服务器,使用同一套源码实现相同接口功能。
Expand All @@ -15,8 +11,6 @@
- Nginx 作为反向代理服务器进行请求转发。
- 后端实现具体业务逻辑,处理查询参数。

---

## 2. 实现方案

### 2.1 请求示例
Expand All @@ -30,8 +24,6 @@ http://10.0.0.93:8080/api/5B20/monitor/report/output?factoryCode=5B20&lineCode=5
- `{子公司编号}` 是动态部分,例如 `5B20`
- 查询参数包括 `factoryCode`, `lineCode`, `startDate`, `endDate`, `pageIndex`, 和 `pageSize`

---

### 2.2 Nginx 配置

#### 主要任务
Expand Down Expand Up @@ -81,8 +73,6 @@ http {
- **路径重写**:将原始路径 `/api/{子公司编号}/monitor/report/output` 转发为 `/api/monitor/report/output`
- **查询参数传递**`proxy_pass_request_headers on;``proxy_pass_request_body on;` 确保所有查询参数和请求头被正确转发。

---

### 2.3 后端接口设计

#### 接口定义
Expand Down Expand Up @@ -125,8 +115,6 @@ public class MonitorController {
- **参数校验**:确保接收到的参数合法。
- **业务逻辑**:根据参数计算产量明细并返回结果。

---

### 2.4 整体流程

1. **前端调用**
Expand All @@ -144,14 +132,10 @@ public class MonitorController {
4. **响应返回**
- 数据经 Nginx 返回给前端。

---

## 3. 扩展性建议

- **负载均衡**:如果某个子公司服务器压力较大,可以在 Nginx 中为该子公司配置多个上游服务器。
- **日志记录**:在 Nginx 和后端服务中记录请求日志,便于后续排查问题。
- **安全性**:在 Nginx 中添加身份验证机制(如 Token 验证),确保只有授权用户可以访问敏感数据。

---

通过以上设计,可以高效地完成总部与分公司的数据交互需求,同时支持复杂的查询参数传递。

0 comments on commit 4d459b3

Please sign in to comment.