@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,664 @@
1
+ ---
2
+ id: system-design-interview
3
+ title: 系统设计面试指南
4
+ domain: architecture
5
+ category: 01-standards
6
+ difficulty: intermediate
7
+ tags: [agent, architecture, checklist, design, interview, system, 实战系统设计, 常见陷阱]
8
+ quality_score: 70
9
+ last_updated: 2026-06-15
10
+ ---
11
+ # 系统设计面试指南
12
+
13
+ ## 概述
14
+ 系统设计是评估高级工程师能力的核心考察方式。本指南覆盖URL短链、推送系统、Feed流、搜索引擎、支付系统、聊天系统、视频流媒体七大经典场景,提供结构化的分析方法和可落地的架构方案。
15
+
16
+ ## 核心方法论
17
+
18
+ ### 1. 系统设计四步法
19
+ 1. **需求澄清(5分钟)**: 功能需求/非功能需求/规模估算
20
+ 2. **高层设计(10分钟)**: 核心组件/数据流/API设计
21
+ 3. **深入设计(20分钟)**: 关键组件详细设计/数据模型/算法
22
+ 4. **总结与扩展(5分钟)**: 瓶颈分析/扩展方案/权衡讨论
23
+
24
+ ### 2. 规模估算速查
25
+
26
+ | 指标 | 数量级 | 说明 |
27
+ |------|--------|------|
28
+ | 日活用户(DAU) | 问面试官 | 通常1亿=大规模 |
29
+ | QPS | DAU * 操作次数 / 86400 | 峰值约平均的2-3倍 |
30
+ | 存储 | 对象大小 * 数量 * 保留时间 | 1年=365天 |
31
+ | 带宽 | QPS * 响应大小 | 注意上下行差异 |
32
+
33
+ 速算表:
34
+ - 1天 ≈ 10万秒(86400)
35
+ - 1年 ≈ 3000万秒
36
+ - 1KB * 1亿 ≈ 100GB
37
+ - 1MB * 1亿 ≈ 100TB
38
+
39
+ ## 实战系统设计
40
+
41
+ ### 设计1: URL短链系统
42
+
43
+ ```
44
+ 需求:
45
+ - 长URL→短URL(7位字符)
46
+ - 短URL→重定向到长URL
47
+ - 可选:点击统计、过期设置
48
+ - 规模: 1亿URL/天写入, 10:1读写比
49
+
50
+ 规模估算:
51
+ - 写QPS: 1亿/86400 ≈ 1200/s, 峰值 3600/s
52
+ - 读QPS: 12000/s, 峰值 36000/s
53
+ - 存储: 1亿/天 * 100B * 365天 * 5年 ≈ 18TB
54
+ ```
55
+
56
+ ```
57
+ 高层架构:
58
+
59
+ Client → Load Balancer → API Server → Cache(Redis)
60
+
61
+ Database(MySQL/DynamoDB)
62
+
63
+ Analytics Service(Kafka→ClickHouse)
64
+ ```
65
+
66
+ ```python
67
+ # 核心API设计
68
+ # POST /api/shorten {"url": "https://example.com/very/long/url"}
69
+ # → {"short_url": "https://s.co/Ab3xK7z"}
70
+ #
71
+ # GET /{short_code} → 301 Redirect
72
+
73
+ # 短码生成策略
74
+ import hashlib
75
+ import base64
76
+
77
+ class URLShortener:
78
+ # 方案1: Base62编码自增ID
79
+ BASE62 = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
80
+
81
+ @staticmethod
82
+ def id_to_short_code(id: int) -> str:
83
+ """自增ID转Base62短码"""
84
+ if id == 0:
85
+ return URLShortener.BASE62[0]
86
+ code = []
87
+ while id:
88
+ code.append(URLShortener.BASE62[id % 62])
89
+ id //= 62
90
+ return ''.join(reversed(code))
91
+
92
+ # 方案2: MD5哈希截取
93
+ @staticmethod
94
+ def hash_to_short_code(url: str) -> str:
95
+ """MD5哈希取前7位Base62"""
96
+ hash_bytes = hashlib.md5(url.encode()).digest()
97
+ encoded = base64.b64encode(hash_bytes).decode()
98
+ # 去掉特殊字符,取前7位
99
+ code = encoded.replace('+', '').replace('/', '').replace('=', '')
100
+ return code[:7]
101
+
102
+ # 数据模型
103
+ # urls表: id(bigint) | short_code(varchar7, unique index) | original_url(text) |
104
+ # user_id | created_at | expires_at | click_count
105
+
106
+ # 缓存策略
107
+ # Redis: short_code → original_url, TTL=24h
108
+ # 布隆过滤器: 快速判断short_code是否存在(防止缓存穿透)
109
+ ```
110
+
111
+ ### 设计2: 消息推送系统
112
+
113
+ ```
114
+ 需求:
115
+ - 支持百万级设备推送(iOS/Android/Web)
116
+ - 延迟: P99 < 5秒
117
+ - 支持: 单播/组播/广播
118
+ - 可靠性: 消息不丢失,支持离线推送
119
+
120
+ 高层架构:
121
+
122
+ App Server → Push API → Message Queue(Kafka)
123
+
124
+ Push Worker(消费者组)
125
+ ├── APNs Gateway(iOS)
126
+ ├── FCM Gateway(Android)
127
+ └── WebSocket Server(Web)
128
+
129
+ Device Token Store(Redis+DB)
130
+ Delivery Status(Kafka→Analytics)
131
+ ```
132
+
133
+ ```python
134
+ # 核心设计
135
+
136
+ class PushService:
137
+ async def send_to_user(self, user_id: str, message: dict):
138
+ """单播: 推送给用户的所有设备"""
139
+ devices = await device_store.get_user_devices(user_id)
140
+ for device in devices:
141
+ await self.enqueue(device, message)
142
+
143
+ async def send_to_segment(self, segment_id: str, message: dict):
144
+ """组播: 推送给用户分群"""
145
+ # 分批获取用户,避免内存溢出
146
+ async for batch in user_segment_store.iter_users(segment_id, batch_size=1000):
147
+ tasks = [self.send_to_user(uid, message) for uid in batch]
148
+ await asyncio.gather(*tasks)
149
+
150
+ async def send_broadcast(self, message: dict):
151
+ """广播: 推送给所有用户"""
152
+ # 使用topic广播,各worker分片处理
153
+ await kafka.send("push.broadcast", message)
154
+
155
+ async def enqueue(self, device: Device, message: dict):
156
+ """入队: 按平台路由到不同topic"""
157
+ topic = f"push.{device.platform}" # push.ios / push.android / push.web
158
+ await kafka.send(topic, {
159
+ "device_token": device.token,
160
+ "payload": self._build_payload(device.platform, message),
161
+ "priority": message.get("priority", "normal"),
162
+ "ttl": message.get("ttl", 86400),
163
+ })
164
+
165
+ # 设备Token存储
166
+ # Redis: user:{user_id}:devices → Set of device_ids
167
+ # DB: devices表: device_id | user_id | platform | token | last_active | created_at
168
+
169
+ # 离线消息
170
+ # 设备离线时,消息存入pending queue
171
+ # 设备上线后,拉取pending消息
172
+ ```
173
+
174
+ ### 设计3: 新闻Feed流
175
+
176
+ ```
177
+ 需求:
178
+ - 用户发布内容,关注者的Feed中显示
179
+ - Feed按时间排序(可扩展为算法排序)
180
+ - 规模: 5亿用户, DAU 1亿, 每人关注平均200人
181
+
182
+ 核心问题: 推(Fanout on Write) vs 拉(Fanout on Read)
183
+
184
+ 推模式: 发布时写入所有关注者的Feed
185
+ - 优点: 读取快(O(1))
186
+ - 缺点: 大V发布慢(百万关注者), 存储大
187
+ - 适合: 关注者少的普通用户
188
+
189
+ 拉模式: 读取时聚合关注者的内容
190
+ - 优点: 写入快, 存储小
191
+ - 缺点: 读取慢(聚合N个列表)
192
+ - 适合: 大V(百万关注者)
193
+
194
+ 混合方案(推荐):
195
+ - 普通用户: 推模式
196
+ - 大V(关注者>10000): 拉模式
197
+ - 读取时: 合并推模式Feed + 拉取大V最新内容
198
+ ```
199
+
200
+ ```python
201
+ # Feed写入(发布内容)
202
+ class FeedService:
203
+ async def publish(self, user_id: str, content: dict):
204
+ """发布内容"""
205
+ post = await post_store.create(user_id, content)
206
+
207
+ followers = await social_graph.get_followers(user_id)
208
+
209
+ if len(followers) > 10000:
210
+ # 大V: 不fanout,读取时拉取
211
+ return post
212
+
213
+ # 普通用户: Fanout写入关注者Feed
214
+ for batch in chunked(followers, 1000):
215
+ await kafka.send("feed.fanout", {
216
+ "post_id": post.id,
217
+ "author_id": user_id,
218
+ "follower_ids": batch,
219
+ "timestamp": post.created_at,
220
+ })
221
+
222
+ return post
223
+
224
+ async def get_feed(self, user_id: str, cursor: str = None, limit: int = 20):
225
+ """获取Feed"""
226
+ # 1. 从Redis获取推模式的Feed(已排序)
227
+ pushed_posts = await redis.zrevrange(
228
+ f"feed:{user_id}",
229
+ start=0,
230
+ end=limit * 2, # 多取一些用于合并
231
+ )
232
+
233
+ # 2. 拉取关注的大V最新内容
234
+ celebrities = await social_graph.get_followed_celebrities(user_id)
235
+ celebrity_posts = []
236
+ for celeb_id in celebrities:
237
+ posts = await post_store.get_recent(celeb_id, limit=5)
238
+ celebrity_posts.extend(posts)
239
+
240
+ # 3. 合并排序
241
+ all_posts = merge_sorted(pushed_posts, celebrity_posts, key="timestamp")
242
+
243
+ # 4. 分页
244
+ return paginate(all_posts, cursor=cursor, limit=limit)
245
+
246
+ # 数据存储
247
+ # Posts: post_id | user_id | content | media_urls | created_at (分片by user_id)
248
+ # Feed: Redis Sorted Set — feed:{user_id} → {post_id: timestamp}
249
+ # Social Graph: follower | following 双向表 (分片by user_id)
250
+ ```
251
+
252
+ ### 设计4: 搜索引擎
253
+
254
+ ```
255
+ 需求:
256
+ - 全文搜索(文档/商品/用户)
257
+ - 支持: 分词、相关性排序、过滤、高亮、自动补全
258
+ - 延迟: P99 < 200ms
259
+ - 规模: 10亿文档, 10万QPS
260
+
261
+ 高层架构:
262
+
263
+ 写入路径:
264
+ App → Write API → Kafka → Index Worker → Elasticsearch
265
+
266
+ 查询路径:
267
+ Client → Search API → Elasticsearch Cluster
268
+ → Cache(Redis)
269
+
270
+ Elasticsearch Cluster:
271
+ ├── Master Nodes (3个, 管理集群)
272
+ ├── Data Nodes (N个, 存储和查询)
273
+ ├── Coordinating Nodes (路由和聚合)
274
+ └── Ingest Nodes (数据预处理)
275
+ ```
276
+
277
+ ```python
278
+ # 搜索API设计
279
+ class SearchService:
280
+ async def search(self, query: SearchQuery) -> SearchResult:
281
+ # 缓存命中
282
+ cache_key = f"search:{hash(query)}"
283
+ cached = await redis.get(cache_key)
284
+ if cached:
285
+ return SearchResult.parse_raw(cached)
286
+
287
+ # 构建ES查询
288
+ es_query = {
289
+ "bool": {
290
+ "must": [
291
+ {"multi_match": {
292
+ "query": query.text,
293
+ "fields": ["title^3", "description^2", "content"],
294
+ "type": "best_fields",
295
+ "fuzziness": "AUTO",
296
+ }},
297
+ ],
298
+ "filter": [],
299
+ }
300
+ }
301
+
302
+ # 过滤条件
303
+ if query.category:
304
+ es_query["bool"]["filter"].append(
305
+ {"term": {"category": query.category}}
306
+ )
307
+ if query.price_range:
308
+ es_query["bool"]["filter"].append(
309
+ {"range": {"price": {
310
+ "gte": query.price_range[0],
311
+ "lte": query.price_range[1],
312
+ }}}
313
+ )
314
+
315
+ result = await es.search(
316
+ index="products",
317
+ body={
318
+ "query": es_query,
319
+ "highlight": {"fields": {"title": {}, "description": {}}},
320
+ "from": (query.page - 1) * query.size,
321
+ "size": query.size,
322
+ "sort": self._build_sort(query.sort_by),
323
+ },
324
+ )
325
+
326
+ search_result = self._format_result(result)
327
+ await redis.setex(cache_key, 300, search_result.json())
328
+ return search_result
329
+
330
+ async def autocomplete(self, prefix: str, limit: int = 10):
331
+ """自动补全"""
332
+ result = await es.search(
333
+ index="products",
334
+ body={
335
+ "suggest": {
336
+ "title_suggest": {
337
+ "prefix": prefix,
338
+ "completion": {
339
+ "field": "title.suggest",
340
+ "size": limit,
341
+ "fuzzy": {"fuzziness": 1},
342
+ },
343
+ },
344
+ },
345
+ },
346
+ )
347
+ return [s["text"] for s in result["suggest"]["title_suggest"][0]["options"]]
348
+ ```
349
+
350
+ ### 设计5: 支付系统
351
+
352
+ ```
353
+ 需求:
354
+ - 支持多种支付方式(信用卡/支付宝/微信)
355
+ - 强一致性(钱不能多也不能少)
356
+ - 幂等性(重复请求不重复扣款)
357
+ - 对账(与第三方支付渠道对账)
358
+
359
+ 高层架构:
360
+
361
+ Client → API Gateway → Payment Service → Payment Router
362
+ ├── Stripe Gateway
363
+ ├── Alipay Gateway
364
+ └── WeChat Pay Gateway
365
+
366
+ Order Service ← → Ledger Service
367
+
368
+ Notification Service
369
+
370
+ 关键组件:
371
+ - 支付服务: 统一支付接口,路由到不同渠道
372
+ - 账本服务: 复式记账,确保资金平衡
373
+ - 对账服务: 定时与渠道对账
374
+ ```
375
+
376
+ ```python
377
+ # 支付核心设计
378
+
379
+ class PaymentService:
380
+ async def create_payment(self, request: PaymentRequest) -> Payment:
381
+ """创建支付(幂等)"""
382
+ # 1. 幂等检查
383
+ existing = await payment_store.get_by_idempotency_key(request.idempotency_key)
384
+ if existing:
385
+ return existing
386
+
387
+ # 2. 创建支付记录
388
+ payment = Payment(
389
+ id=generate_id(),
390
+ order_id=request.order_id,
391
+ amount=request.amount,
392
+ currency=request.currency,
393
+ method=request.method,
394
+ status="pending",
395
+ idempotency_key=request.idempotency_key,
396
+ )
397
+ await payment_store.save(payment)
398
+
399
+ # 3. 路由到支付渠道
400
+ gateway = self.get_gateway(request.method)
401
+ try:
402
+ result = await gateway.charge(
403
+ amount=request.amount,
404
+ currency=request.currency,
405
+ token=request.payment_token,
406
+ idempotency_key=request.idempotency_key,
407
+ )
408
+
409
+ # 4. 更新状态
410
+ payment.status = "completed"
411
+ payment.gateway_tx_id = result.transaction_id
412
+ await payment_store.update(payment)
413
+
414
+ # 5. 记账
415
+ await ledger.record(
416
+ debit_account=f"user:{request.user_id}",
417
+ credit_account="revenue:sales",
418
+ amount=request.amount,
419
+ reference=payment.id,
420
+ )
421
+
422
+ # 6. 通知
423
+ await event_bus.publish("payment.completed", payment.to_dict())
424
+
425
+ return payment
426
+
427
+ except PaymentDeclinedError as e:
428
+ payment.status = "failed"
429
+ payment.failure_reason = str(e)
430
+ await payment_store.update(payment)
431
+ raise
432
+
433
+ # 复式记账
434
+ class LedgerService:
435
+ async def record(self, debit_account: str, credit_account: str,
436
+ amount: Decimal, reference: str):
437
+ """复式记账(借贷必须平衡)"""
438
+ async with db.begin() as tx:
439
+ # 借方
440
+ await tx.execute(text("""
441
+ INSERT INTO ledger_entries (account, type, amount, reference, created_at)
442
+ VALUES (:account, 'debit', :amount, :ref, now())
443
+ """), {"account": debit_account, "amount": amount, "ref": reference})
444
+
445
+ # 贷方
446
+ await tx.execute(text("""
447
+ INSERT INTO ledger_entries (account, type, amount, reference, created_at)
448
+ VALUES (:account, 'credit', :amount, :ref, now())
449
+ """), {"account": credit_account, "amount": amount, "ref": reference})
450
+
451
+ # 对账
452
+ class ReconciliationService:
453
+ async def reconcile(self, date: str, gateway: str):
454
+ """每日对账"""
455
+ # 1. 获取本地交易记录
456
+ local_txns = await payment_store.get_by_date_and_gateway(date, gateway)
457
+
458
+ # 2. 获取渠道交易记录
459
+ remote_txns = await gateway_client.get_settlement(date)
460
+
461
+ # 3. 对比
462
+ local_map = {tx.gateway_tx_id: tx for tx in local_txns}
463
+ remote_map = {tx.id: tx for tx in remote_txns}
464
+
465
+ discrepancies = []
466
+ for tx_id, remote_tx in remote_map.items():
467
+ local_tx = local_map.get(tx_id)
468
+ if not local_tx:
469
+ discrepancies.append(("missing_local", tx_id))
470
+ elif local_tx.amount != remote_tx.amount:
471
+ discrepancies.append(("amount_mismatch", tx_id))
472
+
473
+ for tx_id in set(local_map.keys()) - set(remote_map.keys()):
474
+ discrepancies.append(("missing_remote", tx_id))
475
+
476
+ return ReconciliationReport(date=date, discrepancies=discrepancies)
477
+ ```
478
+
479
+ ### 设计6: 聊天系统
480
+
481
+ ```
482
+ 需求:
483
+ - 一对一和群聊
484
+ - 实时消息投递(WebSocket)
485
+ - 离线消息存储和推送
486
+ - 消息已读回执
487
+ - 规模: 1亿DAU, 平均每人发20条/天
488
+
489
+ 高层架构:
490
+
491
+ Client ←WebSocket→ Gateway Server(有状态,维护连接)
492
+
493
+ Message Service(无状态)
494
+
495
+ ┌────────┼────────┐
496
+ Message DB Redis Push Service
497
+ (Cassandra) (在线状态) (离线通知)
498
+ ```
499
+
500
+ ```python
501
+ # 消息投递核心
502
+
503
+ class ChatService:
504
+ async def send_message(self, msg: ChatMessage):
505
+ """发送消息"""
506
+ # 1. 持久化
507
+ await message_store.save(msg)
508
+
509
+ # 2. 更新会话最新消息
510
+ await conversation_store.update_last_message(msg.conversation_id, msg)
511
+
512
+ # 3. 投递给接收方
513
+ if msg.type == "direct":
514
+ await self._deliver_to_user(msg.recipient_id, msg)
515
+ elif msg.type == "group":
516
+ members = await group_store.get_members(msg.group_id)
517
+ for member_id in members:
518
+ if member_id != msg.sender_id:
519
+ await self._deliver_to_user(member_id, msg)
520
+
521
+ async def _deliver_to_user(self, user_id: str, msg: ChatMessage):
522
+ """投递给用户"""
523
+ # 查找用户连接的Gateway服务器
524
+ gateway_server = await redis.get(f"online:{user_id}")
525
+
526
+ if gateway_server:
527
+ # 在线: 通过WebSocket实时推送
528
+ await self._push_via_gateway(gateway_server, user_id, msg)
529
+ else:
530
+ # 离线: 存入未读队列 + 推送通知
531
+ await redis.lpush(f"unread:{user_id}", msg.to_json())
532
+ await push_service.send_notification(user_id, {
533
+ "title": msg.sender_name,
534
+ "body": msg.preview_text,
535
+ })
536
+
537
+ # 消息存储(Cassandra)
538
+ # 按conversation_id分区,timestamp排序
539
+ # CREATE TABLE messages (
540
+ # conversation_id text,
541
+ # message_id timeuuid,
542
+ # sender_id text,
543
+ # content text,
544
+ # type text,
545
+ # created_at timestamp,
546
+ # PRIMARY KEY (conversation_id, message_id)
547
+ # ) WITH CLUSTERING ORDER BY (message_id DESC);
548
+ ```
549
+
550
+ ### 设计7: 视频流媒体
551
+
552
+ ```
553
+ 需求:
554
+ - 视频上传、转码、存储
555
+ - 自适应码率流媒体播放(HLS/DASH)
556
+ - 规模: 每天100万视频上传, 1亿次播放
557
+
558
+ 高层架构:
559
+
560
+ 上传路径:
561
+ Client → Upload API → Object Storage(S3)
562
+
563
+ Transcode Queue(SQS/Kafka)
564
+
565
+ Transcode Workers(FFmpeg)
566
+ ├── 1080p/720p/480p/360p
567
+ ├── 生成HLS分片
568
+ └── 生成缩略图
569
+
570
+ CDN Origin(S3)
571
+
572
+ 播放路径:
573
+ Client → CDN Edge → CDN Origin(S3)
574
+
575
+ 自适应码率(根据带宽自动切换)
576
+
577
+ 关键设计:
578
+ - CDN: 全球边缘节点,减少延迟
579
+ - 自适应码率: HLS/DASH协议,客户端根据带宽选择清晰度
580
+ - 转码: 异步处理,多种分辨率+编码(H.264/H.265/AV1)
581
+ - 分片: 视频切成2-10秒小段,支持seek和CDN缓存
582
+ ```
583
+
584
+ ## 最佳实践
585
+
586
+ ### 1. 面试沟通
587
+ - 先问清楚需求(不要假设)
588
+ - 做规模估算(展示定量思维)
589
+ - 从高层设计开始,再逐步深入
590
+ - 讨论权衡(没有完美方案)
591
+ - 主动提出可改进的点
592
+
593
+ ### 2. 通用设计原则
594
+ - 读写分离(CQRS/主从)
595
+ - 缓存分层(CDN/Redis/本地)
596
+ - 异步处理(消息队列解耦)
597
+ - 分片(按合理的键分布数据)
598
+ - 冗余(副本保高可用)
599
+
600
+ ### 3. 数据库选择
601
+ - 关系型(MySQL/PG): 事务/复杂查询/一致性强
602
+ - 文档型(MongoDB): 灵活Schema/嵌套数据
603
+ - 列族(Cassandra): 大规模时序写入
604
+ - KV(Redis/DynamoDB): 高性能简单查询
605
+ - 搜索(ES): 全文搜索/聚合分析
606
+ - 图(Neo4j): 关系查询(社交/推荐)
607
+
608
+ ### 4. 容量规划
609
+ - 存储: 数据大小 * 记录数 * 冗余因子
610
+ - 带宽: QPS * 平均响应大小
611
+ - 缓存: 热点数据 * 20%规则(20%数据覆盖80%请求)
612
+ - 节点数: QPS / 单节点能力
613
+
614
+ ## 常见陷阱
615
+
616
+ ### 陷阱1: 上来就画详细架构
617
+ ```
618
+ # 错误: 没有问清需求就开始设计
619
+ # 正确: 先花5分钟确认功能需求/非功能需求/规模
620
+ ```
621
+
622
+ ### 陷阱2: 忽略非功能需求
623
+ ```
624
+ # 错误: 只关注功能,不考虑性能/可用性/一致性
625
+ # 正确: 明确SLA(延迟P99/可用性99.9%/一致性模型)
626
+ ```
627
+
628
+ ### 陷阱3: 过度设计
629
+ ```
630
+ # 错误: 小规模系统用Kafka+ES+Redis+Cassandra
631
+ # 正确: 从简单架构开始,说明在什么规模下需要什么组件
632
+ ```
633
+
634
+ ### 陷阱4: 不讨论权衡
635
+ ```
636
+ # 错误: "这是最好的方案"
637
+ # 正确: "方案A的优点是X,缺点是Y;方案B的优点是..."
638
+ ```
639
+
640
+ ## Agent Checklist
641
+
642
+ ### 设计流程
643
+ - [ ] 需求已澄清(功能/非功能/规模)
644
+ - [ ] 规模估算已完成(QPS/存储/带宽)
645
+ - [ ] 高层架构已画出
646
+ - [ ] 关键组件已详细设计
647
+
648
+ ### 技术选型
649
+ - [ ] 数据库选择有理由
650
+ - [ ] 缓存策略已设计
651
+ - [ ] 消息队列需求已评估
652
+ - [ ] CDN/负载均衡已考虑
653
+
654
+ ### 可靠性
655
+ - [ ] 单点故障已识别并解决
656
+ - [ ] 数据冗余/备份策略
657
+ - [ ] 降级方案已设计
658
+ - [ ] 限流/过载保护
659
+
660
+ ### 可扩展性
661
+ - [ ] 水平扩展方案已设计
662
+ - [ ] 分片策略已确定
663
+ - [ ] 缓存分层已优化
664
+ - [ ] 瓶颈已识别并有扩展路径