From 4d459b3871799dde096182c12f6a5b9a4ced82df Mon Sep 17 00:00:00 2001 From: 01Petard <1520394133@qq.com> Date: Thu, 20 Feb 2025 19:14:42 +0800 Subject: [PATCH] =?UTF-8?q?doc:=20=E5=A4=87=E4=BB=BD=E6=96=87=E7=AB=A0?= =?UTF-8?q?=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/.vitepress/config.mts | 1 + "docs/\345\274\200\345\217\221/index.md" | 27 ++++++++++--------- ...71\346\241\210\350\256\276\350\256\241.md" | 16 ----------- 3 files changed, 15 insertions(+), 29 deletions(-) diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index 7af5632..922afd4 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -65,6 +65,7 @@ export default defineConfig({ { text: '开发', items: [ + {text: '一对多的数据交互方案设计', link: '/开发/一对多的数据交互方案设计'}, {text: '最佳实践-参数校验', link: '/开发/最佳实践-参数校验'}, {text: '最佳实践-日志记录', link: '/开发/最佳实践-日志记录'}, {text: 'Nginx配置文件说明', link: '/开发/Nginx配置文件说明'}, diff --git "a/docs/\345\274\200\345\217\221/index.md" "b/docs/\345\274\200\345\217\221/index.md" index 9d1c66c..409e6c7 100644 --- "a/docs/\345\274\200\345\217\221/index.md" +++ "b/docs/\345\274\200\345\217\221/index.md" @@ -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) \ No newline at end of file +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) \ No newline at end of file diff --git "a/docs/\345\274\200\345\217\221/\344\270\200\345\257\271\345\244\232\347\232\204\346\225\260\346\215\256\344\272\244\344\272\222\346\226\271\346\241\210\350\256\276\350\256\241.md" "b/docs/\345\274\200\345\217\221/\344\270\200\345\257\271\345\244\232\347\232\204\346\225\260\346\215\256\344\272\244\344\272\222\346\226\271\346\241\210\350\256\276\350\256\241.md" index 4979f1a..ccd96e3 100644 --- "a/docs/\345\274\200\345\217\221/\344\270\200\345\257\271\345\244\232\347\232\204\346\225\260\346\215\256\344\272\244\344\272\222\346\226\271\346\241\210\350\256\276\350\256\241.md" +++ "b/docs/\345\274\200\345\217\221/\344\270\200\345\257\271\345\244\232\347\232\204\346\225\260\346\215\256\344\272\244\344\272\222\346\226\271\346\241\210\350\256\276\350\256\241.md" @@ -1,11 +1,7 @@ ---- - # 总部与分公司数据交互方案 设想有这样一个场景:总部通过统一接口访问多个分公司的数据,并且请求中包含多个查询参数。这虽然是一个分布式系统场景,涉及总部和多个分公司之间的数据交互,但解决方案依然可以通过单体项目的思维来实现。本文将详细描述如何通过 Nginx 反向代理实现统一接口调用,并展示具体的前端、Nginx 和后端实现方式,实现在局域网环境,动态获取不同数据接口源的信息。 ---- - ## 1. 场景描述 - **背景**:总部和四个分公司各自部署一个服务器,使用同一套源码实现相同接口功能。 @@ -15,8 +11,6 @@ - Nginx 作为反向代理服务器进行请求转发。 - 后端实现具体业务逻辑,处理查询参数。 ---- - ## 2. 实现方案 ### 2.1 请求示例 @@ -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 配置 #### 主要任务 @@ -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 后端接口设计 #### 接口定义 @@ -125,8 +115,6 @@ public class MonitorController { - **参数校验**:确保接收到的参数合法。 - **业务逻辑**:根据参数计算产量明细并返回结果。 ---- - ### 2.4 整体流程 1. **前端调用**: @@ -144,14 +132,10 @@ public class MonitorController { 4. **响应返回**: - 数据经 Nginx 返回给前端。 ---- - ## 3. 扩展性建议 - **负载均衡**:如果某个子公司服务器压力较大,可以在 Nginx 中为该子公司配置多个上游服务器。 - **日志记录**:在 Nginx 和后端服务中记录请求日志,便于后续排查问题。 - **安全性**:在 Nginx 中添加身份验证机制(如 Token 验证),确保只有授权用户可以访问敏感数据。 ---- - 通过以上设计,可以高效地完成总部与分公司的数据交互需求,同时支持复杂的查询参数传递。 \ No newline at end of file