# GeekArchitecture **Repository Path**: yejq/geekarchitecture ## Basic Information - **Project Name**: GeekArchitecture - **Description**: 极客架构:事情如何做到极致即是架构要考虑的事情。 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2017-04-19 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #极客架构# ## 设计 ## ### 处理一个系统设计的步骤 ### **第一步:描述使用场景,约束和假设** 把所有需要的东西聚集在一起,审视问题。不停的提问,以至于我们可以明确使用场景和约束。讨论假设。 - 谁会使用它? - 他们会怎样使用它? - 有多少用户? - 系统的作用是什么? - 系统的输入输出分别是什么? - 我们希望处理多少数据?**** - 我们希望每秒钟处理多少请求? - 我们希望的读写比率? **第二步:创造一个高级的设计** 使用所有重要的组件来描绘出一个高级的设计。 - 画出主要的组件和连接 - 证明你的想法 **第三步:设计核心组件** 对每一个核心组件进行详细深入的分析。举例来说,如果你被问到**设计一个 url 缩写服务**,开始讨论: - 生成并储存一个完整 url 的 hash - MD5 和 Base62 - Hash 碰撞 - SQL 还是 NoSQL - 数据库模型 - 将一个 hashed url 翻译成完整的 url - 数据库查找 - API 和面向对象设计 **第四步:度量设计** 确认和处理瓶颈以及一些限制。举例来说就是你需要下面的这些来完成拓展性的议题吗? - 负载均衡 - 水平拓展 - 缓存 - 数据库分片 ### 工具 ### ### zabbix ### 做监控不是为了监控机器而监控,一定要把业务监控加进来,业务抖动要能展现,比如新注册用户数、订单量波动等;要做到发生抖动时从监控就能看出是什么原因引起的抖动。