- google计算环境
- 大量廉价PC组成的集群
- 新集群存在大量的硬件故障
- google工程环境
- 分布式系统(数据或者请求都没法在一个机器上完成)
- 遍布全球的多个数据中心
- 产品大都是服务,而不是简单包装的软件
- 服务在内部也会大量
- 。。。
- 设计软件系统需要各种平衡
- 简单
- 扩展
- 性能
- 可靠性
- 通用性
- 专有性
- 在编码和详细文档之前需要做的事情
- 先做一个大致的设计
- 跟做过类似系统的人在白板上讨论
- 最好是讨论一些不同的可选设计
- 接口
- 接口需要仔细考虑
- 想象一下一些遗留的客户需要如何使用
- 精确的文档,但是要避免实现上的限制
- 在实现接口之前要注意反馈的意见
- 最好的学习方式是借鉴已有的优秀接口设计