云原生:一文读懂核心技术栈与演进路径

B站影视 内地电影 2025-05-30 08:31 2

摘要:最近,听老板说只要碰到一些大型项目,客户都要求使用云原生技术,让我们在技术储备上也要能跟得上。本文简单讲讲云原生的技术栈以及如何学习。

最近,听老板说只要碰到一些大型项目,客户都要求使用云原生技术,让我们在技术储备上也要能跟得上。本文简单讲讲云原生的技术栈以及如何学习。

云原生(Cloud Native)近些年一直都是软件开发领域的热门话题之一。

什么是云原生?

云原生是一种设计和运行软件的方法论,核心思想是充分利用云平台提供的弹性、自动化和按需付费等特性,让应用更易于开发、部署和运维。

关于云原生的概念,可以看看《简单聊聊云原生》。

很多人会问:我单体应用用得好好的,为什么要转向云原生这么复杂的架构呢?实际上,每一种新技术的出现都是为了解决已有问题,但同时也会引入新的挑战,权衡之下,如果利大于弊,就会采用。

下面我们来一步步分析,看看云原生技术是如何演变而来的。

目前主流的云原生技术栈(以 Pivotal 和 CNCF 技术栈为基础)包括:

微服务(Microservices)

容器(Containers,如 Docker)

容器编排(Container Orchestration,如 Kubernetes)

服务网格(Service Mesh)

声明式 API(Declarative API)

不可变基础设施(Immutable Infrastructure)

持续集成和持续交付(CI/CD)

DevOps

无服务器架构(Serverless)

对企业来说,降本增效非常重要,面对复杂的系统,使用云原生技术可以达到这个目的。

降低成本:通过容器技术,能提高资源利用率,降低整体成本。

提升效率:云原生架构下的部署更快速、更灵活,明显提升开发和交付效率。

提高业务承载力:云原生能快速扩容,应对高并发业务需求。

提升稳定性:健康检查和不可变基础设施让系统更稳定、更可靠。

1、微服务

1967 年,计算机科学家梅尔文·康威(Melvin Conway)提出过一个观点:

组织的设计(包括其沟通结构和团队划分)会影响其生产的系统架构。具体来说,软件的架构往往反映了组织的沟通结构。

这就是著名的康威定律。

最初,软件往往是以单体应用的方式存在。当系统规模和业务复杂度增加时,组织就可能进行拆分,每一个小团队负责一个模块,这些团队甚至可能是分布式的。

组织的变化必然会让单体应用慢慢向微服务进行转变。不变不行啊,不然沟通成本太高了。

如果组织没有发生变化,强行去进行微服务拆分,会发现代码的管理、维护会变得复杂(即便是用上自动化工具),所以说有什么样的组织就有什么样的架构。

微服务将应用拆分成多个小而独立的服务,每个服务可以独立开发、部署、扩展,从而大大提高了灵活性和可维护性。但随之也出现了服务间通信复杂、部署管理困难等问题。

之前写的几篇微服务相关的文章,供参考:

《微服务:我们需要从单体转到微服务吗?》

《微服务:事务管理》

《微服务:如何拆分服务》

《微服务:服务间通信概述》

2、容器化(Docker)

微服务早在 2011 年就被提出,但近些年才火起来,靠的就是容器技术的普及。

微服务越来越多,手动部署变得异常复杂。Docker 这类容器技术的出现,使发布的程序和依赖的中间件能被封装到容器中,极大地简化了部署过程。

开发人员无需关注底层环境,容器的运行环境高度一致。在这之前,经常会有一些莫名其妙的问题,最后查出的原因就是各种环境配置的不一致导致的。

然而,随着系统变得复杂,服务拆分的多,还要上各种中间件,容器数量就会越来越多,就会带来容器管理的问题,单靠 Docker 已经无法应对。

3、容器编排(Kubernetes)

容器编排技术随着容器化应用规模的扩大而诞生,主要是为了解决容器在生产环境中批量运行和管理的复杂性问题。

最初,Docker 可以很好地处理单个或少量服务,但随着企业应用转向微服务架构,管理大量容器变得困难,仅仅靠人工的方式肯定会错漏百出。

为了解决这些问题,出现了容器编排技术,简单的有 docker compose ,测试环境和要求不高的生产环境中经常会用到。

功能强大的有 Kubernetes ,提供自动部署、服务发现、负载均衡、健康检查、自动扩缩容等功能。

不过,容器编排技术的引入也会带来新的问题,包括系统复杂性提升、配置管理繁琐和安全性挑战。

为应对这些问题,逐渐发展出了新工具,如 Helm、Rancher、OpenShift、Istio、Prometheus、Grafana 等。

4、服务网格(Service Mesh)

随着微服务规模扩大,服务间通信的管理要求变得更高,仅依靠 Kubernetes 等容器编排平台难以全面、高效地实现服务通信治理功能,就需要服务网格出场了。

服务网格(Service Mesh)是服务间通信的基础设施层。

它通过在微服务之间注入轻量级网络代理,统一处理服务发现、负载均衡、安全认证、流量控制、故障恢复等功能,非侵入式地解耦服务治理与业务

来源:opendotnet

相关推荐