@umacloud/knowledge 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (418) hide show
  1. package/00-governance/governance-capabilities.md +557 -0
  2. package/00-governance/knowledge-map.md +39 -0
  3. package/00-governance/maintenance-policy.md +76 -0
  4. package/00-governance/review-checklist.md +81 -0
  5. package/README.md +13 -0
  6. package/ai/01-standards/agent-development-complete.md +691 -0
  7. package/ai/01-standards/llm-application-complete.md +488 -0
  8. package/ai/01-standards/mlops-complete.md +798 -0
  9. package/ai/01-standards/prompt-engineering-complete.md +646 -0
  10. package/ai/01-standards/rag-architecture-complete.md +649 -0
  11. package/ai/02-playbooks/llm-evaluation-playbook.md +847 -0
  12. package/ai/03-checklists/ai-project-checklist.md +215 -0
  13. package/ai/04-antipatterns/ai-antipatterns.md +661 -0
  14. package/ai/05-cases/case-rag-production.md +147 -0
  15. package/ai/06-glossary/ai-glossary.md +162 -0
  16. package/ai/agent-evaluation-benchmark.md +53 -0
  17. package/ai/ai-agent-memory-context-management.md +41 -0
  18. package/ai/ai-cost-capacity-optimization-playbook.md +42 -0
  19. package/ai/ai-data-security-and-compliance-playbook.md +37 -0
  20. package/ai/ai-domain-index-and-checklist.md +40 -0
  21. package/ai/ai-governance-maturity-model.md +50 -0
  22. package/ai/ai-model-selection-and-routing-strategy.md +47 -0
  23. package/ai/ai-observability-and-oncall-runbook.md +52 -0
  24. package/ai/ai-rag-engineering-playbook.md +42 -0
  25. package/ai/ai-red-team-and-safety-evaluation.md +42 -0
  26. package/ai/ai-release-readiness-and-rollback-gate.md +42 -0
  27. package/ai/llm-agent-engineering-deep-dive.md +57 -0
  28. package/ai/prompt-and-tool-guardrails.md +52 -0
  29. package/api/01-standards/enterprise-api-standards.md +198 -0
  30. package/api/01-standards/rest-api-design-guide.md +63 -0
  31. package/api/02-playbooks/api-pagination-playbook.md +93 -0
  32. package/api/02-playbooks/graphql-production-playbook.md +176 -0
  33. package/api/03-checklists/api-review-checklist.md +55 -0
  34. package/api/04-antipatterns/api-antipatterns.md +112 -0
  35. package/architecture/01-standards/api-gateway-patterns.md +496 -0
  36. package/architecture/01-standards/cloud-native-patterns.md +644 -0
  37. package/architecture/01-standards/distributed-systems-patterns.md +591 -0
  38. package/architecture/01-standards/event-driven-architecture.md +595 -0
  39. package/architecture/01-standards/microservices-patterns-complete.md +968 -0
  40. package/architecture/01-standards/microservices-patterns.md +495 -0
  41. package/architecture/01-standards/system-design-interview.md +664 -0
  42. package/architecture/02-playbooks/microservices-patterns-playbook.md +137 -0
  43. package/architecture/02-playbooks/migration-playbook.md +780 -0
  44. package/architecture/02-playbooks/system-design-playbook.md +779 -0
  45. package/architecture/03-checklists/architecture-decision-checklist.md +297 -0
  46. package/architecture/04-antipatterns/architecture-antipatterns.md +417 -0
  47. package/architecture/05-cases/case-netflix-microservices.md +413 -0
  48. package/architecture/06-glossary/architecture-glossary.md +164 -0
  49. package/architecture/adr-template-and-examples.md +38 -0
  50. package/architecture/api-gateway-deep-dive.md +1291 -0
  51. package/architecture/configuration-management.md +1162 -0
  52. package/architecture/distributed-transactions.md +1220 -0
  53. package/architecture/microservices-complete.md +735 -0
  54. package/architecture/resilience-and-disaster-patterns.md +37 -0
  55. package/architecture/service-governance.md +1198 -0
  56. package/architecture/system-architecture-deep-dive.md +37 -0
  57. package/backend/01-standards/analytics-and-growth.md +65 -0
  58. package/backend/01-standards/api-and-error-conventions.md +120 -0
  59. package/backend/01-standards/application-layering-and-packaging.md +160 -0
  60. package/backend/01-standards/auth-implementation.md +104 -0
  61. package/backend/01-standards/backend-framework-idioms.md +74 -0
  62. package/backend/01-standards/background-jobs-and-async.md +66 -0
  63. package/backend/01-standards/caching-strategies-complete.md +390 -0
  64. package/backend/01-standards/config-and-observability.md +77 -0
  65. package/backend/01-standards/data-modeling-and-persistence.md +94 -0
  66. package/backend/01-standards/django-complete.md +1765 -0
  67. package/backend/01-standards/email-and-notifications.md +64 -0
  68. package/backend/01-standards/fastapi-complete.md +925 -0
  69. package/backend/01-standards/file-upload-and-storage.md +66 -0
  70. package/backend/01-standards/graphql-api-complete.md +416 -0
  71. package/backend/01-standards/llm-application-standard.md +78 -0
  72. package/backend/01-standards/message-queue-patterns.md +379 -0
  73. package/backend/01-standards/microservices-and-distributed.md +78 -0
  74. package/backend/01-standards/nestjs-complete.md +2167 -0
  75. package/backend/01-standards/payment-integration.md +80 -0
  76. package/backend/01-standards/rate-limiting-complete.md +451 -0
  77. package/backend/01-standards/realtime-and-websocket.md +65 -0
  78. package/backend/01-standards/search-and-filtering.md +64 -0
  79. package/backend/01-standards/spring-boot-complete.md +445 -0
  80. package/backend/02-playbooks/api-design-playbook.md +718 -0
  81. package/backend/02-playbooks/email-send-playbook.md +130 -0
  82. package/backend/02-playbooks/file-upload-s3-playbook.md +153 -0
  83. package/backend/02-playbooks/typescript-enterprise-playbook.md +133 -0
  84. package/backend/02-playbooks/websocket-realtime-playbook.md +154 -0
  85. package/backend/03-checklists/api-launch-checklist.md +189 -0
  86. package/backend/04-antipatterns/backend-antipatterns.md +1051 -0
  87. package/blockchain/01-standards/blockchain-basics.md +557 -0
  88. package/blockchain/01-standards/smart-contract-development.md +1315 -0
  89. package/cicd/01-standards/deployment-and-delivery-standard.md +96 -0
  90. package/cicd/01-standards/github-actions-complete.md +473 -0
  91. package/cicd/01-standards/release-and-store-submission.md +75 -0
  92. package/cicd/02-playbooks/cicd-pipeline-playbook.md +144 -0
  93. package/cicd/02-playbooks/release-management-playbook.md +605 -0
  94. package/cicd/03-checklists/pipeline-security-checklist.md +168 -0
  95. package/cicd/04-antipatterns/cicd-antipatterns.md +589 -0
  96. package/cicd/05-cases/case-deployment-automation.md +221 -0
  97. package/cicd/05-cases/case-gitops-transformation.md +212 -0
  98. package/cicd/06-glossary/cicd-glossary.md +114 -0
  99. package/cicd/cicd-blueprint-deep-dive.md +38 -0
  100. package/cicd/release-readiness-gate.md +37 -0
  101. package/cloud-native/01-standards/container-security.md +741 -0
  102. package/cloud-native/01-standards/kubernetes-complete.md +812 -0
  103. package/cloud-native/02-playbooks/api-gateway-playbook.md +155 -0
  104. package/cloud-native/02-playbooks/gitops-with-argocd.md +760 -0
  105. package/cloud-native/02-playbooks/k8s-troubleshooting-playbook.md +1942 -0
  106. package/cloud-native/02-playbooks/message-queue-playbook.md +129 -0
  107. package/cloud-native/02-playbooks/multicloud-governance.md +726 -0
  108. package/cloud-native/02-playbooks/serverless-patterns.md +788 -0
  109. package/cloud-native/02-playbooks/service-mesh-playbook.md +612 -0
  110. package/cloud-native/02-playbooks/terraform-iac-playbook.md +143 -0
  111. package/cloud-native/03-checklists/container-security-checklist.md +431 -0
  112. package/cloud-native/03-checklists/k8s-production-readiness-checklist.md +460 -0
  113. package/cloud-native/04-antipatterns/container-antipatterns.md +660 -0
  114. package/cloud-native/04-antipatterns/k8s-antipatterns.md +743 -0
  115. package/cloud-native/05-cases/case-k8s-migration.md +478 -0
  116. package/cloud-native/05-cases/case-k8s-scaling.md +642 -0
  117. package/cloud-native/05-cases/case-k8s-security-incident.md +397 -0
  118. package/cloud-native/06-glossary/cloud-native-glossary.md +337 -0
  119. package/cross-platform/01-standards/cross-platform-frameworks.md +83 -0
  120. package/cross-platform/01-standards/platform-selection-and-architecture.md +77 -0
  121. package/data/01-standards/elasticsearch-complete.md +2098 -0
  122. package/data/01-standards/postgresql-complete.md +1613 -0
  123. package/data/01-standards/redis-complete.md +1527 -0
  124. package/data/02-playbooks/database-optimization-playbook.md +403 -0
  125. package/data/02-playbooks/elasticsearch-production-playbook.md +132 -0
  126. package/data/03-checklists/database-launch-checklist.md +187 -0
  127. package/data/04-antipatterns/database-antipatterns.md +873 -0
  128. package/data/05-cases/case-database-migration.md +310 -0
  129. package/data/06-glossary/database-glossary.md +440 -0
  130. package/data/data-governance-and-modeling-deep-dive.md +39 -0
  131. package/data-engineering/01-standards/airflow-complete.md +523 -0
  132. package/data-engineering/01-standards/kafka-complete.md +1521 -0
  133. package/data-engineering/02-playbooks/spark-etl-playbook.md +496 -0
  134. package/data-engineering/03-checklists/pipeline-launch-checklist.md +194 -0
  135. package/data-engineering/04-antipatterns/data-pipeline-antipatterns.md +684 -0
  136. package/data-engineering/05-cases/case-real-time-pipeline.md +355 -0
  137. package/data-engineering/06-glossary/data-engineering-glossary.md +429 -0
  138. package/database/01-standards/database-schema-standards.md +147 -0
  139. package/database/02-playbooks/postgresql-optimization-quick.md +52 -0
  140. package/database/02-playbooks/postgresql-performance-optimization.md +58 -0
  141. package/database/02-playbooks/postgresql-production-playbook.md +146 -0
  142. package/database/02-playbooks/redis-caching-playbook.md +117 -0
  143. package/database/03-checklists/database-review-checklist.md +50 -0
  144. package/database/04-antipatterns/database-antipatterns.md +112 -0
  145. package/design/01-standards/ui-design-system-complete.md +423 -0
  146. package/design/02-playbooks/design-handoff-playbook.md +254 -0
  147. package/design/02-playbooks/design-review-playbook.md +388 -0
  148. package/design/03-checklists/design-review-checklist.md +246 -0
  149. package/design/04-antipatterns/design-antipatterns.md +378 -0
  150. package/design/05-cases/case-design-system-adoption.md +328 -0
  151. package/design/06-glossary/design-glossary.md +329 -0
  152. package/design/ui-full-lifecycle-cross-platform-playbook.md +571 -0
  153. package/design/ux-system-deep-dive.md +38 -0
  154. package/design-systems/00-craft-rules.md +71 -0
  155. package/design-systems/aesthetic-families.md +43 -0
  156. package/design-systems/anti-ai-slop.md +162 -0
  157. package/design-systems/bold-geometric.md +120 -0
  158. package/design-systems/brutalist-bold.md +103 -0
  159. package/design-systems/editorial-clean.md +109 -0
  160. package/design-systems/glass-aurora.md +108 -0
  161. package/design-systems/modern-minimal.md +145 -0
  162. package/design-systems/premium-luxury.md +106 -0
  163. package/design-systems/product-type-design-map.md +48 -0
  164. package/design-systems/soft-warm.md +123 -0
  165. package/design-systems/tech-utility.md +113 -0
  166. package/desktop/01-standards/desktop-app-standard.md +72 -0
  167. package/desktop/01-standards/desktop-design.md +71 -0
  168. package/development/00-governance/document-template.md +41 -0
  169. package/development/01-standards/api-versioning-strategies.md +432 -0
  170. package/development/01-standards/authentication-patterns-complete.md +479 -0
  171. package/development/01-standards/css-architecture-complete.md +550 -0
  172. package/development/01-standards/database-migration-strategies.md +484 -0
  173. package/development/01-standards/elasticsearch-complete.md +347 -0
  174. package/development/01-standards/git-complete.md +371 -0
  175. package/development/01-standards/golang-complete.md +1565 -0
  176. package/development/01-standards/graphql-complete.md +298 -0
  177. package/development/01-standards/javascript-bundlers-complete.md +469 -0
  178. package/development/01-standards/javascript-typescript-complete.md +528 -0
  179. package/development/01-standards/jest-complete.md +275 -0
  180. package/development/01-standards/linux-complete.md +234 -0
  181. package/development/01-standards/logging-observability-complete.md +526 -0
  182. package/development/01-standards/microservices-communication.md +502 -0
  183. package/development/01-standards/mongodb-complete.md +406 -0
  184. package/development/01-standards/oauth2-complete.md +285 -0
  185. package/development/01-standards/performance-optimization-complete.md +289 -0
  186. package/development/01-standards/playwright-complete.md +247 -0
  187. package/development/01-standards/postgresql-complete.md +456 -0
  188. package/development/01-standards/pytest-complete.md +340 -0
  189. package/development/01-standards/python-async-programming.md +902 -0
  190. package/development/01-standards/python-complete.md +956 -0
  191. package/development/01-standards/python-decorators-complete.md +799 -0
  192. package/development/01-standards/python-design-patterns.md +2854 -0
  193. package/development/01-standards/python-packaging-distribution.md +420 -0
  194. package/development/01-standards/python-testing-strategies.md +607 -0
  195. package/development/01-standards/python-web-frameworks-comparison.md +471 -0
  196. package/development/01-standards/redis-complete.md +317 -0
  197. package/development/01-standards/rest-api-complete.md +316 -0
  198. package/development/01-standards/rust-complete.md +578 -0
  199. package/development/01-standards/typescript-advanced-types.md +1513 -0
  200. package/development/01-standards/web-security-complete.md +292 -0
  201. package/development/02-playbooks/api-design-playbook.md +810 -0
  202. package/development/02-playbooks/database-migration-playbook.md +580 -0
  203. package/development/02-playbooks/debugging-playbook.md +692 -0
  204. package/development/02-playbooks/feature-delivery-playbook.md +430 -0
  205. package/development/02-playbooks/incident-hotfix-playbook.md +387 -0
  206. package/development/02-playbooks/performance-optimization-playbook.md +531 -0
  207. package/development/02-playbooks/performance-tuning-playbook.md +652 -0
  208. package/development/02-playbooks/refactor-playbook.md +403 -0
  209. package/development/02-playbooks/release-playbook.md +469 -0
  210. package/development/03-checklists/architecture-review-checklist.md +168 -0
  211. package/development/03-checklists/data-migration-checklist.md +157 -0
  212. package/development/03-checklists/oncall-handover-checklist.md +173 -0
  213. package/development/03-checklists/pr-checklist.md +158 -0
  214. package/development/03-checklists/production-readiness-checklist.md +190 -0
  215. package/development/03-checklists/release-readiness-checklist.md +154 -0
  216. package/development/03-checklists/security-review-checklist.md +182 -0
  217. package/development/04-antipatterns/api-antipatterns.md +657 -0
  218. package/development/04-antipatterns/architecture-antipatterns.md +686 -0
  219. package/development/04-antipatterns/backend-antipatterns.md +648 -0
  220. package/development/04-antipatterns/cicd-antipatterns.md +540 -0
  221. package/development/04-antipatterns/code-smell-antipatterns.md +571 -0
  222. package/development/04-antipatterns/data-antipatterns.md +658 -0
  223. package/development/04-antipatterns/database-antipatterns.md +578 -0
  224. package/development/04-antipatterns/frontend-antipatterns.md +635 -0
  225. package/development/04-antipatterns/reliability-antipatterns.md +700 -0
  226. package/development/04-antipatterns/security-antipatterns.md +747 -0
  227. package/development/05-cases/case-api-version-migration.md +428 -0
  228. package/development/05-cases/case-authorization-hardening.md +383 -0
  229. package/development/05-cases/case-bluegreen-rollback.md +466 -0
  230. package/development/05-cases/case-cache-snowball-protection.md +485 -0
  231. package/development/05-cases/case-ci-cd-pipeline.md +544 -0
  232. package/development/05-cases/case-database-scaling.md +500 -0
  233. package/development/05-cases/case-db-hotspot-optimization.md +487 -0
  234. package/development/05-cases/case-incident-mttr-reduction.md +563 -0
  235. package/development/05-cases/case-microservice-migration.md +375 -0
  236. package/development/05-cases/case-performance-optimization.md +406 -0
  237. package/development/05-cases/case-security-incident-response.md +345 -0
  238. package/development/06-glossary/full-stack-glossary.md +166 -0
  239. package/development/09-maturity/quarterly-audit-template.md +35 -0
  240. package/development/11-ui-excellence/ui-aesthetic-system.md +41 -0
  241. package/development/11-ui-excellence/ui-engineering-excellence.md +435 -0
  242. package/development/12-scenarios/development-scenarios-guide.md +565 -0
  243. package/development/13-implementation-assets/implementation-toolkit.md +282 -0
  244. package/development/13-implementation-assets/knowledge-gates-execution.md +43 -0
  245. package/development/14-full-lifecycle/software-lifecycle-gates.md +511 -0
  246. package/development/15-lifecycle-templates/project-templates-collection.md +791 -0
  247. package/development/api-contract-and-versioning-guide.md +36 -0
  248. package/development/api-governance-complete.md +43 -0
  249. package/development/backend-engineering-complete.md +43 -0
  250. package/development/code-review-quality-complete.md +43 -0
  251. package/development/concurrency-reliability-complete.md +43 -0
  252. package/development/database-engineering-complete.md +43 -0
  253. package/development/engineering-effectiveness-complete.md +43 -0
  254. package/development/engineering-standards-deep-dive.md +38 -0
  255. package/development/frontend-engineering-complete.md +43 -0
  256. package/development/performance-capacity-complete.md +43 -0
  257. package/development/refactor-migration-complete.md +42 -0
  258. package/development/refactoring-and-techdebt-playbook.md +37 -0
  259. package/development/security-in-development-complete.md +43 -0
  260. package/devops/01-standards/cicd-pipeline-complete.md +262 -0
  261. package/devops/01-standards/docker-complete.md +1490 -0
  262. package/devops/01-standards/github-actions-complete.md +337 -0
  263. package/devops/01-standards/kubernetes-complete.md +638 -0
  264. package/devops/01-standards/terraform-complete.md +2117 -0
  265. package/devops/02-playbooks/docker-compose-playbook.md +233 -0
  266. package/devops/02-playbooks/docker-k8s-production-playbook.md +186 -0
  267. package/devops/02-playbooks/docker-production-playbook.md +952 -0
  268. package/edge-iot/01-standards/edge-iot-complete.md +473 -0
  269. package/experts/architect/api-design.md +178 -0
  270. package/experts/architect/methodology.md +124 -0
  271. package/experts/architect/security.md +75 -0
  272. package/experts/backend-lead/methodology.md +216 -0
  273. package/experts/devops/methodology.md +160 -0
  274. package/experts/frontend-lead/methodology.md +178 -0
  275. package/experts/product-manager/industry/ecommerce.md +43 -0
  276. package/experts/product-manager/industry/saas.md +40 -0
  277. package/experts/product-manager/methodology.md +97 -0
  278. package/experts/qa-lead/methodology.md +123 -0
  279. package/experts/qa-lead/test-strategy.md +128 -0
  280. package/experts/uiux-designer/methodology.md +125 -0
  281. package/frontend/01-standards/accessibility-complete.md +532 -0
  282. package/frontend/01-standards/accessibility-standard.md +74 -0
  283. package/frontend/01-standards/admin-dashboard-and-crud.md +72 -0
  284. package/frontend/01-standards/design-tokens-complete.md +444 -0
  285. package/frontend/01-standards/forms-and-validation.md +77 -0
  286. package/frontend/01-standards/frontend-architecture-and-layering.md +119 -0
  287. package/frontend/01-standards/i18n-and-localization.md +65 -0
  288. package/frontend/01-standards/nextjs-complete.md +451 -0
  289. package/frontend/01-standards/react-complete.md +713 -0
  290. package/frontend/01-standards/react-hooks-complete-guide.md +1100 -0
  291. package/frontend/01-standards/react-hooks-complete.md +1171 -0
  292. package/frontend/01-standards/seo-and-web-vitals.md +77 -0
  293. package/frontend/01-standards/state-management-complete.md +444 -0
  294. package/frontend/01-standards/vue-complete.md +499 -0
  295. package/frontend/01-standards/vue3-complete.md +2002 -0
  296. package/frontend/01-standards/web-framework-best-practices.md +64 -0
  297. package/frontend/01-standards/web-performance-complete.md +495 -0
  298. package/frontend/02-playbooks/accessibility-a11y-playbook.md +161 -0
  299. package/frontend/02-playbooks/frontend-performance-playbook.md +707 -0
  300. package/frontend/02-playbooks/i18n-internationalization-playbook.md +120 -0
  301. package/frontend/02-playbooks/performance-optimization-playbook.md +163 -0
  302. package/frontend/02-playbooks/react-nextjs-production-playbook.md +167 -0
  303. package/frontend/02-playbooks/react-state-management-playbook.md +173 -0
  304. package/frontend/03-checklists/component-quality-checklist.md +166 -0
  305. package/frontend/03-checklists/frontend-launch-checklist.md +299 -0
  306. package/frontend/04-antipatterns/frontend-antipatterns.md +886 -0
  307. package/frontend/05-cases/case-performance-optimization.md +274 -0
  308. package/harmony/01-standards/harmonyos-arkts-standard.md +75 -0
  309. package/harmony/01-standards/harmonyos-design.md +65 -0
  310. package/high-quality-engineering-playbook.md +54 -0
  311. package/incident/01-standards/incident-response-complete.md +303 -0
  312. package/incident/02-playbooks/chaos-engineering-playbook.md +883 -0
  313. package/incident/02-playbooks/postmortem-playbook.md +398 -0
  314. package/incident/03-checklists/incident-readiness-checklist.md +181 -0
  315. package/incident/04-antipatterns/incident-antipatterns.md +490 -0
  316. package/incident/05-cases/case-cascade-failure.md +176 -0
  317. package/incident/06-glossary/incident-glossary.md +114 -0
  318. package/incident/postmortem-and-response-deep-dive.md +39 -0
  319. package/industries/ecommerce/ecommerce-complete.md +631 -0
  320. package/industries/education/education-complete.md +555 -0
  321. package/industries/fintech/fintech-complete.md +501 -0
  322. package/industries/gaming/gaming-complete.md +587 -0
  323. package/industries/healthcare/healthcare-complete.md +452 -0
  324. package/low-code/01-standards/low-code-complete.md +944 -0
  325. package/miniprogram/01-standards/ai-common-mistakes.md +61 -0
  326. package/miniprogram/01-standards/miniprogram-custom-navbar-capsule.md +77 -0
  327. package/miniprogram/01-standards/miniprogram-design.md +61 -0
  328. package/miniprogram/01-standards/miniprogram-standard.md +81 -0
  329. package/mobile/01-standards/android-material-design.md +70 -0
  330. package/mobile/01-standards/flutter-complete.md +384 -0
  331. package/mobile/01-standards/ios-design-hig.md +78 -0
  332. package/mobile/01-standards/mobile-app-standard.md +85 -0
  333. package/mobile/01-standards/react-native-complete.md +352 -0
  334. package/mobile/02-playbooks/mobile-cross-platform-playbook.md +175 -0
  335. package/mobile/02-playbooks/mobile-performance.md +473 -0
  336. package/mobile/03-checklists/mobile-release-checklist.md +234 -0
  337. package/mobile/04-antipatterns/mobile-antipatterns.md +798 -0
  338. package/mobile/05-cases/case-app-performance.md +500 -0
  339. package/mobile/05-cases/case-app-startup-optimization.md +218 -0
  340. package/mobile/06-glossary/mobile-glossary.md +484 -0
  341. package/observability/01-standards/observability-standards.md +103 -0
  342. package/observability/02-playbooks/prometheus-grafana-playbook.md +135 -0
  343. package/observability/02-playbooks/structured-logging-playbook.md +73 -0
  344. package/observability/03-checklists/observability-checklist.md +54 -0
  345. package/observability/04-antipatterns/observability-antipatterns.md +106 -0
  346. package/operations/01-standards/prometheus-monitoring-complete.md +1578 -0
  347. package/operations/02-playbooks/capacity-planning-playbook.md +620 -0
  348. package/operations/03-checklists/production-launch-checklist.md +365 -0
  349. package/operations/04-antipatterns/operations-antipatterns.md +664 -0
  350. package/operations/05-cases/case-sre-practices.md +581 -0
  351. package/operations/06-glossary/operations-glossary.md +120 -0
  352. package/operations/aiops-anomaly-detection.md +758 -0
  353. package/operations/capacity-planning.md +1061 -0
  354. package/operations/chaos-engineering.md +659 -0
  355. package/operations/incident-command-system.md +38 -0
  356. package/operations/observability-complete.md +442 -0
  357. package/operations/slo-sli-playbook.md +517 -0
  358. package/operations/sre-operations-deep-dive.md +39 -0
  359. package/package.json +8 -0
  360. package/performance/01-standards/performance-and-scalability.md +80 -0
  361. package/performance/01-standards/performance-standards.md +156 -0
  362. package/performance/02-playbooks/query-optimization-playbook.md +103 -0
  363. package/performance/03-checklists/performance-checklist.md +56 -0
  364. package/performance/04-antipatterns/performance-antipatterns.md +146 -0
  365. package/product/01-standards/product-management-complete.md +285 -0
  366. package/product/02-playbooks/feature-launch-playbook.md +207 -0
  367. package/product/02-playbooks/user-research-playbook.md +532 -0
  368. package/product/03-checklists/feature-launch-checklist.md +275 -0
  369. package/product/04-antipatterns/product-antipatterns.md +355 -0
  370. package/product/05-cases/case-mvp-to-scale.md +384 -0
  371. package/product/06-glossary/product-glossary.md +462 -0
  372. package/product/feature-prioritization-framework.md +40 -0
  373. package/product/kpi-and-metric-tree.md +37 -0
  374. package/product/product-discovery-and-prd-deep-dive.md +41 -0
  375. package/quantum/01-standards/quantum-complete.md +1186 -0
  376. package/security/01-standards/api-security-complete.md +511 -0
  377. package/security/01-standards/container-runtime-security.md +574 -0
  378. package/security/01-standards/data-protection-gdpr.md +543 -0
  379. package/security/01-standards/owasp-top10-complete.md +1890 -0
  380. package/security/01-standards/secure-coding-baseline.md +90 -0
  381. package/security/01-standards/supply-chain-security.md +441 -0
  382. package/security/01-standards/web-security-checklist.md +108 -0
  383. package/security/01-standards/zero-trust-architecture.md +521 -0
  384. package/security/02-playbooks/auth-sso-playbook.md +166 -0
  385. package/security/02-playbooks/incident-response-security-playbook.md +588 -0
  386. package/security/02-playbooks/owasp-api-security-playbook.md +129 -0
  387. package/security/02-playbooks/payment-integration-playbook.md +119 -0
  388. package/security/02-playbooks/penetration-testing-playbook.md +517 -0
  389. package/security/03-checklists/security-audit-checklist.md +356 -0
  390. package/security/04-antipatterns/security-coding-antipatterns.md +580 -0
  391. package/security/05-cases/case-log4shell-incident.md +537 -0
  392. package/security/05-cases/case-major-breaches.md +468 -0
  393. package/security/06-glossary/security-glossary.md +212 -0
  394. package/security/compliance-automation.md +993 -0
  395. package/security/container-security.md +680 -0
  396. package/security/devsecops-complete.md +426 -0
  397. package/security/sast-dast-sca.md +775 -0
  398. package/security/secrets-management.md +594 -0
  399. package/security/security-architecture-deep-dive.md +37 -0
  400. package/security/threat-modeling-stride-playbook.md +40 -0
  401. package/seed-templates/auth-system.md +59 -0
  402. package/seed-templates/blog-content.md +94 -0
  403. package/seed-templates/dashboard.md +89 -0
  404. package/seed-templates/docs-site.md +73 -0
  405. package/seed-templates/e-commerce.md +50 -0
  406. package/seed-templates/saas-landing.md +92 -0
  407. package/seed-templates/settings-page.md +51 -0
  408. package/testing/01-standards/test-strategy-and-layering.md +83 -0
  409. package/testing/01-standards/testing-strategy-complete.md +422 -0
  410. package/testing/01-standards/unit-testing-best-practices.md +118 -0
  411. package/testing/02-playbooks/e2e-testing-playbook.md +988 -0
  412. package/testing/02-playbooks/testing-strategy-playbook.md +126 -0
  413. package/testing/03-checklists/test-strategy-checklist.md +208 -0
  414. package/testing/04-antipatterns/testing-antipatterns.md +718 -0
  415. package/testing/05-cases/case-testing-transformation.md +300 -0
  416. package/testing/06-glossary/testing-glossary.md +110 -0
  417. package/testing/risk-based-test-matrix.md +36 -0
  418. package/testing/testing-strategy-deep-dive.md +37 -0
@@ -0,0 +1,1291 @@
1
+ ---
2
+ id: api-gateway-deep-dive
3
+ title: API网关深度指南
4
+ domain: architecture
5
+ category: api-gateway-deep-dive.md
6
+ difficulty: intermediate
7
+ tags: [api, architecture, deep, dive, gateway, 主流api网关对比, 安全防护, 性能优化]
8
+ quality_score: 70
9
+ last_updated: 2026-06-15
10
+ ---
11
+ # API网关深度指南
12
+
13
+ ## 概述
14
+
15
+ API网关是微服务架构中的关键基础设施,作为系统的统一入口,负责请求路由、协议转换、认证授权、限流熔断、日志监控等功能。它屏蔽了后端微服务的复杂性,为客户端提供统一、简化的API接口。
16
+
17
+ ## 核心功能
18
+
19
+ ### 1. 路由转发
20
+ - 请求路由与负载均衡
21
+ - 服务发现集成
22
+ - 动态路由配置
23
+
24
+ ### 2. 协议转换
25
+ - HTTP/HTTPS转换
26
+ - REST/GraphQL转换
27
+ - HTTP/gRPC转换
28
+
29
+ ### 3. 认证授权
30
+ - 统一认证入口
31
+ - Token验证
32
+ - 权限校验
33
+
34
+ ### 4. 流量控制
35
+ - 限流与熔断
36
+ - 请求重试
37
+ - 超时控制
38
+
39
+ ### 5. 安全防护
40
+ - 请求验证
41
+ - SQL注入防护
42
+ - XSS防护
43
+
44
+ ### 6. 可观测性
45
+ - 请求日志
46
+ - 性能监控
47
+ - 分布式追踪
48
+
49
+ ## 主流API网关对比
50
+
51
+ ### Kong
52
+
53
+ #### 架构
54
+ ```
55
+ Kong Server:
56
+ - OpenResty + Nginx
57
+ - Lua插件机制
58
+ - 高性能
59
+
60
+ 数据存储:
61
+ - PostgreSQL(推荐)
62
+ - Cassandra
63
+ - 无存储模式(声明式配置)
64
+ ```
65
+
66
+ #### 核心特性
67
+ ```
68
+ 优点:
69
+ - 高性能(基于Nginx)
70
+ - 插件丰富(100+)
71
+ - 云原生,支持Kubernetes
72
+ - 管理界面(Kong Enterprise)
73
+ - 活跃社区
74
+
75
+ 缺点:
76
+ - 学习曲线陡峭
77
+ - 企业版收费昂贵
78
+ - 配置复杂度高
79
+
80
+ 适用场景:
81
+ - 大规模微服务
82
+ - 需要丰富插件
83
+ - Kubernetes环境
84
+ ```
85
+
86
+ #### 部署示例
87
+ ```yaml
88
+ # docker-compose.yml
89
+ version: '3.8'
90
+ services:
91
+ kong-database:
92
+ image: postgres:13
93
+ environment:
94
+ POSTGRES_USER: kong
95
+ POSTGRES_DB: kong
96
+ POSTGRES_PASSWORD: kong
97
+ volumes:
98
+ - kong-data:/var/lib/postgresql/data
99
+
100
+ kong-migration:
101
+ image: kong:latest
102
+ command: kong migrations bootstrap
103
+ depends_on:
104
+ - kong-database
105
+ environment:
106
+ KONG_DATABASE: postgres
107
+ KONG_PG_HOST: kong-database
108
+ KONG_PG_PASSWORD: kong
109
+
110
+ kong:
111
+ image: kong:latest
112
+ depends_on:
113
+ - kong-migration
114
+ environment:
115
+ KONG_DATABASE: postgres
116
+ KONG_PG_HOST: kong-database
117
+ KONG_PG_PASSWORD: kong
118
+ KONG_PROXY_ACCESS_LOG: /dev/stdout
119
+ KONG_ADMIN_ACCESS_LOG: /dev/stdout
120
+ KONG_PROXY_ERROR_LOG: /dev/stderr
121
+ KONG_ADMIN_ERROR_LOG: /dev/stderr
122
+ KONG_ADMIN_LISTEN: '0.0.0.0:8001'
123
+ ports:
124
+ - "8000:8000" # HTTP代理
125
+ - "8443:8443" # HTTPS代理
126
+ - "8001:8001" # Admin API
127
+ - "8444:8444" # Admin HTTPS
128
+ ```
129
+
130
+ #### 配置示例
131
+ ```bash
132
+ # 添加服务
133
+ curl -i -X POST http://localhost:8001/services \
134
+ -d "name=order-service" \
135
+ -d "url=http://order-service:8080"
136
+
137
+ # 添加路由
138
+ curl -i -X POST http://localhost:8001/services/order-service/routes \
139
+ -d "paths[]=/orders"
140
+
141
+ # 添加插件(JWT认证)
142
+ curl -i -X POST http://localhost:8001/routes/order-route/plugins \
143
+ -d "name=jwt"
144
+
145
+ # 添加插件(限流)
146
+ curl -i -X POST http://localhost:8001/services/order-service/plugins \
147
+ -d "name=rate-limiting" \
148
+ -d "config.minute=100" \
149
+ -d "config.policy=local"
150
+
151
+ # 声明式配置(deck)
152
+ _format_version: "3.0"
153
+ services:
154
+ - name: order-service
155
+ url: http://order-service:8080
156
+ routes:
157
+ - name: order-route
158
+ paths:
159
+ - /orders
160
+ plugins:
161
+ - name: jwt
162
+ - name: rate-limiting
163
+ config:
164
+ minute: 100
165
+ policy: local
166
+ ```
167
+
168
+ ### Spring Cloud Gateway
169
+
170
+ #### 架构
171
+ ```
172
+ 基于Spring WebFlux:
173
+ - Reactor响应式编程
174
+ - Netty服务器
175
+ - 非阻塞IO
176
+
177
+ 组件:
178
+ - Route(路由)
179
+ - Predicate(断言)
180
+ - Filter(过滤器)
181
+ ```
182
+
183
+ #### 核心特性
184
+ ```
185
+ 优点:
186
+ - Spring生态集成
187
+ - 响应式高性能
188
+ - 灵活的配置方式
189
+ - Java开发友好
190
+
191
+ 缺点:
192
+ - 相对年轻,生态不如Kong
193
+ - 依赖Spring体系
194
+ - 管理界面缺失
195
+
196
+ 适用场景:
197
+ - Spring Cloud微服务
198
+ - Java技术栈
199
+ - 中小型系统
200
+ ```
201
+
202
+ #### 实现示例
203
+ ```java
204
+ // 依赖
205
+ dependencies {
206
+ implementation 'org.springframework.cloud:spring-cloud-starter-gateway'
207
+ implementation 'org.springframework.boot:spring-boot-starter-webflux'
208
+ }
209
+
210
+ // 配置类
211
+ @Configuration
212
+ public class GatewayConfig {
213
+ @Bean
214
+ public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
215
+ return builder.routes()
216
+ .route("order-service", r -> r
217
+ .path("/orders/**")
218
+ .filters(f -> f
219
+ .stripPrefix(1)
220
+ .addRequestHeader("X-Gateway", "Spring-Cloud-Gateway")
221
+ .addResponseHeader("X-Response-Time", System.currentTimeMillis())
222
+ .requestRateLimiter(c -> c
223
+ .setRateLimiter(redisRateLimiter())
224
+ )
225
+ .circuitBreaker(c -> c
226
+ .setName("orderCircuitBreaker")
227
+ .setFallbackUri("forward:/fallback/orders")
228
+ )
229
+ )
230
+ .uri("lb://order-service")
231
+ )
232
+ .route("inventory-service", r -> r
233
+ .path("/inventory/**")
234
+ .filters(f -> f
235
+ .stripPrefix(1)
236
+ .retry(3)
237
+ )
238
+ .uri("lb://inventory-service")
239
+ )
240
+ .build();
241
+ }
242
+
243
+ @Bean
244
+ public RedisRateLimiter redisRateLimiter() {
245
+ return new RedisRateLimiter(100, 200); // 100 replenishRate, 200 burstCapacity
246
+ }
247
+ }
248
+
249
+ // 全局过滤器
250
+ @Component
251
+ public class AuthenticationFilter implements GlobalFilter, Ordered {
252
+ @Override
253
+ public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
254
+ ServerHttpRequest request = exchange.getRequest();
255
+
256
+ // 跳过白名单路径
257
+ if (isWhitelisted(request.getPath().value())) {
258
+ return chain.filter(exchange);
259
+ }
260
+
261
+ // 验证Token
262
+ String token = request.getHeaders().getFirst("Authorization");
263
+ if (token == null || !validateToken(token)) {
264
+ exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);
265
+ return exchange.getResponse().setComplete();
266
+ }
267
+
268
+ // 添加用户信息到请求头
269
+ ServerHttpRequest mutatedRequest = request.mutate()
270
+ .header("X-User-Id", getUserIdFromToken(token))
271
+ .build();
272
+
273
+ return chain.filter(exchange.mutate().request(mutatedRequest).build());
274
+ }
275
+
276
+ @Override
277
+ public int getOrder() {
278
+ return -100; // 高优先级
279
+ }
280
+ }
281
+
282
+ // 限流KeyResolver
283
+ @Configuration
284
+ public class RateLimiterConfig {
285
+ @Bean
286
+ public KeyResolver ipKeyResolver() {
287
+ return exchange -> Mono.just(
288
+ exchange.getRequest().getRemoteAddress().getAddress().getHostAddress()
289
+ );
290
+ }
291
+
292
+ @Bean
293
+ public KeyResolver userKeyResolver() {
294
+ return exchange -> Mono.justOrEmpty(
295
+ exchange.getRequest().getHeaders().getFirst("X-User-Id")
296
+ );
297
+ }
298
+ }
299
+ ```
300
+
301
+ ```yaml
302
+ # application.yml配置方式
303
+ spring:
304
+ cloud:
305
+ gateway:
306
+ routes:
307
+ - id: order-service
308
+ uri: lb://order-service
309
+ predicates:
310
+ - Path=/orders/**
311
+ filters:
312
+ - StripPrefix=1
313
+ - name: RequestRateLimiter
314
+ args:
315
+ redis-rate-limiter.replenishRate: 100
316
+ redis-rate-limiter.burstCapacity: 200
317
+ key-resolver: "#{@ipKeyResolver}"
318
+ - name: CircuitBreaker
319
+ args:
320
+ name: orderCircuitBreaker
321
+ fallbackUri: forward:/fallback/orders
322
+ - AddRequestHeader=X-Gateway,Spring-Cloud-Gateway
323
+ - AddResponseHeader=X-Response-Time,${spring.cloud.gateway.response.timeout}
324
+
325
+ - id: inventory-service
326
+ uri: lb://inventory-service
327
+ predicates:
328
+ - Path=/inventory/**
329
+ - Method=GET,POST
330
+ filters:
331
+ - StripPrefix=1
332
+ - Retry=3
333
+
334
+ default-filters:
335
+ - AddRequestHeader=X-Request-Id,${spring.cloud.gateway.request.id}
336
+ globalcors:
337
+ cors-configurations:
338
+ '[/**]':
339
+ allowedOrigins: "*"
340
+ allowedMethods:
341
+ - GET
342
+ - POST
343
+ - PUT
344
+ - DELETE
345
+ allowedHeaders: "*"
346
+ allowCredentials: true
347
+
348
+ # 熔断配置
349
+ resilience4j:
350
+ circuitbreaker:
351
+ configs:
352
+ default:
353
+ failureRateThreshold: 50
354
+ waitDurationInOpenState: 10000
355
+ slidingWindowSize: 10
356
+ instances:
357
+ orderCircuitBreaker:
358
+ baseConfig: default
359
+ ```
360
+
361
+ ### APISIX
362
+
363
+ #### 架构
364
+ ```
365
+ Apache APISIX:
366
+ - 基于OpenResty + Nginx
367
+ - Lua实现
368
+ - 高性能
369
+
370
+ 组件:
371
+ - APISIX(网关)
372
+ - Dashboard(管理界面)
373
+ - Admin API(管理接口)
374
+ ```
375
+
376
+ #### 核心特性
377
+ ```
378
+ 优点:
379
+ - 高性能(单核23000 QPS)
380
+ - 动态路由,热加载
381
+ - 云原生,支持Kubernetes
382
+ - 插件热加载
383
+ - Dashboard完善
384
+ - 中文社区活跃
385
+
386
+ 缺点:
387
+ - 相对年轻(2019年开源)
388
+ - 企业版收费
389
+ - 部分插件不够成熟
390
+
391
+ 适用场景:
392
+ - 国内环境
393
+ - 云原生架构
394
+ - 需要Dashboard
395
+ ```
396
+
397
+ #### 配置示例
398
+ ```yaml
399
+ # docker-compose.yml
400
+ version: '3.8'
401
+ services:
402
+ apisix:
403
+ image: apache/apisix:latest
404
+ volumes:
405
+ - ./apisix/config.yml:/usr/local/apisix/conf/config.yml:ro
406
+ - ./apisix/nginx.conf:/usr/local/apisix/nginx/conf/nginx.conf:ro
407
+ ports:
408
+ - "9080:9080" # HTTP
409
+ - "9443:9443" # HTTPS
410
+ - "9180:9180" # Admin API
411
+
412
+ apisix-dashboard:
413
+ image: apache/apisix-dashboard:latest
414
+ volumes:
415
+ - ./dashboard/conf.yml:/usr/local/apisix-dashboard/conf/conf.yml:ro
416
+ ports:
417
+ - "9000:9000"
418
+ ```
419
+
420
+ ```bash
421
+ # 通过Admin API配置
422
+ # 添加上游(Upstream)
423
+ curl http://127.0.0.1:9180/apisix/admin/upstreams/1 \
424
+ -H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -X PUT -d '
425
+ {
426
+ "type": "roundrobin",
427
+ "nodes": {
428
+ "order-service:8080": 1
429
+ }
430
+ }'
431
+
432
+ # 添加路由
433
+ curl http://127.0.0.1:9180/apisix/admin/routes/1 \
434
+ -H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -X PUT -d '
435
+ {
436
+ "uri": "/orders/*",
437
+ "upstream_id": 1,
438
+ "plugins": {
439
+ "limit-count": {
440
+ "count": 100,
441
+ "time_window": 60,
442
+ "rejected_code": 429,
443
+ "key": "remote_addr"
444
+ },
445
+ "jwt-auth": {},
446
+ "cors": {
447
+ "allow_origins": "*",
448
+ "allow_methods": "GET,POST,PUT,DELETE"
449
+ }
450
+ }
451
+ }'
452
+ ```
453
+
454
+ ### Nginx/OpenResty
455
+
456
+ #### 核心特性
457
+ ```
458
+ 优点:
459
+ - 极致性能
460
+ - 成熟稳定
461
+ - 广泛应用
462
+ - 配置灵活
463
+
464
+ 缺点:
465
+ - 配置复杂
466
+ - 缺乏管理界面
467
+ - 动态配置困难
468
+ - 需要重启/重载
469
+
470
+ 适用场景:
471
+ - 高性能场景
472
+ - 简单路由需求
473
+ - 已有Nginx基础设施
474
+ ```
475
+
476
+ #### 配置示例
477
+ ```nginx
478
+ # nginx.conf
479
+ upstream order_service {
480
+ least_conn;
481
+ server order-service-1:8080 weight=5 max_fails=3 fail_timeout=30s;
482
+ server order-service-2:8080 weight=3;
483
+ server order-service-3:8080 backup;
484
+ }
485
+
486
+ upstream inventory_service {
487
+ least_conn;
488
+ server inventory-service-1:8080;
489
+ server inventory-service-2:8080;
490
+ }
491
+
492
+ # 限流配置
493
+ limit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r/s;
494
+ limit_conn_zone $binary_remote_addr zone=conn_limit:10m;
495
+
496
+ server {
497
+ listen 80;
498
+ server_name api.example.com;
499
+
500
+ # 启用gzip
501
+ gzip on;
502
+ gzip_types application/json;
503
+
504
+ # 订单服务
505
+ location /orders/ {
506
+ # 限流
507
+ limit_req zone=api_limit burst=20 nodelay;
508
+ limit_conn conn_limit 10;
509
+
510
+ # 代理
511
+ proxy_pass http://order_service/;
512
+ proxy_set_header Host $host;
513
+ proxy_set_header X-Real-IP $remote_addr;
514
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
515
+
516
+ # 超时
517
+ proxy_connect_timeout 3s;
518
+ proxy_send_timeout 5s;
519
+ proxy_read_timeout 5s;
520
+
521
+ # 重试
522
+ proxy_next_upstream error timeout http_500 http_502 http_503;
523
+ proxy_next_upstream_tries 3;
524
+ }
525
+
526
+ # 库存服务
527
+ location /inventory/ {
528
+ proxy_pass http://inventory_service/;
529
+ }
530
+
531
+ # 健康检查(需要OpenResty或Tengine)
532
+ location /health {
533
+ access_log off;
534
+ return 200 "OK";
535
+ }
536
+ }
537
+ ```
538
+
539
+ ### Traefik
540
+
541
+ #### 核心特性
542
+ ```
543
+ 优点:
544
+ - 云原生,自动服务发现
545
+ - Let's Encrypt自动证书
546
+ - 动态配置
547
+ - Dashboard友好
548
+ - Kubernetes原生
549
+
550
+ 缺点:
551
+ - 性能不如Nginx/Kong
552
+ - 功能相对简单
553
+ - 社区规模较小
554
+
555
+ 适用场景:
556
+ - Kubernetes环境
557
+ - 容器化应用
558
+ - 自动化程度要求高
559
+ ```
560
+
561
+ #### 配置示例
562
+ ```yaml
563
+ # traefik.yml
564
+ entryPoints:
565
+ web:
566
+ address: ":80"
567
+ http:
568
+ redirections:
569
+ entryPoint:
570
+ to: websecure
571
+ scheme: https
572
+
573
+ websecure:
574
+ address: ":443"
575
+
576
+ providers:
577
+ docker:
578
+ endpoint: "unix:///var/run/docker.sock"
579
+ exposedByDefault: false
580
+
581
+ kubernetesIngress:
582
+ enabled: true
583
+
584
+ certificatesResolvers:
585
+ letsencrypt:
586
+ acme:
587
+ email: admin@example.com
588
+ storage: /letsencrypt/acme.json
589
+ httpChallenge:
590
+ entryPoint: web
591
+
592
+ api:
593
+ dashboard: true
594
+ insecure: true
595
+
596
+ metrics:
597
+ prometheus: true
598
+ ```
599
+
600
+ ```yaml
601
+ # Docker Compose
602
+ version: '3.8'
603
+ services:
604
+ traefik:
605
+ image: traefik:v2.10
606
+ command:
607
+ - "--configFile=/etc/traefik/traefik.yml"
608
+ ports:
609
+ - "80:80"
610
+ - "443:443"
611
+ - "8080:8080"
612
+ volumes:
613
+ - /var/run/docker.sock:/var/run/docker.sock
614
+ - ./traefik.yml:/etc/traefik/traefik.yml
615
+ - ./letsencrypt:/letsencrypt
616
+
617
+ order-service:
618
+ image: order-service:latest
619
+ labels:
620
+ - "traefik.enable=true"
621
+ - "traefik.http.routers.orders.rule=PathPrefix(`/orders`)"
622
+ - "traefik.http.routers.orders.entrypoints=websecure"
623
+ - "traefik.http.routers.orders.tls.certresolver=letsencrypt"
624
+ - "traefik.http.services.orders.loadbalancer.server.port=8080"
625
+ - "traefik.http.middlewares.orders-ratelimit.ratelimit.average=100"
626
+ - "traefik.http.routers.orders.middlewares=orders-ratelimit"
627
+ ```
628
+
629
+ ## 网关功能实现
630
+
631
+ ### 1. 认证授权
632
+
633
+ #### JWT认证
634
+ ```java
635
+ @Component
636
+ public class JwtAuthenticationFilter implements GlobalFilter, Ordered {
637
+ @Value("${jwt.secret}")
638
+ private String secret;
639
+
640
+ @Override
641
+ public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
642
+ ServerHttpRequest request = exchange.getRequest();
643
+ String path = request.getPath().value();
644
+
645
+ // 白名单
646
+ if (isWhitelisted(path)) {
647
+ return chain.filter(exchange);
648
+ }
649
+
650
+ // 提取Token
651
+ String authHeader = request.getHeaders().getFirst("Authorization");
652
+ if (authHeader == null || !authHeader.startsWith("Bearer ")) {
653
+ return unauthorized(exchange);
654
+ }
655
+
656
+ String token = authHeader.substring(7);
657
+
658
+ try {
659
+ // 验证Token
660
+ Claims claims = Jwts.parser()
661
+ .setSigningKey(secret)
662
+ .parseClaimsJws(token)
663
+ .getBody();
664
+
665
+ // 添加用户信息到请求头
666
+ ServerHttpRequest mutatedRequest = request.mutate()
667
+ .header("X-User-Id", claims.getSubject())
668
+ .header("X-User-Role", claims.get("role", String.class))
669
+ .build();
670
+
671
+ return chain.filter(exchange.mutate().request(mutatedRequest).build());
672
+
673
+ } catch (Exception e) {
674
+ return unauthorized(exchange);
675
+ }
676
+ }
677
+
678
+ private Mono<Void> unauthorized(ServerWebExchange exchange) {
679
+ exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);
680
+ exchange.getResponse().getHeaders().setContentType(MediaType.APPLICATION_JSON);
681
+
682
+ String body = "{\"error\":\"Unauthorized\",\"message\":\"Invalid token\"}";
683
+ DataBuffer buffer = exchange.getResponse().bufferFactory().wrap(body.getBytes());
684
+ return exchange.getResponse().writeWith(Mono.just(buffer));
685
+ }
686
+
687
+ private boolean isWhitelisted(String path) {
688
+ return path.startsWith("/auth/login") ||
689
+ path.startsWith("/auth/register") ||
690
+ path.startsWith("/actuator/health");
691
+ }
692
+
693
+ @Override
694
+ public int getOrder() {
695
+ return -100;
696
+ }
697
+ }
698
+ ```
699
+
700
+ #### OAuth2.0集成
701
+ ```java
702
+ @Configuration
703
+ @EnableWebFluxSecurity
704
+ public class SecurityConfig {
705
+ @Bean
706
+ public SecurityWebFilterChain securityWebFilterChain(ServerHttpSecurity http) {
707
+ http
708
+ .oauth2ResourceServer()
709
+ .jwt()
710
+ .jwtAuthenticationConverter(jwtAuthenticationConverter());
711
+
712
+ http
713
+ .authorizeExchange()
714
+ .pathMatchers("/auth/**").permitAll()
715
+ .pathMatchers("/orders/**").hasRole("USER")
716
+ .pathMatchers("/admin/**").hasRole("ADMIN")
717
+ .anyExchange().authenticated();
718
+
719
+ return http.build();
720
+ }
721
+
722
+ private Converter<Jwt, ? extends Mono<? extends AbstractAuthenticationToken>>
723
+ jwtAuthenticationConverter() {
724
+ JwtAuthenticationConverter converter = new JwtAuthenticationConverter();
725
+ converter.setJwtGrantedAuthoritiesConverter(new JwtGrantedAuthoritiesConverter());
726
+ return new ReactiveJwtAuthenticationConverterAdapter(converter);
727
+ }
728
+ }
729
+ ```
730
+
731
+ ### 2. 限流熔断
732
+
733
+ #### Redis限流
734
+ ```java
735
+ @Component
736
+ public class RedisRateLimiter {
737
+ @Autowired
738
+ private ReactiveRedisTemplate<String, String> redisTemplate;
739
+
740
+ private final String script =
741
+ "local key = KEYS[1] " +
742
+ "local limit = tonumber(ARGV[1]) " +
743
+ "local window = tonumber(ARGV[2]) " +
744
+ "local current = redis.call('INCR', key) " +
745
+ "if current == 1 then " +
746
+ " redis.call('EXPIRE', key, window) " +
747
+ "end " +
748
+ "return current <= limit";
749
+
750
+ public Mono<Boolean> allowRequest(String key, int limit, int window) {
751
+ return redisTemplate.execute(
752
+ RedisScript.of(script, Boolean.class),
753
+ Collections.singletonList(key),
754
+ String.valueOf(limit),
755
+ String.valueOf(window)
756
+ ).next();
757
+ }
758
+ }
759
+
760
+ @Component
761
+ public class RateLimitFilter implements GlobalFilter, Ordered {
762
+ @Autowired
763
+ private RedisRateLimiter rateLimiter;
764
+
765
+ @Override
766
+ public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
767
+ String clientId = exchange.getRequest().getHeaders().getFirst("X-Client-Id");
768
+ String key = "rate_limit:" + clientId;
769
+
770
+ return rateLimiter.allowRequest(key, 100, 60)
771
+ .flatMap(allowed -> {
772
+ if (allowed) {
773
+ return chain.filter(exchange);
774
+ } else {
775
+ exchange.getResponse().setStatusCode(HttpStatus.TOO_MANY_REQUESTS);
776
+ return exchange.getResponse().setComplete();
777
+ }
778
+ });
779
+ }
780
+
781
+ @Override
782
+ public int getOrder() {
783
+ return -50;
784
+ }
785
+ }
786
+ ```
787
+
788
+ #### 熔断降级
789
+ ```java
790
+ @RestController
791
+ public class FallbackController {
792
+ @RequestMapping("/fallback/orders")
793
+ public Mono<Map<String, Object>> orderFallback() {
794
+ return Mono.just(Map.of(
795
+ "success", false,
796
+ "message", "订单服务暂时不可用,请稍后重试",
797
+ "timestamp", System.currentTimeMillis()
798
+ ));
799
+ }
800
+
801
+ @RequestMapping("/fallback/inventory")
802
+ public Mono<Map<String, Object>> inventoryFallback() {
803
+ return Mono.just(Map.of(
804
+ "success", false,
805
+ "message", "库存服务暂时不可用",
806
+ "timestamp", System.currentTimeMillis()
807
+ ));
808
+ }
809
+ }
810
+ ```
811
+
812
+ ### 3. 请求日志
813
+
814
+ ```java
815
+ @Component
816
+ @Slf4j
817
+ public class RequestLoggingFilter implements GlobalFilter, Ordered {
818
+ @Override
819
+ public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
820
+ ServerHttpRequest request = exchange.getRequest();
821
+ long startTime = System.currentTimeMillis();
822
+
823
+ // 生成请求ID
824
+ String requestId = UUID.randomUUID().toString();
825
+ exchange.getAttributes().put("requestId", requestId);
826
+
827
+ log.info("[{}] {} {} - Start",
828
+ requestId,
829
+ request.getMethod(),
830
+ request.getPath()
831
+ );
832
+
833
+ return chain.filter(exchange).then(Mono.fromRunnable(() -> {
834
+ long duration = System.currentTimeMillis() - startTime;
835
+ ServerHttpResponse response = exchange.getResponse();
836
+
837
+ log.info("[{}] {} {} - {} - {}ms",
838
+ requestId,
839
+ request.getMethod(),
840
+ request.getPath(),
841
+ response.getStatusCode(),
842
+ duration
843
+ );
844
+ }));
845
+ }
846
+
847
+ @Override
848
+ public int getOrder() {
849
+ return -200; // 最高优先级
850
+ }
851
+ }
852
+ ```
853
+
854
+ ### 4. 请求响应转换
855
+
856
+ ```java
857
+ @Component
858
+ public class ResponseTransformFilter implements GlobalFilter, Ordered {
859
+ @Override
860
+ public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
861
+ ServerHttpResponse originalResponse = exchange.getResponse();
862
+ DataBufferFactory bufferFactory = originalResponse.bufferFactory();
863
+
864
+ ServerHttpResponseDecorator decoratedResponse = new ServerHttpResponseDecorator(originalResponse) {
865
+ @Override
866
+ public Mono<Void> writeWith(Publisher<? extends DataBuffer> body) {
867
+ if (body instanceof Flux) {
868
+ Flux<? extends DataBuffer> fluxBody = (Flux<? extends DataBuffer>) body;
869
+
870
+ return super.writeWith(fluxBody.buffer().map(dataBuffers -> {
871
+ // 合并buffer
872
+ DataBuffer join = bufferFactory.join(dataBuffers);
873
+ byte[] content = new byte[join.readableByteCount()];
874
+ join.read(content);
875
+
876
+ // 原始响应
877
+ String originalResponse = new String(content, StandardCharsets.UTF_8);
878
+
879
+ // 转换响应(包装为统一格式)
880
+ String transformedResponse = transformResponse(originalResponse, exchange);
881
+
882
+ return bufferFactory.wrap(transformedResponse.getBytes(StandardCharsets.UTF_8));
883
+ }));
884
+ }
885
+ return super.writeWith(body);
886
+ }
887
+ };
888
+
889
+ return chain.filter(exchange.mutate().response(decoratedResponse).build());
890
+ }
891
+
892
+ private String transformResponse(String originalResponse, ServerWebExchange exchange) {
893
+ try {
894
+ ObjectMapper mapper = new ObjectMapper();
895
+ Object data = mapper.readValue(originalResponse, Object.class);
896
+
897
+ Map<String, Object> wrapper = new HashMap<>();
898
+ wrapper.put("success", true);
899
+ wrapper.put("data", data);
900
+ wrapper.put("timestamp", System.currentTimeMillis());
901
+
902
+ return mapper.writeValueAsString(wrapper);
903
+ } catch (Exception e) {
904
+ return originalResponse;
905
+ }
906
+ }
907
+
908
+ @Override
909
+ public int getOrder() {
910
+ return -20;
911
+ }
912
+ }
913
+ ```
914
+
915
+ ### 5. 跨域处理
916
+
917
+ ```java
918
+ @Configuration
919
+ public class CorsConfig {
920
+ @Bean
921
+ public CorsWebFilter corsWebFilter() {
922
+ CorsConfiguration config = new CorsConfiguration();
923
+ config.setAllowCredentials(true);
924
+ config.addAllowedOriginPattern("*");
925
+ config.addAllowedMethod("*");
926
+ config.addAllowedHeader("*");
927
+ config.addExposedHeader("*");
928
+ config.setMaxAge(3600L);
929
+
930
+ UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
931
+ source.registerCorsConfiguration("/**", config);
932
+
933
+ return new CorsWebFilter(source);
934
+ }
935
+ }
936
+ ```
937
+
938
+ ## 性能优化
939
+
940
+ ### 1. 连接池优化
941
+ ```yaml
942
+ spring:
943
+ cloud:
944
+ gateway:
945
+ httpclient:
946
+ pool:
947
+ type: ELASTIC
948
+ max-idle-time: 15000
949
+ evict-in-background: 10000
950
+ connect-timeout: 3000
951
+ response-timeout: 5000
952
+ ```
953
+
954
+ ### 2. 缓存策略
955
+ ```java
956
+ @Component
957
+ public class CacheFilter implements GlobalFilter, Ordered {
958
+ @Autowired
959
+ private ReactiveRedisTemplate<String, String> redisTemplate;
960
+
961
+ @Override
962
+ public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
963
+ ServerHttpRequest request = exchange.getRequest();
964
+
965
+ // 只缓存GET请求
966
+ if (!HttpMethod.GET.equals(request.getMethod())) {
967
+ return chain.filter(exchange);
968
+ }
969
+
970
+ String cacheKey = generateCacheKey(request);
971
+
972
+ // 尝试从缓存读取
973
+ return redisTemplate.opsForValue().get(cacheKey)
974
+ .flatMap(cachedResponse -> {
975
+ // 缓存命中
976
+ ServerHttpResponse response = exchange.getResponse();
977
+ response.getHeaders().setContentType(MediaType.APPLICATION_JSON);
978
+ DataBuffer buffer = response.bufferFactory()
979
+ .wrap(cachedResponse.getBytes(StandardCharsets.UTF_8));
980
+ return response.writeWith(Mono.just(buffer));
981
+ })
982
+ .switchIfEmpty(
983
+ // 缓存未命中,执行请求
984
+ chain.filter(exchange).then(Mono.fromRunnable(() -> {
985
+ ServerHttpResponse response = exchange.getResponse();
986
+ // 缓存响应(根据业务设置TTL)
987
+ // ...
988
+ }))
989
+ );
990
+ }
991
+
992
+ private String generateCacheKey(ServerHttpRequest request) {
993
+ return "cache:" + request.getPath().value() + ":" +
994
+ DigestUtils.md5DigestAsHex(
995
+ request.getQueryParams().toString().getBytes()
996
+ );
997
+ }
998
+
999
+ @Override
1000
+ public int getOrder() {
1001
+ return -30;
1002
+ }
1003
+ }
1004
+ ```
1005
+
1006
+ ### 3. 压缩
1007
+ ```java
1008
+ @Component
1009
+ public class CompressionFilter implements GlobalFilter, Ordered {
1010
+ @Override
1011
+ public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
1012
+ ServerHttpRequest request = exchange.getRequest();
1013
+ String acceptEncoding = request.getHeaders().getFirst("Accept-Encoding");
1014
+
1015
+ if (acceptEncoding != null && acceptEncoding.contains("gzip")) {
1016
+ // 下游服务返回时压缩
1017
+ ServerHttpResponse response = exchange.getResponse();
1018
+ response.getHeaders().set("Content-Encoding", "gzip");
1019
+ }
1020
+
1021
+ return chain.filter(exchange);
1022
+ }
1023
+
1024
+ @Override
1025
+ public int getOrder() {
1026
+ return 0;
1027
+ }
1028
+ }
1029
+ ```
1030
+
1031
+ ## 高可用设计
1032
+
1033
+ ### 1. 网关集群
1034
+ ```
1035
+ 部署方案:
1036
+ - 多实例部署(至少3个节点)
1037
+ - 负载均衡(Nginx/SLB/ELB)
1038
+ - 无状态设计
1039
+ - 共享配置中心
1040
+
1041
+ 故障转移:
1042
+ - 健康检查
1043
+ - 自动摘除故障节点
1044
+ - 会话保持(Sticky Session)
1045
+ ```
1046
+
1047
+ ### 2. 配置中心集成
1048
+ ```java
1049
+ @Configuration
1050
+ public class DynamicRouteConfig {
1051
+ @Autowired
1052
+ private RouteDefinitionLocator routeDefinitionLocator;
1053
+
1054
+ @Bean
1055
+ public RouteDefinitionRepository routeDefinitionRepository() {
1056
+ // 从Nacos/Consul/Apollo加载路由配置
1057
+ return new NacosRouteDefinitionRepository();
1058
+ }
1059
+ }
1060
+
1061
+ public class NacosRouteDefinitionRepository implements RouteDefinitionRepository {
1062
+ @NacosValue(value = "${gateway.routes}", autoRefreshed = true)
1063
+ private String routesConfig;
1064
+
1065
+ @Override
1066
+ public Flux<RouteDefinition> getRouteDefinitions() {
1067
+ List<RouteDefinition> routeDefinitions = parseRoutes(routesConfig);
1068
+ return Flux.fromIterable(routeDefinitions);
1069
+ }
1070
+
1071
+ private List<RouteDefinition> parseRoutes(String config) {
1072
+ // 解析JSON/YAML配置
1073
+ // ...
1074
+ }
1075
+ }
1076
+ ```
1077
+
1078
+ ### 3. 降级策略
1079
+ ```java
1080
+ @Component
1081
+ public class GlobalFallbackHandler implements WebExceptionHandler {
1082
+ @Override
1083
+ public Mono<Void> handle(ServerWebExchange exchange, Throwable ex) {
1084
+ ServerHttpResponse response = exchange.getResponse();
1085
+
1086
+ if (ex instanceof NotFoundException) {
1087
+ response.setStatusCode(HttpStatus.NOT_FOUND);
1088
+ return writeResponse(response, "Service not found");
1089
+ }
1090
+
1091
+ if (ex instanceof ConnectException) {
1092
+ response.setStatusCode(HttpStatus.SERVICE_UNAVAILABLE);
1093
+ return writeResponse(response, "Service unavailable");
1094
+ }
1095
+
1096
+ if (ex instanceof TimeoutException) {
1097
+ response.setStatusCode(HttpStatus.GATEWAY_TIMEOUT);
1098
+ return writeResponse(response, "Request timeout");
1099
+ }
1100
+
1101
+ response.setStatusCode(HttpStatus.INTERNAL_SERVER_ERROR);
1102
+ return writeResponse(response, "Internal server error");
1103
+ }
1104
+
1105
+ private Mono<Void> writeResponse(ServerHttpResponse response, String message) {
1106
+ response.getHeaders().setContentType(MediaType.APPLICATION_JSON);
1107
+ String body = String.format("{\"error\":\"%s\",\"timestamp\":%d}",
1108
+ message, System.currentTimeMillis());
1109
+ DataBuffer buffer = response.bufferFactory().wrap(body.getBytes());
1110
+ return response.writeWith(Mono.just(buffer));
1111
+ }
1112
+ }
1113
+ ```
1114
+
1115
+ ## 安全防护
1116
+
1117
+ ### 1. SQL注入防护
1118
+ ```java
1119
+ @Component
1120
+ public class SqlInjectionFilter implements GlobalFilter, Ordered {
1121
+ private static final Pattern SQL_PATTERN = Pattern.compile(
1122
+ "(?i)(select|insert|update|delete|drop|union|exec|execute|xp_cmdshell)"
1123
+ );
1124
+
1125
+ @Override
1126
+ public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
1127
+ ServerHttpRequest request = exchange.getRequest();
1128
+
1129
+ // 检查查询参数
1130
+ if (containsSqlInjection(request.getQueryParams())) {
1131
+ return forbidden(exchange, "Invalid query parameters");
1132
+ }
1133
+
1134
+ // 检查路径参数
1135
+ if (containsSqlInjection(request.getPath().value())) {
1136
+ return forbidden(exchange, "Invalid path");
1137
+ }
1138
+
1139
+ return chain.filter(exchange);
1140
+ }
1141
+
1142
+ private boolean containsSqlInjection(MultiValueMap<String, String> params) {
1143
+ return params.values().stream()
1144
+ .flatMap(List::stream)
1145
+ .anyMatch(this::isSqlInjection);
1146
+ }
1147
+
1148
+ private boolean containsSqlInjection(String value) {
1149
+ return isSqlInjection(value);
1150
+ }
1151
+
1152
+ private boolean isSqlInjection(String value) {
1153
+ return SQL_PATTERN.matcher(value).find();
1154
+ }
1155
+
1156
+ private Mono<Void> forbidden(ServerWebExchange exchange, String message) {
1157
+ exchange.getResponse().setStatusCode(HttpStatus.FORBIDDEN);
1158
+ return exchange.getResponse().setComplete();
1159
+ }
1160
+
1161
+ @Override
1162
+ public int getOrder() {
1163
+ return -90;
1164
+ }
1165
+ }
1166
+ ```
1167
+
1168
+ ### 2. XSS防护
1169
+ ```java
1170
+ @Component
1171
+ public class XssFilter implements GlobalFilter, Ordered {
1172
+ @Override
1173
+ public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
1174
+ ServerHttpRequest request = exchange.getRequest();
1175
+
1176
+ ServerHttpRequest mutatedRequest = request.mutate()
1177
+ .headers(headers -> {
1178
+ // 安全头
1179
+ headers.set("X-XSS-Protection", "1; mode=block");
1180
+ headers.set("X-Content-Type-Options", "nosniff");
1181
+ headers.set("X-Frame-Options", "DENY");
1182
+ headers.set("Content-Security-Policy", "default-src 'self'");
1183
+ })
1184
+ .build();
1185
+
1186
+ return chain.filter(exchange.mutate().request(mutatedRequest).build());
1187
+ }
1188
+
1189
+ @Override
1190
+ public int getOrder() {
1191
+ return -80;
1192
+ }
1193
+ }
1194
+ ```
1195
+
1196
+ ## 监控指标
1197
+
1198
+ ### 1. Prometheus集成
1199
+ ```yaml
1200
+ management:
1201
+ endpoints:
1202
+ web:
1203
+ exposure:
1204
+ include: prometheus,health,info,gateway
1205
+ metrics:
1206
+ tags:
1207
+ application: ${spring.application.name}
1208
+ export:
1209
+ prometheus:
1210
+ enabled: true
1211
+ ```
1212
+
1213
+ ### 2. 自定义指标
1214
+ ```java
1215
+ @Component
1216
+ public class MetricsFilter implements GlobalFilter, Ordered {
1217
+ private final Counter requestCounter;
1218
+ private final Timer requestTimer;
1219
+
1220
+ public MetricsFilter(MeterRegistry registry) {
1221
+ this.requestCounter = Counter.builder("gateway.requests")
1222
+ .description("Total gateway requests")
1223
+ .register(registry);
1224
+
1225
+ this.requestTimer = Timer.builder("gateway.request.duration")
1226
+ .description("Gateway request duration")
1227
+ .register(registry);
1228
+ }
1229
+
1230
+ @Override
1231
+ public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
1232
+ requestCounter.increment();
1233
+
1234
+ return requestTimer.record(() -> chain.filter(exchange));
1235
+ }
1236
+
1237
+ @Override
1238
+ public int getOrder() {
1239
+ return -150;
1240
+ }
1241
+ }
1242
+ ```
1243
+
1244
+ ## 选型建议
1245
+
1246
+ ### 场景对比
1247
+ ```
1248
+ Kong:
1249
+ - 大规模微服务(100+服务)
1250
+ - 需要丰富插件
1251
+ - 多语言技术栈
1252
+ - Kubernetes环境
1253
+
1254
+ Spring Cloud Gateway:
1255
+ - Spring Cloud生态
1256
+ - Java技术栈
1257
+ - 中小型系统(10-50服务)
1258
+ - 响应式架构
1259
+
1260
+ APISIX:
1261
+ - 国内环境
1262
+ - 需要Dashboard
1263
+ - 云原生架构
1264
+ - Apache生态
1265
+
1266
+ Nginx:
1267
+ - 高性能场景
1268
+ - 简单路由
1269
+ - 已有Nginx基础设施
1270
+ - 成本敏感
1271
+
1272
+ Traefik:
1273
+ - Kubernetes环境
1274
+ - 自动化需求高
1275
+ - 容器化应用
1276
+ - Let's Encrypt自动证书
1277
+ ```
1278
+
1279
+ ## 参考资源
1280
+
1281
+ ### 官方文档
1282
+ - Kong: https://docs.konghq.com/
1283
+ - Spring Cloud Gateway: https://spring.io/projects/spring-cloud-gateway
1284
+ - APISIX: https://apisix.apache.org/
1285
+ - Traefik: https://doc.traefik.io/traefik/
1286
+
1287
+ ### 最佳实践
1288
+ - 《微服务架构设计模式》
1289
+ - 《构建高性能Web服务器》
1290
+ - Nginx官方指南
1291
+ - Kong最佳实践文档