10、位置独立性:构建分布式系统的新视角

位置独立性:构建分布式系统的新视角

1. 分布式系统与位置依赖的现状

在不久之前,大多数程序都在单台计算机上运行。然而,随着 JavaScript 在网页浏览器中的普及、手机应用的兴起以及云环境中微服务的发展,如今我们编写的大多数程序都运行在多台计算机上。曾经分布式系统是一种特殊的存在,而现在它已成为常态。为了适应这一需求,我们需要更新一些默认的假设。

其中一个需要更新的默认假设是数据具有特定位置。有些系统试图将远程对象当作本地对象来处理,例如 DCOM 使用对象标识符让代理看起来像远程对象的本地实例;远程过程调用(RPC)则试图通过一个看似普通函数的接口来隐藏网络通信的实际情况。这些系统存在的问题已有诸多讨论,在此不再赘述。

实际上,位置相关的假设更为微妙。即便我们用消息替代 RPC,用 URL 替代对象标识符,也很容易默认数据有其特定位置。每当我们确定“真相源”或“记录系统”时,就做出了这样的假设。当单个节点生成唯一标识符时,我们也依赖于位置。我们在一台机器上进行编程的默认模式,会渗透到整个系统的编程行为中。

我们期望系统具备的许多行为都依赖于位置。比如,我们期望项目按顺序排列,系统拒绝重复名称,当用户更新对象的属性时,该属性会具有用户刚赋予的值。实际上,期望属性只有单一值也是一种依赖于位置的假设。

依赖于位置的系统在该位置不可用时会出现异常。相反,如果我们追求位置独立性,就能构建出响应更迅速、更具弹性和可靠性的系统。这些系统可以在不与远程节点通信的情况下自主运行,能够容忍网络故障而不引入缺陷,并且用户单独做出的决策在其他节点和用户知晓时也会得到尊重。

2. 基于不可变性的建模

位置假设的核心

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值