构架的演进|学习笔记

简介: 快速学习构架的演进

开发者学堂课程【建立 Serverless 思维:构架的演进】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/644/detail/10715


构架的演进

内容介绍

一、应用架构的演进

二、云原生

一、应用架构的演进

1、单体架构:

(1)主要应用于十多年前

(2)部署形式:一台服务器加一个数据库;

(3)缺点:一是当这个服务器出现故障时会导致整个服务无法使用,这是一个可溶性风险,二是当业务增长以后,服务流量变大,一台服务器无法支撑整个服务

(4)解决方法:一是退距伸缩,代价比较高昂,而且会有瓶颈,二是水平伸缩。由于水平伸缩会更好,所以架构会演进成单体架构上的水平伸缩的形式。

image.png

2、单体架构(水平伸缩):

(1) 部署形式:通常会在流量入口添加一个负载均衡,在均衡下加入更多的服务器;

(2)优点:可以解决以上两个问题,一是当一台服务器出现故障时,由于有更多的服务器,不会导致整个服务的不可用,二是当流量上升时,原本的一台服务器不足以支撑的问题,由于有了更多的服务器也就得以解决,因此这一种基于单体架构上的水平伸缩会给整个架构提供一个更好的可溶性保障;

(3)缺点:单体架构上去做一些研究时,随着研发会出现研究人员越来越多,研究人员之间的冲突会加剧,因为单体架构下面的代码是没有明确的物理学边界的,所以通常引入微服务架构。

image.png

3、微服务架构:

(1)优点:能够帮忙解决的问题,一般来说团队变大以后,研究人员为了更好的进行研发并做一些开发、测试、部署、运维的一些工作,就会把一个架构拆分成以下样式。

(2)缺点:微服务架构下的分布式问题变为默认问题,由此为了服务与服务之间进行通讯,分布式会引入一些新的如GRPC、DUBBO等一些其他协议进行通讯,还会引入分布式缓存如Redis、分布式追踪服务等,这些都是分布式的一些转型。

除了分布式环境带来的挑战之外,微服务架构给运维环境也带来了新的挑战。研发人员原本只需要运维一个应用,现在可能需要运维十个甚至更多的应用,这意味着安全patch升级、容量评估、故障诊断等事务的工作量成倍增加。这时,应用分发标准、生命周期标准、观测标准、自动化弹性等能力的重要性也更加凸显。

image.png


二、云原生

1、基于云产品架构:

判断一个架构是否是云原生,就看这个架构是否是长在云上的,这是对“云原生”的简单理解。

这个长在云上不是简单地说用云的 laaS 服务,比如 ECS、OSS 这些基本的计算存储;而是应该理解成有没有使用云上的分布式服务,比如 Redis、Kafka 等,这些才是直接影响到业务架构的服务。在微服务架构下,分布式服务是必要的,原来大家都是自己研究开发这样的服务,或者基于开源版本自己运维这样的服务。而到了云原生时代,这些业务可以直接使用云服务。

另外两个不得不提的技术就是 Docker和Kubenetes ,其中,前者标准化了应用分发的标准,不论是 Spring Boot 写的应用,还是 NodeJS 写的应用,都以镜像的方式分发;而后者在前者的技术上又定义了应用生命周期的标准,一个应用从启动到上线,再到健康检查,再到下线,都有了统一的标准。

2、应用生命周期托管

有了应用分发的标准和生命周期的标准,云就能提供标准化的应用托管服务,包括应用的版本管理、发布、上线的观测、自愈等。

例如对于无状态的应用来说,一个底层物理点的故障根本不会影响到研发,因为应用托管服务是基于标准化,应用生命周期可以自动完成腾挪工作,在故障物理节点上将应用的容器下线,在新的物理节点上将启动同等数量的应用容器。可以看出,云原生进一步释放了价值红利。

在此基础上,由于托管服务能够感知到应用运行的周期的数据,例如业务流量的并发、cpuload、内存占用等,业务就可以配置基于这些指标的伸缩规则,再由平台执行这些规则,根据业务流量的实际情况增加或减少容器数量,这就是最基本的 auto scaling 自动伸缩。这些能够帮助用户避免在业务低峰期限制资源,节省成本,提高运维效率

相关文章
|
6月前
|
监控 负载均衡 安全
构建高效微服务架构的五大核心技术实践
【4月更文挑战第2天】 在当今软件开发领域,微服务架构已成为构建复杂系统的首选模式。它通过将大型单体应用拆分成一系列小型、自治的服务来提高可维护性和扩展性。本文深入探讨了构建高效微服务架构的五大核心技术实践,包括服务拆分策略、API网关设计、服务发现与注册、熔断机制以及分布式追踪与监控。文章不仅分享了实践中的经验教训,还提供了实施这些技术时的具体建议和最佳实践。
|
运维 Cloud Native 架构师
【组装式架构设计】架构演进简史
一步一步从单体到 SOA,从微服务再到云原生的科普后端架构演进史
28046 12
【组装式架构设计】架构演进简史
|
3月前
|
Cloud Native 持续交付 开发者
云原生之旅:从传统到现代的架构演化
本文将通过一次虚拟的旅行,带领读者穿越回过去,探索软件架构的发展脉络。我们将从单体应用开始,一路经过服务化拆分,最终抵达云原生的乐土。这不仅是一段技术演进的历史,也是对如何在不断变化的技术浪潮中保持初心与创新的启示录。
41 2
|
5月前
|
运维 Cloud Native 开发者
云原生技术:构建未来软件架构的基石
【6月更文挑战第13天】随着云计算的不断演进,云原生技术已成为推动现代软件开发、部署和运维的关键力量。本文深入探讨了云原生的核心概念、优势以及它在企业中的应用,旨在揭示如何借助云原生技术实现更高效、灵活和可靠的软件解决方案。
313 2
|
消息中间件 缓存 前端开发
【架构设计】互联网架构项目架构演进以及三高设计概述
【架构设计】互联网架构项目架构演进以及三高设计概述
【架构设计】互联网架构项目架构演进以及三高设计概述
|
11月前
|
监控 Cloud Native 容灾
下一代软件架构该如何搭建微服务核心能力
随着数字化时代的来临,各种架构设计思想确实如雨后春笋般涌现,给软件开发领域带来了百家齐放的局面,但是软件开发领域也正面临着前所未有的挑战,比如微服务架构、云原生架构、Serverless架构、事件驱动架构、中台架构、容灾架构等,都在不同场景下展现出了独特的优势。尤其是从事云原生领域的开发者来说更有发言权,因为在裁员潮来临的时候,科技公司先要“下手”的就是云原生、容器化等领域。但是话又说回来,传统的单体应用架构已经无法满足现代软件需求的快速变化和高可靠性要求,在这种情况下,微服务架构作为一种分布式系统设计方法,逐渐受到技术圈的关注和应用。那么本文就来简单聊聊下一代软件架构如何搭建微服务的核心能力
77 2
下一代软件架构该如何搭建微服务核心能力
|
自然语言处理 Cloud Native 安全
下一代软件架构,如何构建微服务核心能力
下一代软件架构,如何构建微服务核心能力
450 12
|
人工智能 5G 测试技术
开源移动核心网 Magma 架构设计启示
开源移动核心网 Magma 架构设计启示
91 0
|
存储 调度
架构:第五章:分布式架构的演进
架构:第五章:分布式架构的演进
389 0
架构:第五章:分布式架构的演进
|
Java 开发者 Spring
系统架构演变-中|学习笔记
快速学习系统架构演变-中
系统架构演变-中|学习笔记