一文秒懂云原生

CSDN话题挑战赛第2期
参赛话题:云原生技术栈分享

在这里插入图片描述

云原生已成为当前互联网的基础设施,作为新一代互联网计算资源的基石,云计算支撑着互联网几乎所有的上层数据处理系统。它并不是指某一项具体的技术,而是一组技术体系、概念及系统设计原则的集合,从微服务架构、容器云、服务网格、声明式API,再到我们熟知的 Kubernetes(k8s)、docker、Devops 等都属于云原生的范畴。



一、什么是云原生

“云” 表示应用程序位于云(即云服务器)中,而不是传统的应用数据中心。“原生” 可以理解为 “土生土长”,指一出生便有这个大环境,如互联网原住民从一出生就有已经有互联网环境的存在。

云原生(Cloud Native)是基于微服务原理而开发的应用,以容器的方式进行打包。在运行时,容器由运行于云基础设施之上的平台进行调度。应用开发采用持续交付和 DevOps 实践。总结来说云原生就是基于云计算而来的技术,对云计算技术的不断精进和细化。

云原生架构则是开发云原生应用所用到的架构,核心有两点:一是应用要以微服务的方式进行构建、二是应用架构方式一开始就要面向容器云部署。

二、为什么要引入云原生

云原生对 IT 岗位的影响是全方位并且深入的,所以人人去学云原生也是必要的。

  • 技术栈:后端研发需要关注大量用到的技术,比如容器、微服务、Serverless、Paas 云服务等;
  • 分布式设计模式:云原生技术体系包含了大量已经存在的分布式设计模式;
  • 业务开发:云原生技术和云服务采用的越多,开发人员在非功能特性开发方面花费的经历就越少,从而有更多的时间关注业务本身的功能性设计;
  • 测试方式:传统是基于预测来设计测试案例的方式进行测试,这样效率太低,解决方式是利用主动故障注入和馄饨工程进行疲劳测试,真实模拟现实世界可能发生的故障;
  • 软件研发和运维流程:DevOps 和 DevsecOps 不仅要求企业做到安全的持续发布,还要求企业重新定义和规范开发人员接触的研发流程和工具,实现开发运维岗位一体化;

三、云原生包含哪些技术栈

1. DevOps

DevOps 是一组过程、方法与系统的统称,用于促进开发、技术运营、质量保障(QA)部门之间的沟通、协作与整合。可以理解为持续集成和持续交付,将软件生命周期过程中的需求分析到程序设计、开发、编译、构建、打包和部署,从测试环境到生产环境整个过程实现全部的自动化。

2. 容器云

容器云的核心有两个,一个是 Docker 容器、一个是 Kurbernetes 的容器资源调度和编排。容器本身是一个比虚拟机更轻量化的资源隔离单位。区别在于虚拟机是独享一个操作系统,而容器是架在操作系统之上的,多个容器可以共享操作系统。体积要比虚拟机小且创建、销毁、调度的速度也比传统虚拟机快。但容器本身是一个 Iaas 层的内容,需要结合 Kubernetes 来向上层 Paas 层提供服务能力。

3. 服务网格

服务网格就是一个去中心化的服务治理框架。在以往的操作中对微服务或 API 接口进行治理和管控时,一般会用类似于 esb 总线、API 网关的设施,将 API 接口注册和接入到 API 网关。API 网关本身是一个中心化的架构,所以所有的请求、流量都可以通过 API 网关,这时 API 网关就容易对流量进行拦截,然后对拦截的流量进行管控。而在去中心化的架构中就没有这种集中化的流量管控了,对于流量的拦截,会从 esb 总线或者 API 网关下沉到各个微服务当中,这时需要在微服务端增加一个代理包,通过代理包做流量拦截和流量管控。

4. Serverless 无服务器架构

“无服务器” 即几乎不接触 IT 基础设施。要知道云原生的核心就是要实现从资源到服务不断的向上抽象,在这个抽象的过程中 IT 基础设施的接触则会越来越少,接触更多的是各种技术服务能力。这些技术服务能力在 Serverless 架构中称为 Baas 后端能力及服务。

5. 微服务

传统的大的单体应用拆分为更小的组件或者模块,这个组件或者模块就叫微服务。拆分为纵向拆分,从底层的 IT 基础设施到数据库,到应用中间件,再到软件程序部署包都能做到完全独立,可以单独的进行需求设计、开发、打包和部署,实现各个微服务之间一个彻底的松耦合。同时各个微服务之间又能够通过轻量的 HTTP rest 接口进行交互和协同。总结来说微服务的核心为两点:大的单体拆小、拆小的微服务之间通过接口进行交互和协同。

四、总结

距字节跳动 | 火山引擎副总经理张鑫介绍,云原生为程序员带来的首先是编程范式的改变,以往从开发到编译、测试、发布,都有着一整套的流程和体系,云原生的到来则定义了一种新的规范,程序员就需要掌握一种新的技能。其次也是最重要的就是思维模式的改变,以前写软件会想着怎么把他运行在一个 Server 服务器上,k8s 云原生出现以后从一开始设计的时候就需要考虑到未来将它运行到一个可扩展性、可弹性自动化管理的云端。

云原生对 IT 岗位的影响是全方位并且深入的,所以人人去学云原生也是必要的。

猜你喜欢

转载自blog.csdn.net/weixin_53072519/article/details/126954863