当前位置:网站首页>人尽皆知的云原生,到底是大势所趋还是过度炒作?
人尽皆知的云原生,到底是大势所趋还是过度炒作?
2022-08-02 20:13:00 【Developer 小马】
当今云原生可谓是如火如荼,起码在互联网领域它是人尽皆知,那么云原生到底是时代的大势所趋还是过度炒作概念呢?相信当你看完这篇文章,心里会有答案。
传统云平台 VS 云原生
要知道,在云原生之前,IT/互联网领域中也是存在着云平台的,即基于虚拟化的传统云平台
,典型的有 Openstack 等。在传统方式下,如果说一个企业生产应用,需要部署 100 台应用实例,那么它就得准备 100 个虚拟机,然后再将代码部署上去,最后为应用构建高可用的方案。这样无论生产还是运维耗费精力无疑都是巨大的。
了解过云原生的都知道,有一个核心概念容器
,而传统云平台与云原生之间必须要关注的少不了容器与虚拟机之间的区别
。
虚拟机即在宿主机/物理机的基础上装一个操作系统,操作系统之上部署 Hypervisor,由它再带起一个个承担应用的子系统。从这个层面来看它是很复杂的,如果系统出现了某些问题,我们需要去检测宿主机、虚拟机乃至 Hypervisor。
而且虚拟机是模拟完整的操作系统,这当然也包括了硬件驱动等等,资源需求很大,一个物理机可以开放的虚拟机是有限的。当我们要部署一个应用时,需要考虑该应用在并发高峰时可能需要需要多少资源,创建虚拟机时按照资源的最大需求进行设定,以防止虚拟机无法支撑应用。但在大部分时间内应用的资源需求并不会一直处于高峰,这就造成了资源利用率很低。
除此之外传统云平台其他各方面的缺陷也相当明显,诸如:
- 业务代码与基础架构割裂
- 虚拟机构建和业务代码相互分离
- 基础架构后期维护风险大
- 基础架构无法感知业务状态,升级维护困难
- 缺少自动化
- 需要自己构建应用的高可用方案
- 扩容缩容难
- 故障转移难
可见传统的云平台无论对于任何的操作、变更都是非常困难的,需要耗费大量的成本和人力。
而云原生正是为解决此问题而生,它鼓励在公有云、私有云、混合云等动态环境中构建和运行规模化应用,可以说云原生是一种思想,是技术和企业管理方法的总结
。从技术层面来看:
- 应用程序从设计之初就在为上云而做好了准备
- 云平台基于自动化体系
云原生包含的核心技术栈有应用容器化封装
、服务网格
、不可变基础架构
、声明式 API
等。这些技术不仅提升了系统适应性、可管理性、可观察性,使开发者可以以最小成本进行频繁和可预测的系统变更,而且还可以提升部署维护速度和效率,助力业务的快速成长。
此外,在使用云原生之后,运维工程师和开发工程师也不会再那么界限清晰,因为大家面向的都是同样的 API。
传统下的企业开发、测试、运维都是相互割裂的状态,云原生则将企业开发和运维部门很好地结合起来。所提倡的DevOps
理念打破了开发、测试、运维部门之间的隔阂,让整体的应用交付变得更快速。从技术角度看,DevOps 涵盖了应用的开发、编译、构建、测试、打包、发布的自动化流程,并包含了很多 DevOps 工具链。
云原生核心项目概览
云原生很复杂,它本身是一个很大的生态,包含着几十个甚至上百个项目。
这其中最重要的就是 Kubernetes
,它主要的作用是集群管理(node)和作业调度(pod),作业调度之后, k8s 通过CSI
、CNI
、CRI
将应用以容器的方式运行起来。
那么对外暴露什么样的服务?别人如何访问该服务呢?k8s 本身是通过 kube-proxy
去做东西向的流量的负载均衡和服务发现的, 他还包含了 CoreDNS
也就是集群内的域名服务器以及 Istio
等集群服务管理软件。
而 k8s 中产生的数据则专存于分布式数据库etcd
中。
云原生技术演进
云原生本身其实是为微服务
而服务的,在应用架构上的演进由最开始的单体应用,到分层架构,到 SOA,再到当前流行的微服务。
每一个微服务都是一个独立的部署单元,比如说这几个微服务由这个团队负责,那几个微服务由那个团队负责,团队只需关注自己负责的业务即可,不会受全局的影响。微服务也有着启动速度快、资源需求小、部署灵活等诸多优点。
此外云原生也不断在朝着应用规模化
、计算边缘化
、部署多样化
、应用复杂化
的趋势发展。
- 应用规模化:从概念验证到大规模生产应用
- 计算边缘化:以数据中心为主的云计算到面向边缘节点的边缘计算
- 部署多样化:私有云和公有云混合的多云和混合云
- 应用复杂化:简单的无状态应用到复杂的有状态应用管理
还有更重要的局部技术革新,如基于 XDP 和 eBPF 实现的网络加速和应用隔离、基于 WebAssembly 实现的个性化 proxy plugin、不断增强的安全保证手段等等。
相较于传统云平台,云原生有着得天独厚的诸多优势。毫不夸张的说,云原生是这个时代的产物,也必将会引领一个新的时代。
那么你心目中的云原生是什么样的呢?
边栏推荐
- [21 Days Learning Challenge] Bubble Sort and Insertion Sort
- Bena's life cycle
- OP-5,输入/输出信号范围-一信号处理能力
- 软件测试的流程规范有哪些?具体要怎么做?
- 特拉维夫大学 | Efficient Long-Text Understanding with Short-Text Models(使用短文本模型进行高效的长文本理解)
- pytorch的tensor创建和操作记录
- How to use windbg check c # a thread stack size?
- setup语法糖 defineProps defineEmits defineExpose
- Informatics Olympiad All-in-One (1259: [Example 9.3] Find the longest non-descending sequence)
- js如何获取浏览器缩放比例
猜你喜欢
LeetCode 622 设计循环队列[数组 队列] HERODING的LeetCode之路
SQL Server安装教程
4 kmiles join YiSheng group, with more strong ability of digital business, accelerate China's cross-border electricity full domain full growth
.NET performance optimization - you should set initial size for collection types
KDD 2022 | 深度图神经网络中的特征过相关:一个新视角
谷歌竞价机器学习如何去理解?
Common tools and test methods for interface testing (Introduction)
【手撕AHB-APB Bridge】~ AMBA总线 之 APB
Translate My Wonderful | July Moli Translation Program Winners Announced
The time series database has been developed for 5 years. What problem does it need to solve?
随机推荐
EasyExcel实现动态列解析和存表
Axure9的元件用法
4 kmiles join YiSheng group, with more strong ability of digital business, accelerate China's cross-border electricity full domain full growth
即时通讯开发移动端网络短连接的优化手段
2022年金九银十,Android面试中高频必问的问题汇总
网上那么多教人赚钱的方法,但是你实际上是靠什么赚钱的呢?
LeetCode 622 设计循环队列[数组 队列] HERODING的LeetCode之路
模板的进阶
二丙二醇甲醚醋酸酯
Common tools and test methods for interface testing (Introduction)
OpenCV开发中的内存管理问题
软件成分分析:华为云重磅发布开源软件治理服务
How to use windbg check c # a thread stack size?
引用类型 ,值类型 ,小坑。
【SLAM】DM-VIO(ros版)安装和论文解读
js如何获取浏览器缩放比例
Golang source code analysis: time/rate
成为黑客不得不学的语言,看完觉得你们还可吗?
[21 Days Learning Challenge] Bubble Sort and Insertion Sort
Helm基础知识