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