云原生架构与 GitOps 实战
王炜
前腾讯云 CODING 架构师
6217 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 44 讲
云原生架构与 GitOps 实战
15
15
1.0x
00:00/00:00
登录|注册

40|命令式和声明式,谁才是驱动云原生的“引擎”?

你好,我是王炜。
这节课我们来聊聊命令式和声明式。
命令式和声明式常用于描述编程范式,两者最直观的区别是:命令式是描述代码执行步骤的,它通过代码流程控制来实现程序的输入和输出,是一种过程导向的思想。而声明式则不直接描述执行步骤,它描述的是期望的状态和结果,由程序内部逻辑控制来实现,是一种结果导向的思想。
举例来说,使用 docker run 命令启动一个容器,这就是最简单的命令式。
当业务逻辑简单且只有一个单体应用的容器时,使用命令式是简单且直观的。但随着系统越来越复杂,加上微服务数量的增长,服务之间就可能会产生依赖问题。例如所有服务都依赖于 MySQL 和 RabbitMQ 服务,那么在启动其他服务前就必须先启动这两个服务,这时候要想人为记住服务依赖和启动顺序,以此执行 docker run 启动服务就变得困难起来。用户需要一种方法来“声明”微服务之间的依赖和启动关系。
为了解决这个问题,“声明式”的服务编排系统出现了,在 Kubernetes 之前,其实还有很多容器编排方案,比较知名的有 Docker 自家的方案 Docker-compose,你可以通过一个 YAML 文件来声明式描述服务之间的依赖关系,Docker-compose 会自动帮你处理它们的启动顺序和依赖。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

云原生时代的软件部署和运维正逐渐从传统的命令式转变为声明式。本文深入探讨了命令式和声明式的概念及其优势。命令式通过代码流程控制实现程序的输入和输出,而声明式描述期望的状态和结果,由程序内部逻辑控制实现。声明式的优势在于屏蔽了中间过程,提供更好的幂等性,便于管理定义与环境的配置漂移,以及更高的部署透明度。文章还介绍了 Kubernetes 实现声明式的核心基础,通过 Operator 实时获取状态变更信息,让基础设施达到预期状态。此外,文章还介绍了其他声明式的项目,如 Terraform 和 Ansible,它们在实现基础设施即代码和自动化运维方面发挥着重要作用。总的来说,声明式适合复杂的任务,支持幂等性,能够很好地适应配置漂移的问题,且对使用者编程经验要求较低。随着 Kubernetes 的流行,声明式的思想变得无处不在,为读者提供了对云原生时代编程范式的深入了解。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《云原生架构与 GitOps 实战》
新⼈⾸单¥59
立即购买
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部