来源 | 无敌码农

责编 | 寇雪芹

头图 | 下载于视觉中国

云原生(Cloud Native)是最近技术圈一个比较火的名词,相信大家或多或少都听说过。不过对于大多数普通研发朋友来说,"云原生"这个词多少可能还是有些陌生,以至于刚开始听到这个词时可能还会一脸懵逼的问"这到底是一个什么技术,我用过吗?"这样的问题。

其实这并不奇怪,因为对于绝大多数普通开发者来说,我们大部分时间都是在别人构建的基础设施里专注于业务代码的开发,而很少关心业务应用运行所依赖的基础设施环境,但这恰恰也是构建云原生应用的核心意义所在。在今天的文章中,就和大家聊一聊关于云原生的话题!

云原生的概念

什么是云原生?对于这个问题我们需要理解,云原生并不是指某一项具体的技术,而是一组技术体系、概念及系统设计原则的集合。例如我们常讨论的微服务架构、Kubernetes容器编排、Devops等内容都是云原生体系的组成部分。

从这个角度看,对于目前已经实现了云服务部署、Spring Cloud微服务架构体系、Kubernetes容器化部署、且构建起了一套自动化发布系统的公司来说,事实上就已经是在践行云原生架构理念了。所以,你看是不是很多公司其实都已经在实施云原生架构了呢?

根据CNCF(云原生计算基金会)的官方描述,云原生技术是指有利于在公有云、私有云或混合云等新型动态环境下,实现应用可弹性伸缩部署的技术体系。云原生的代表技术主要包括容器、服务网格、微服务、不可变基础设施及声明式API。利用这些技术可以构建出容错性更好、更易于管理和观察的松耦合系统,再加上一些可靠的自动化技术及完备的监控预警体系,云原生技术将使开发人员能更快速、轻松地迭代和交付软件系统。

所以从上述描述看,云原生技术实际上并不是突然才流行起来的概念,而是随着云计算、微服务架构、服务网格等分布式应用架构技术普及流行,以及在以Docker、Kubernetes为代表的容器化技术的推动下,逐步被业界所认可的一种系统架构理念及设计原则的抽象总结。

云原生技术图谱

这里我总结了一份关于云原生架构的技术图谱供大家参考,如下图所示:

如上图所示,你会发现所谓的云原生简直就是一个技术大杂烩,它几乎囊括目前大部分流行的后端技术,甚至还延伸到了AI、机器学习、边缘计算等领域。但从实际应用场景来说云原生架构主要特征还是体现在云端环境、微服务架构、服务网格、Devops自动化交付、容器化部署这几个方面。

云端环境就是要使用云服务器,对于大部分公司来说就是使用阿里云、腾讯云之类的公有云服务来部署应用,而不是自己在额外维护一套复杂服务器机房。这样做的好处就在于利用云服务的弹性及分布式优势,可以大大降低运维成本,并且提升服务的稳定性。

而面向微服务的架构,能将原先耦合度高的单体系统,在遵循软件“高内聚、低耦合”设计原则的前提下,以独立业务能力为边界拆分为一个个原子系统。这样做的好处是,每个子系统都可以独立交付部署,从而能实现更敏捷的软件迭代效果。目前以Spring Cloud为代表的微服务技术,几乎已成为事实上的软件构建标准;而以Istio、Linkerd为代表的下一代服务网格技术也在快速发展,这一切都为云原生架构理念的普及作了有效地铺垫。

关于Devops,它强调的是以开发运维的视角,去构建一套高效完备的CI/CD流程,并通过自动化构建工具及发布系统,来实现软件生命周期的管理。从而使得普通开发人员,能够更快、更频繁地交付更加稳定的软件代码。例如我在本专栏发表的<<Kubernetes微服务自动化发布系统>>实际上就是一种Devops思想的具体实践案例,感兴趣的朋友可以参考下。

此外基于Kubernetes的容器化编排技术,已经事实上成为微服务运行的标准基础架构环境,也正是Kubernetes的流行,才真正推动了云原生架构理念的普及,Kubernetes可以说就是云原生架构的核心承载平台。关于Kubernetes的基本原理及具体实践本专栏也有一些文章可供参考,感兴趣的朋友可以阅读下。

总结

以上内容给大家大致介绍了下云原生的概念,并总结了目前云原生所涉及的主流技术栈图谱。从宏观上看云原生架构是一个非常庞大的体系,它几乎能包含目前软件后端技术领域的方方面面,但从细节上看它却又是我们现阶段工作中都多少能接触到的技术,例如Spring Cloud微服务、服务熔断限流、Kubernetes容器编排等等。

所以从某种程度上讲,云原生是一个抽象又具体的存在。它不是一个具体的产品,而是一套技术体系和一套方法论,随着围绕着云原生架构的各类开源技术的进一步发展,云原生技术体系必将成为主流,进而影响到每一个技术人员、每一个企业和行业。

以上就是想和大家分享的全部内容,希望对大家有所帮助!

参考资料:

https://jimmysong.io/awesome-cloud-native

https://landscape.cncf.io/

https://jimmysong.io/awesome-cloud-native/#tracing


关于 Devops 技术,我们还有

如何搞定 K8S 微服务自动化发布系统

如何部署一个Kubernetes集群

Docker私有镜像仓库是什么?

上手 Docker 容器,不应该是个问题

什么魔力让 Docker 一发不可收拾?

更多精彩推荐
☞5G、射频、奥特曼,这仨有联系吗?☞再见 Nacos,我要玩 Service Mesh 了!☞急!CPU 被挖矿,该怎么找进程?☞立即生效!帕特·基辛格卸任 VMware 所有职务☞谈“云”色变?近80%企业曾遭受数据泄露
点分享点收藏点点赞点在看

云原生除了K8S、微服务,还有...?相关推荐

  1. 云原生时代,微服务如何演进?

    简介:云原生时代,微服务和云原生会产生怎样的关系?云原生时代的微服务又有什么特点?当前有哪些比较活跃的微服务项目?阿里巴巴资深技术专家李响从微服务的生命周期.流量治理.编程模型以及可信安全4个方面,分 ...

  2. AI TALK | 云原生时代的微服务架构与关键技术

    随着云原生与微服务技术的逐步发展,业界也逐步构建出一整套比较完整的微服务技术体系. 面向云原生时代,微服务架构是从业人员绕不开的一个话题,腾讯云AI&腾讯优图的内容风控安全审核能力也与微服务技 ...

  3. 快速了解云原生中的微服务应用(内含福利)

    [摘要] 云原生应用时代,如何集中团队力量在业务场景设计和实现,从而最大化软件研发ROI?如何利用云服务厂商,高效率低成本的开发高性能高可靠的微服务应用? "未来的软件一定是生长于云上的&q ...

  4. 云原生架构下微服务最佳实践-如何拆分微服务架构

    转自: https://mp.weixin.qq.com/s?__biz=MzI3MzEzMDI1OQ==&mid=2651821066&idx=1&sn=8475f813a8 ...

  5. 【云原生】了解微服务低代码平台

    目录 一.星链简介 二.那么研发挑战有哪些挑战? 三.星链目标 1.设计原则 2.关键技术 3.业务价值 四.VMS:简单灵活的编程模型 五.Serverless:计算资源模型 六.星链典型应用场景 ...

  6. istio概述,与微服务、云原生、k8s的关系

    1.1简单介绍istio 与k8s紧密结合,适用于云原生场景,service mesh形态,服务治理的开放平台 服务治理,包括:连接.安全.策略执行和可观察性. 连接:通过配置的流量规则控制服务间的流 ...

  7. Blazor+Dapr+K8s微服务之基于WSL安装K8s集群并部署微服务

     前面文章已经演示过,将我们的示例微服务程序DaprTest1部署到k8s上并运行.当时用的k8s是Docker for desktop 自带的k8s,只要在Docker for desktop中启用 ...

  8. k8s + 微服务,王炸!

    最近有朋友说,年底公司业务量增大,又拆分出来了很多微服务模块,对于微服务的管理.资源编排以及调度策略花费的精力成几何倍数的增长.看到微服务+k8s的云原生架构貌似能解决这些问题,所以想问下.我把对他的 ...

  9. 云原生架构下日志服务数据预处理

    简介:本篇实践将以某家国际教育机构为例,为大家详细介绍云原生架构下日志服务数据预处理以及对应的解决方案和最佳实践操作手册,方便用户快速对号入座,解决云原生架构下的常见日志难题. 直达最佳实践:[htt ...

最新文章

  1. 每日一皮:程序员最讨厌的四件事!
  2. python自动化测试视频教程_精品系列-悠悠Python自动化测试学习视频,资源教程下载...
  3. 全球及中国冠状动脉内支架行业运行现状与十四五发展状况分析报告2022版
  4. part.write java_小白向:web中利用request.getPart()上传文件到服务器
  5. Oracle PL/SQL 非预定义异常、自定义异常处理、RAISE_APPLICATION_ERROR
  6. 用java写的常见排序
  7. mysql cmd 实时监控_MySQL实时监控工具orztop的使用介绍
  8. C# JsonHelper
  9. bc -- The Linux Command-line Calculator
  10. 浏览文件神器!且可以计算所有文件代码的行数!
  11. opencv 毛星云c++版本复习
  12. 度量衡计算工具_单位换算器|度量衡计量单位换算转换器下载v1.0 官方版 - 欧普软件下载...
  13. mysql binlog 查看pos点_如何寻找主库binlog和pos点
  14. SystemInfo获取系统参数
  15. LZY的CQU水下机器人视觉学习笔记(一)
  16. 【Nodejs】448- 深入学习 Node.js Buffer
  17. 查找SSH Key路径
  18. iphone 传android,安卓和苹果手机怎么互传文件_安卓与苹果手机之间互传文件的方法教程_3DM手游...
  19. Maven - 客户端 Nexus 配置
  20. 2020年9月23日 晴(补2020年9月22日 晴)

热门文章

  1. c#endread怎么打印出来_NetworkStream.EndRead(IAsyncResult) 方法 (System.Net.Sockets) | Microsoft Docs...
  2. python第八周小测验_Python语言程序设计第2周测验+练习题复盘
  3. java的mybatis批量更新_mybatis批量更新的问题
  4. matlab jp2格式,JP2文件扩展名_JP2是什么格式_JP2文件怎么打开-文件百科
  5. 突发,这个国家进入紧急状态!数十年来最严重经济危机、每天停电13小时!外交部发出提醒...
  6. 知网首篇被引破万论文诞生!作者是曾两次“被迫转行”的他
  7. 数学学得好是一种怎样的体验?
  8. 假如不穿宇航服,人在各大星球能活多久?
  9. 关于机器学习,这里有一份权威入门指南
  10. 泳池里到底有多少排泄物?