转载

不变性改变一切,包括微服务

现任Salesforce软件架构师的Pat Helland在他的 CIDR 2015文章 里回顾了不变性(immutability)架构设计的优点。Pat认为,今天的计算与存储成本已大大降低,为大规模数据保存不变副本(immutable copies)在经济上变得可行,这样做有助于缓解协调方面的挑战。

Pat对比了内部数据(inside data)与外部数据(outside data)的特性(见下表),并指出了采纳不变性架构的几点技术影响(注:Pat将 数据集 定义为一个固定的、不可变的表的集合):

  • 尽管数据集在物理上可以被改变,但在语义上是不变的(immutable)。
  • 通过观测和监控数据集的读取量,可以发现新的优化点(如新增索引等)。
  • 不变性是大数据(Big Data)的支柱。采用不变输入的函数式计算是幂等的,所以就算出错或重启也不要紧。
  • 规范化在需要更新的数据库里是十分重要的;但对于不变的数据集,规范化不是必需的。
  • 日志结构化文件系统(Log Structured File Systems)给不变性数据块带来高可用性(availability)。

不变性改变一切,包括微服务 表:对比内部数据与外部数据 (出处:Pat Helland的 CIDR 2015文章 )

与此同时,Jay Vyas在Red Hat开发者博客上发文 展示了 如何用Apache Spark和Cassandra来创建不变的微服务(immutable microservices)。Jay也谈到了构建不变微服务的好处:

本质上,不变微服务不需借助于任何重量级的安装器或配置管理就能部署,而且令负载平衡、高可用性和动态资源分享等成为可能。(.…) 不变微服务可以在任何环境下测试,因为他们对启动自己的编排层(orchestration layer)依赖很小。

不变性架构的优势在Facebook、Lambda架构和新型数据库Datomic中均已有所体现,你做好迎接一趋势的准备了吗?

查看英文原文: Immutability Changes Everything Including Microservices

正文到此结束
Loading...