总结一下截至目前为止学习到的云原生相关技术,复习及铺垫未来学习方向.
1. 云原生(Cloud Native)是什么
https://github.com/cncf/toc/blob/main/DEFINITION.md#%E4%B8%AD%E6%96%87%E7%89%88%E6%9C%AC
CNCF(云原生计算基金会)定义:
云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。
这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。
云原生计算基金会(CNCF)致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。
从字面意思理解: 应用原生被设计为在云上以最佳方式运行.
个人的理解: 在云平台时代,各种中间件,基础服务都在云上运行,而开发应用不在过多考虑这些基础应用,而是更多专注于业务.换句话说,云原生应用从开发到部署都是基于云产品开箱即用的特性,充分利用云平台的分布式和可伸缩特性.
云原生是一整套体系,包含了从开发,部署到运维的完整技术栈.
2.云原生应用的特点
云原生应用基于云平台产生,具有云平台产品的通用特性.
- 弹性可伸缩 根据业务需求,业务量按需弹性扩展应用
- 快速部署 基于云平台可快速发布,快速应用于生产
- 分布式
- 高效持续迭代
- …
总的来说,对于传统应用,云原生应用从诞生就可以直接在云上运行,而无需考虑服务器,中间件,第三方组件等资源.
3.云原生技术概述
云原生是一整套技术体系,涵盖了从开发到部署运维.
核心元素分为四块
3.1 微服务
微服务技术:
- SpringBoot
- SpringCloud
- SpringCloudAlibaba
- Dubbo
- …
3.2 容器化
- Docker容器化技术
- Kubernetes容器编排技术
3.3 DevOps
dev就是开发,ops就是运维
DevOps就是构建从开发到运维的自动化流程技术
DevOps也是一个技术栈,例如git,Jenkins,无
3.4 持续交付
以下来自百度百科,主要是我对这两个概念也有一点混淆,总感觉持续交付和DevOps是你中有我,我中有你的感觉
持续交付与DevOps的含义很相似,所以经常被混淆。但是它们是不同的两个概念。DevOps的范围更广,它以文化变迁为中心,特别是软件交付过程所涉及的多个团队之间的合作(开发、运维、QA、管理部门等),并且将软件交付的过程自动化。另一方面,持续交付是一种自动化交付的手段,关注点在于将不同的过程集中起来,并且更快、更频繁地执行这些过程。因此,DevOps可以是持续交付的一个产物,持续交付直接汇入DevOps。
硬分的话,我将DevOps看作自动化流程的技术,将持续交付看作一种概念,DevOps是一种实现.
4. 技术栈
梳理下云原生的技术栈
https://landscape.cncf.io/?category=app-definition-and-development&grouping=category
先搞一张官网技术栈原图:
怕不怕? 慌不慌?
总结下java里我目前用到的技术,以及需要学习的技术,之后不断补充
5. 云平台应用
云原生应用依赖于各种云平台产品,那么想要学习云原生,就也要学习云平台的应用,更利于云原生应用的开发部署.
以阿里云为例:
涵盖了大部分应用中间件.
6. 总结
云原生是未来开发的方向,加油,学无止境!