云原生(Cloud Native)是一个组合词,“云”表示应用程序运行于分布式云环境中,“原生”表示应用程序在设计之初就充分考虑到了云平台的弹性和分布式特性,就是为云设计的。
| 因 素 | 描 述 |
|---|---|
| 基准代码 | 一份基准代码,多份部署 |
| 依赖 | 显示声明依赖关系 |
| 配置 | 应用配置存储在环境中,与代码分离 |
| 后端服务 | 将通过网络调用的其他后端服务当作应用的附加资源 |
| 构建、发布、运行 | 严格分离构建、发布和运行 |
| 进程 | 以一个或多个无状态进程运行应用 |
| 端口绑定 | 通过端口绑定提供服务 |
| 并发 | 通过进程模型进行扩展 |
| 易处理 | 快速启动和优雅终止的进程可以最大化应用的健壮性 |
| 开发环境和线上环境一致性 | 尽可能保证开发环境、预发环境和线上环境的一致性 |
| 日志 | 把日志当作事件流的汇总 |
| 管理进程 | 把后台管理任务当作一次性进程运行 |
云原生关键技术:
-
容器:容器的基本思想就是将需要执行的所有软件打包到一个可执行程序包中,比如将一个 Java 虚拟机、Tomcat 服务器以及应用程序本身打包进一个容器镜像。
-
微服务:微服务是一种软件架构方式,我们使用微服务架构可以将一个大型应用程序按照功能模块拆分成多个独立自治的微服务,每个微服务仅实现一种功能,具有明确的边界。
-
服务网格:随着微服务逐渐增多,应用程序最终可能会变为成百上千个互相调用的服务组成的大型应用程序,服务与服务之间通过内部或者外部网络进行通信。需要管理这些服务的连接关系以及保持通信通道
-
DevOps:开发和运维是软件开发人员和 IT 人员之间的合作过程,是一种工作环境、文化和实践的集合,目标是高效地自动执行软件交付和基础架构更改流程。
-
不可变基础设施:指一个基础设施环境被创建以后不接受任何方式的更新和修改。
-
声明式API:负责描述一个事物想要达到的目标状态并将其提交给工具,由工具内部去处理如何实现目标状态。
参考文献:c.biancheng.net/view/9857.h… 这是我参与「第五届青训营 」笔记创作活动的第10天.