文章开头,简单的自我概述一下:作为一个对云原生知识小白的笔者来说,希望通过学习记录分享的方式从0到1进行学习,也同样希望大家都在一起分享讨论。
这是一句写给自己,也是赠予读者的话:时刻保持自己的竞争力,只要想学,一直都不晚~
一、前置概念
1.1 虚拟机
虚拟机想必大家都不陌生也应该很多读者都用过,其实就是可以像真实机器一样运行程序的计算机的软件实现(可以说它是一种特殊的软件),它可以在计算机平台和终端用户之间创建一种环境,而终端用户则是基于这个软件所创建的环境来操作软件。
简言之,虚拟机是一种软件,能模拟一台虚拟的计算机,让用户觉得自己正在一台正常的计算机上操作。
1.2 容器
容器听字面意思就是应该都明白,就是一种用来装东西的呗,那放到了代码的角度来看,其实就是对代码项目进行打包,将代码与其依赖的资源打包在一起封装在一个隔离的环境内运行,同时它可以使用与服务器内其他容器相同的系统资源与操作系统。
由于没有在运行独立的操作系统任务上浪费资源,容器化允许更快速、更有效地部署应用程序。
1.3 对比
| 类目 | 虚拟机 | 容器 |
|---|---|---|
| 大小 | 通常GB | MB即可 |
| 启动速度 | 慢 | 快 |
| 虚拟化 | 运行几十个虚拟机 | 可以承载上千容器 |
| 交付&部署 | 受操作系统、环境变量限制 | 开发、测试、生产一致 |
| 性能 | 损耗大 | 损耗低 |
二、云原生
何为云原生?
云原生这个词其实听起来听抽象的,当别人问你说你是干啥什么的,你说我是搞云原生的,他可能又会问你说:说人话,这时候你就又开始支支吾吾了。
从云原生的技术出发,云原生的关键技术又可以分为:
-
微服务架构
-
随着项目的体量越来越大,单一架构的年代早已不在,"微先生"和"分先生"就犹如当年的德赛两位先生一样在如今的互联网时代被人们高呼着,然而所谓的微服务,其实就是服务拆分,降低服务与服务之间的耦合性,俗称:高内聚低耦合。
-
-
容器
-
所谓容器,上面也介绍到了,其实可以理解是微服务的载体,提供了一个程序开发-测试-打包上线全流程的解决方案。Docker便是容器的代表。
-
-
容器编排
-
解决了微服务在生产环境部署的问题
-
-
服务网络
-
解决了服务的之间的通信
-
-
声明式API
-
声明式API的存在可以让系统更加健壮。 命令式API:即可以发出让服务器执行的命令;声明式API:即可以声明期望的状态。使用命令式方案,我们告诉机器怎么去做我们想要的。使用声明式方案,我们告诉它我们想要什么。
-
-
不可变的基础设施
-
设施提升发布效率,方便快速扩展;
-
-
DevOps
-
缩短研发周期,增加部署频率,更安全地方便
-
说到这里,云原生的大概就是: 应用因云而生,应用被设计在云上以最佳的方式运行,发挥云的优势。
三、总结
一个完整的云原生应用:docker 应用打包、发布、运行,Kubernetes 服务部署和集群管理,Istio 构建服务治理能力。以“资源”为中心的云,将成为“底层基础设施”,利用云原生以“应用”为中心赋能自身业务。
本文有参考腾讯技术工程文章。欢迎交流点评。