每个第一次构建分布式系统的人都可能会做出8个错误的对网络的假设:
翻译过来就是: 1、网络是稳定可靠的 2、没有延迟 3、带宽无限 4、网络是安全的 5、网络拓扑不会改变 6、只有一个管理员 7、传输成本为0 8、网络是均匀的,现实是各种网络环境都有。 更多错误假设: 1、网络IO跟磁盘IO一样 网络IO比之磁盘IO更不可预测、不可靠和不可控,网络IO包括了软硬件两方面的限制。 2、你与对端能够同步 你无法假设对端是否关闭、接收到数据,这些通常需要你在应用协议里同步。 3、所有的错误都可以被检测到。 很多错误例如对端关闭引起的读阻塞都需要应用层来处理。 4、资源无限可用。 5、应用可以无限等待一个远程服务 任何大规模的应用都需要慎重设计超时、过期策略 6、远程服务总能响应及时。 7、只有单点失败 8、只有一个资源分配器 9、只有一个时间,也就是全局时间的问题。
文章转自庄周梦蝶 ,原文发布时间2009-05-02
|