Posted on 2009-05-02 13:02
dennis 阅读(1786)
评论(0) 编辑 收藏 所属分类:
计算机科学与基础
每个第一次构建分布式系统的人都可能会做出8个错误的对网络的假设:
1. |
The network is reliable |
2. |
Latency is zero |
3. |
Bandwidth is infinite |
4. |
The network is secure |
5. |
Topology doesn't change |
6. |
There is one administrator |
7. |
Transport cost is zero |
8. |
The network is homogeneous |
翻译过来就是:
1、网络是稳定可靠的
2、没有延迟
3、带宽无限
4、网络是安全的
5、网络拓扑不会改变
6、只有一个管理员
7、传输成本为0
8、网络是均匀的,现实是各种网络环境都有。
更多错误假设:
1、网络IO跟磁盘IO一样
网络IO比之磁盘IO更不可预测、不可靠和不可控,网络IO包括了软硬件两方面的限制。
2、你与对端能够同步
你无法假设对端是否关闭、接收到数据,这些通常需要你在应用协议里同步。
3、所有的错误都可以被检测到。
很多错误例如对端关闭引起的读阻塞都需要应用层来处理。
4、资源无限可用。
5、应用可以无限等待一个远程服务
任何大规模的应用都需要慎重设计超时、过期策略
6、远程服务总能响应及时。
7、只有单点失败
8、只有一个资源分配器
9、只有一个时间,也就是全局时间的问题。