知识卡片

平台级架构可以一次只解决一个具体问题,逐层演进出来,而不是一开始就设计好全部

专业/工作

内容

Facebook平台不是一次性设计出来的宏大蓝图,而是针对每一步暴露出的具体痛点各自加了一层:内部数据外部不可访问,就加一层Web服务把方法暴露出去;暴露出去后发现用户隐私没法保证,就设计会话密钥和登录授权握手;开发者发现零散调用+批量拉取效率太低,就设计FQL查询语言;开发者发现敏感数据没法安全地嵌入到自己页面里,就设计FBML让渲染留在受信任环境内。每一层新技术出现前都有一个”实际问题”和一句”数据解决方案”清楚地对应着,而不是提前预判”未来可能需要什么”。这提示一个应对复杂系统演进的心态:不必因为看不到终点全貌就迟迟不敢开始,只要能清楚说出”现在卡住我们的具体问题是什么”,下一层该长成什么样往往会自然浮现。

参考来源

《架构之美》第6章《数据增长:Facebook平台的架构》