- 一、前言
- 二、大家对云原生的理解
- 三、云原生的产生
- 四、DevOps+持续交付+微服务+容器化的理解
- 五、云原生技术栈
-
六、怎么学习云原生呢?
- Ⅰ docker
- Ⅱ k8s
- Ⅲ KubeSphere
- Ⅳ Spring Cloud
- Ⅴ DevOps
- 七、部署实战
- 八、小结
一、前言
Metaverse )也在这波浪潮中应运而生。
一个公司新产品上线,也会在产品名前加上“云”。
如果一个产品不带着“云”,或者你不知道云原生。你就更不上时代步伐了。
想必大家跟我一样好奇,会去网上搜罗各种云原生相关文章来看。看完文章之后呢,完全就是雾里看花,云里雾里的,对云原生概念更是一知半解。
事后想想,其实也没必要。就像自己关注的博主“三太子敖丙”经常说的,你知道的越多,不知道的越多
二、大家对云原生的理解
下面列举一些网友的说法:
- 云原生是基于云计算,以容器、微服务、DevOps等技术为基础建立的一套云技术产品体系
- 云原生是Cloud +Native,将云和原生分开,就是原生应用上云的一整套解决方案
- 云原生是指应用上云后可以 利用和发挥云平台的弹性+分布式优势
- 云原生是一种架构设计模式,帮助我们解决传统应用存在的各种问题
三、云原生的产生
目前比较权威的定义主要来自Pivotal公司和云原生计算基金会 ( CNCF )
- Pivotal公司是云原生应用的提出者
- 2015年,提出云原生应用架构需要具有:12因素、微服务、 自敏捷架构、基于API协作、扛脆弱性 的特性
- 2017年,Pivotal对云原生概括为4个要点:DevOps+持续交付+微服务+容器
② CNCF的定义
- 起初CNCF对云原生(Cloud Native)的定义包含以下三个方面:应用容器化、面向微服务架构、应用支持容器的编排调度
- 2018年,随着云原生生态的不断壮大,CNCF对云原生进行了重新定位 。 云原生技术有利于各组织在公有云、私有云和混合云等环境中,构建、运行和可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。
四、DevOps+持续交付+微服务+容器化的理解
DevOps
流程实现自动化。 DevOps是一个敏捷思维,是一个沟通文化,也是组织形式,为云原生提供持续交付能力。
持续交付
而持续交付,正是要解决这个传统模式的更新。做到不停机更新,开发版和稳定版本并存。 避免重复性劳动,减少人工操作的错误; 更频繁地迭代 更新;提高产品质量;
微服务
单体应用,单体应用经常会面临这么一个问题,这个功能出问题了,怎么另外一个功能也用不了了。作为开发运维人员,我们经常就会面临这样的灵魂拷问: 为啥这两个会互相影响?
耦合度,也就是我们经常听到的解耦。不把所有鸡蛋放到一个篮子里,把一块蛋糕分成若干份低耦合的小块,各块负责不同的功能。
容器化
而Dockers作为一个“集装箱”的身份出现,可以把应用需要的环境,各种配置文件、运行文件打包隔离运行,以保证我们开发出来的程序,不管部署到那台服务器上,都不会因为缺少东西,或者环境问题而运行不正常。
五、云原生技术栈
下面是官网上找的一张图,真是森罗万象,看得我们眼花缭乱。
图片地址:
【 https://landscape.cncf.io/?category=app-definition-and-development&grouping=category 】
六、怎么学习云原生呢?
作为一名Java攻城狮,该如何入手云原生呢?
Docker+k8s+KubeSphere+Spring Cloud +DevOps 。当然了,这个不是我说的。前面B站看云原生视频的时候,雷神大佬总结的。
Ⅰ docker
① 什么是docker?
官方解释:Docker is the world’s leading software containerizatior platform。
②解决什么问题?
这里就不赘述了,在这里在补充那么一点。docker也属于一种虚拟化技术。它是从传统硬件层面上的虚拟化发展而来的。相比传统虚拟化技术,容器技术节省了更多性能。
Ⅱ k8s
k8s 是 Kubernetes 的缩写,首字母K和尾字母s中间共8个字母,为了好记,k8s便诞生了
③ k8s有哪些特性?(我太懒了,下面完全是从官网拿过来的)
-
服务发现和负载均衡
-
存储编排
Kubernetes 允许你自动挂载你选择的存储系统,例如本地存储、公共云提供商等。 -
自动部署和回滚
你可以使用 Kubernetes 描述已部署容器的所需状态,它可以以受控的速率将实际状态 更改为期望状态。例如,你可以自动化 Kubernetes 来为你的部署创建新容器,删除现有容器并将它们的所有资源用于新容器。 -
自动完成装箱计算
Kubernetes 允许你指定每个容器所需 CPU 和内存(RAM)。 当容器指定了资源请求时,Kubernetes 可以做出更好的决策来管理容器的资源。 -
自我修复
Kubernetes 重新启动失败的容器、替换容器、杀死不响应用户定义的 运行状况检查的容器,并且在准备好服务之前不将其通告给客户端。 -
密钥与配置管理
Kubernetes 允许你存储和管理敏感信息,例如密码、OAuth 令牌和 ssh 密钥。 你可以在不重建容器镜像的情况下部署和更新密钥和应用程序配置,也无需在堆栈配置中暴露密钥
Kubernetes 可以使用 DNS 名称或自己的 IP 地址公开容器,如果进入容器的流量很大,Kubernetes 可以负载均衡并分配网络流量,从而使部署稳定。
Ⅲ KubeSphere
② 官方地址
Ⅳ Spring Cloud
① Spring Cloud 是什么?
② Spring Cloud 优缺点
- Spring Cloud 包含了微服务架构的方方面面
- 约定优于配置,基于注解,没有配置文件
- 轻量级组件,Spring Cloud 整合的组件大多比较轻量级,且都是各自领域的佼佼者
- 开发简便,Spring Cloud 对各个组件进行了大量的封装,从而简化了开发
- 开发灵活,Spring Cloud 的组件都是解耦的,开发人员可以灵活按需选择组件
项目结构复杂,每一个组件或者每一个服务都需要创建一个项目
Ⅴ DevOps
①DevOps是什么?
是一系列做法和工具,可以使 IT 和软件开发团队之间的流程实现自动化。使我们可以快速、安全、可靠地将内部软件部署到生产环境。
七、部署实战
Ⅰ 项目推荐
如果你也心动了,那就赶紧行动起来吧。
它就是RuoYi,相信你肯定也听过了。随着RuoYi项目的不断发展,已经衍生出不少版本,从一开始的单体应用到前后端分离版本、微服务版本
RuoYi。
项目地址:https://gitee.com/y_project
RuoYi-Cloud微服务版本
Ⅱ 项目架构
Ⅲ 实战部署
文档地址:http://doc.ruoyi.vip/ruoyi-cloud/
八、小结
云原生 的一些理解,云原生简单的说就是**DevOps+持续交付+微服务+容器 **(我又再次把这几个词搬过来了(●'◡'●)。
云原生 更加清楚了呢。当然了,我也是小白,也正在努力学习中,有什么说的不对的地方欢迎大家指出来,大家共同学习哈。