Kubernetes的重要设计理念之一,即声明式设计(Declarative)。
什么是声明式设计(Declarative)
声明式设计(Declarative),指的是这么一种软件设计理念和做法,我们向一个工具描述我们想要让一个事物达到的目标状态,由这个工具自己内部去处理如何令这个事物达到目标状态。
和Declarative(声明式设计)相对的是命令式设计(Imperative)或者过程式设计(Procedural)
命令式设计(Imperative)或者过程式设计(Procedural),描述的是一系列的动作,这一系列的动作如果被正确执行,最终结果将达到我们期望的目标状态。
声明式设计和命令式设计有什么区别
声明式设计,是告诉计算机你想要什么,由计算机自己去设计执行路径,如SQL;
命令式设计,是直接向计算机发出服务器要执行的操作命令;
相比于更关注状态和结果的声明式设计方式,命令式设计方式更强调过程。
声明式设计在分布式系统或者微服务架构场景下有什么优势
命令式设计方式需要提前设想目标环境可能出现的各种状况,并加以处理。在分布式系统和微服务架构中,环境更加动态、复杂,想要实现状态的一致性、事务性和版本化,需要付出巨大的代价。
如果使用声明式的设计思路,问题就会变得简单的多。编写一个描述文件,描述想要的结果,然后由系统解析这个描述文件,并自动生成预期结果。
声明式设计的好处:
- 描述文件易于理解,利于多人维护,便于文档化和版本管理,可以由开发人员参与编写
- 天然具备事务性
- 在不同目标环境可以产生一致结果
- 重复执行不会产生不一致的结果
- 天然符合不可变基础设施的理念
声明式设计理念在分布式系统和微服务架构中如此重要,一位英国小伙伴在办公桌上钉了这样一个纸条时刻提醒自己
declarative.jpeg
网友评论