不可变架构:解决分布式系统难题的新途径
1. 分布式系统的挑战
分布式系统开发充满挑战,在日常生活中,我们就能遇到相关问题。比如在网站购物时,可能会看到“请勿重复点击提交”的警告,或者点击购买按钮后按钮被禁用,这表明开发者在处理分布式系统难题时力不从心,将防止重复收费的责任推给了消费者。再如在火车上使用移动应用保存数据,火车进入隧道,应用可能会卡顿,我们会担心数据是否会丢失、应用能否在恢复连接后自行修正。
对于参与分布式系统创建的人员来说,职责各有不同:
- QA人员需要设想所有可能的场景并在实验室中重现。
- 开发人员要为各种异常和竞态条件编写代码。
- 架构师则要解决可能出现的故障和缓解措施这一棘手问题。
然而,目前构建分布式系统的过程容易遗漏影响用户的缺陷,因为依赖个人去发现、修复和缓解问题,很难做到万无一失。
2. 不可变解决方案
2.1 不可变的概念
不可变是一种简单的概念,即记录数据后确保其永不改变,不能被修改、更新或删除。不可变能够解决分布式系统的问题,原因在于每个不可变对象的副本都与其他副本一样好,只要数据不改变,保持远程副本同步就变得简单。
2.2 不可变面临的问题
不可变与计算机的实际工作方式相悖,存在以下两个主要问题:
- 内存表示问题 :计算机内存有限,通过修改内存位置的内容来更新内部状态,因此如何在固定的可变内存中表示不可变数据是首要问题。
- 变化建模问题 :现实世界充满变化,如人们会更改姓名、地址和电话号码,银行账户
超级会员免费看
订阅专栏 解锁全文
712

被折叠的 条评论
为什么被折叠?



