云原生词汇表之精简版

目录
参考: https://glossary.cncf.io/zh-cn/
🧱 架构与应用
- 单体应用 Monolithic Apps: 单体应用在一个简单可部署的程序中包含所有的功能
将一个应用程序转变成微服务会增加其运营开销 —— 有更多的东西需要测试、部署和保持运行
在产品生命周期的早期,推迟这种复杂性并建立一个单体应用,直到产品被确定为成功,可能是有利的
精心设计的单体可以坚持精益原则,因为它是启动和运行应用程序的最简单方式
当单体应用的商业价值被证明是成功的,它可以被分解成微服务
在证明有价值之前,制作一个基于微服务的应用程序可能是过早地花费了工程努力
如果应用程序没有产生任何价值,这些努力就会被浪费掉 - 微服务 Microservices: 将功能分离成不同的微服务,使它们更容易独立部署、更新和扩展
- 分布式应用 Distributed Apps: 功能被分解成多个较小的独立部分,能够在多个地方同时运行,可以容忍更多的故障,并具备单个应用程序实例所不具备的伸缩功能
- 分布式系统 Distributed Systems: 通过网络连接的自主计算元素的集合,在用户看来是一个单一的连贯系统
- 客户端-服务器架构 Client Server Architecture: 在远程服务器中实现应用程序逻辑,可以在不需要修改客户端的逻辑的情况下进行应用程序更新
- 松耦合架构 Loosely Coupled Architecture: 应用程序的各个组件彼此独立构建,每个组件都是为了执行特定功能而构建的,以便被任意数量的其他服务使用
- 紧耦合架构 Tightly Coupled Architecture: 许多应用程序组件相互依赖,一个组件的更改可能会影响其他组件,可以加快最初的开发周期
- 事件驱动架构 Event Driven Architecture: 事件是对应用程序状态的任何更改,定义事件生产者(源)和消费者(接收者),中心事件枢纽(如Kafka)保证事件的流动
- 无状态应用 Stateless Apps: 状态是指应用需要存储以便其按设计运行的任何数据,不保存任何客户端会话状态数据,每个会话都像第一次一样执行,响应不依赖于前一个会话的数据(如搜索引擎)
- 有状态应用 Stateful Apps: 客户端会话状态临时保存在内存中,或持久存储在本地磁盘或数据库系统中
- 垂直伸缩 Vertical Scaling: 通过在工作负载增加时向单个节点添加CPU和内存来增加系统容量的技术
- 水平伸缩 Horizontal Scaling: 通过添加更多节点来增加系统容量的技术,而不是向单个节点添加更多计算资源
🚢 容器与编排
- 容器 Container: 提供了一种隔离的运行环境,使不同应用程序能够在独立的文件系统、网络和进程空间等独立运行环境中运行
- 容器镜像 Container Image: 不可改变的静态文件,包含应用程序与它运行时的依赖
- 容器化 Containerization: 将应用程序与它运行时的依赖捆绑到容器镜像中的过程
- 容器编排 Container Orchestration: 容器编排工具像乐队指挥一样指挥众多容器(乐手),确保每个容器各行其是
- Kubernetes: 通常缩写为K8S,流行的开源容器编排工具
- Pod: 在Kubernetes环境中最基本的可部署单元,可以容纳一个或多个容器
- 集群 Cluster: 一组计算机或应用程序,通过网络连接,为一个共同的目标一起工作,消除了单点故障
- 节点 Nodes: 一台能与其他计算机(或节点)协同工作以完成一个共同任务的计算机
🧩 服务治理
- 应用程序接口 API Application Programming Interface: 计算机程序之间明确的、可理解的交互和共享信息的一种方式
- API网关 API Gateway: 通过聚合多个应用程序的API,实现一站式管理的工具
- 负载均衡器 Load Balancer.: 充当流量代理,在多个服务器之间分配网络流量,提高流量高峰时应用的可靠性
- 服务 Service: 具体定义依场景而异,微服务架构中通常指可独立部署的功能模块
- 服务代理 Service Proxy: 作为"中间人"拦截和转发服务流量,收集流量信息并应用规则,实现流量管理和安全控制
- 服务发现 Service Discovery: 持续跟踪网络中的应用程序,提供一个公共的地方来查找和识别不同服务,以便应用程序可以找到彼此
- 服务网格 Service Mesh: 统一管理微服务间通信,增加可靠性、可观测性和安全功能,不需要改变代码
☁️ 服务模型
- 云计算 Cloud Computing: 通过互联网按需提供计算资源(如CPU、网络和磁盘功能),分为私有云和公有云,具体取决于云基础设施是专门用于某个组织还是开放共享的公共服务
- 基础设施即服务 IaaS Infrastructure-as-a-Service: 云提供商提供物理或虚拟的计算、存储和网络资源,使用按需按量的计费模式
- 平台即服务 PaaS Platform-as-a-Service: 以完全自动化的方式为应用程序开发人员提供通用基础设施,使开发人员可以将更多的时间和精力用于编写应用程序代码
- 容器即服务 CaaS Container-as-a-Service: 无需管理容器运行的底层基础设施,使容器部署和管理自动化
- 数据库即服务 DBaaS Database-as-a-Service: 云服务商管理数据库的配置、备份、补丁、升级、监控等,开发人员仅使用数据库
- 软件即服务 SaaS Software-as-a-Service: 软件由供应商安装、维护、升级和确保安全,并处理扩缩、可用性和容量问题,用户通过互联网使用软件,采用按需付费的模式
- Serverless: 云原生开发模式,开发人员构建和运行应用程序时无需管理服务器,云提供商处理配置、维护和伸缩服务器基础架构的日常工作
- 托管服务 Managed Services: 由第三方负责运维和管理的软件服务,用户仅专注核心业务,降低运维负担
🛠 DevOps
- 开发运维 DevOps: 融合开发与运维,强调协作、自动化和持续交付、持续部署,让团队拥有应用程序的整个生命周期,可以最大限度地减少交接,提高代码质量,降低部署到生产中的风险
- 持续集成 CI Continuous Integration: 定期集成代码变更,自动化测试,提升协作效率和代码质量
- 持续交付 CD Continuous Delivery: 将代码的变化被自动部署到验收环境中,确保软件在部署到生产环境之前得到充分测试
- 持续部署 CD Continuous Deployment: 自动部署测试环境的代码更改到生产环境,比持续交付更进了一步
- 金丝雀部署 Canary Deployment: 逐步将流量从旧版本切换到新版本,先小范围试用,发现问题可快速回滚,降低上线风险,源于矿工使用金丝雀对有害气体敏感的特性安全预警
- 蓝绿部署 Blue-Green Deployment: 同时维护两套环境,“蓝"为当前生产环境,“绿"为新生产环境,通过快速切换生产流量实现零停机部署,适用于更新时缺乏向后兼容而必须整体同步改变的场景
- 自动伸缩 Auto Scaling: 系统根据需求自动增加或减少资源,提升弹性和效率
- 自愈 Self Healing: 无需任何人为干预就能从故障中恢复
🔐 可靠性与安全
- 网站可靠性工程 SRE Site Reliability Engineering: 结合运营和软件工程的学科,DevOps专注于将代码投入生产环境,SRE确保在生产环境中运行的代码正常工作
- 混沌工程 CE Chaos Engineering: 在生产环境主动注入故障,验证系统弹性和自愈能力,建立对系统承受动荡和意外情况时能力的信心
- 安全混沌工程 Security Chaos Engineering: 在分布式系统上执行主动安全实验,建立对系统抵御动荡和恶意条件能力的信心
- 云原生安全 Cloud Native Security: 将安全性融入云原生应用全生命周期,适应云原生环境的特殊性,即快速的代码更改和高度短暂的基础设施
- 零信任架构 Zero Trust Architecture: 永不信任,永远验证,一种完全消除信任的IT系统设计和实施方法
- 防火墙 Firewall: 基于特定规则过滤网络流量的系统,防火墙可以是硬件、软件,或者是两者的组合
- 传输层安全性协议 TLS Transport Layer Security: 旨在为网络通信提供更高安全性的协议,避免数据监听和篡改
- 双向传输层安全协议 mTLS mutual Transport Layer Security: 确保客户端和服务器之间的双向流量都是安全和可信的,没有未经授权的一方监听或冒充合法请求
🔄 基础设施
- 基础设施即代码 IaC Infrastructure-as-Code: 用代码定义和管理基础设施,实现自动化,可复现和版本控制,减少人为配置错误
- 策略即代码 PaC Policy-as-Code: 用机器可读文件定义和自动执行策略,提升合规性和自动化,减少人为错误
- 不可变基础设施 Immutable Infrastructure: 一旦部署就无法变更的计算机基础设施(例如虚拟机、容器、网络设备),可以更轻松地识别和减轻安全风险
- 裸机 Bare Metal Machine: 物理服务器直接运行操作系统和应用,无虚拟化层,资源独享,性能最优
- 数据中心 Data Center: 专为容纳服务器设计的建筑或设施,保障计算资源安全,稳定和高效运行
- 边缘计算 Ddge Computing: 将计算和存储资源从中心转移到数据源附近,提升实时性和效率,减少延迟
🧠 系统特性
- 可伸缩性 Scalability: 系统可通过增加节点或资源轻松扩展容量,满足不断增长的业务需求
- 可移植性 Portability: 软件可在不同操作系统或云环境间运行,减少对特定平台的依赖,便于迁移和复用
- 可观测性 Observability: 通过收集和分析系统信息,洞察系统的状态并采取修正措施
- 可靠性 Reliability: 系统对故障的响应能力,能在组件出错时继续运行
- 幂等性 Idempotence: 无论执行多少次,都会得到相同的结果,如果参数相同,一个幂等操作就不会影响它调用的应用程序
📁 开发与协作
- 版本控制 Version Control: 持续记录单个文件或一组文件变化的系统,可帮助开发人员快速行动并保持效率,同时存储更改记录并提供解决冲突的工具
- 敏捷软件开发 Agile Software Development: 强调迭代开发和团队自组织,持续交付价值,快速响应变化,适应复杂需求
- 调试 Debugging: 故障是导致不正确或不符合预期结果的缺陷或问题,软件开发是一项复杂的活动,在不引入故障的情况下编写代码几乎是不可能的,调试是查找并解决故障以获得预期结果的过程或活动
- 左移 Shift Left: 在软件开发生命周期的早期阶段(将软件开发的生命周期视为一个从左到右执行的阶段线)实施测试、安全或其他开发实践,提前发现和解决问题,降低后期修复成本
🧬 云原生理念
- 云原生应用程序 Cloud Native Apps: 专门设计用于利用云计算创新能力的应用程序,可轻松地与云架构集成,充分利用云的资源和可伸缩性功能
- 云原生技术 Cloud Native Tech: 也称为云原生技术栈,使组织能够在公共云、私有云和混合云等现代动态环境中构建和运行可伸缩的应用程序,充分利用云计算的优势
- 多租户模式 Multitenancy: 共享同一个软件,为每个租户提供一个隔离(工作数据、设置、凭证列表等)的环境,同时为多个租户提供服务