【云原生】软件架构的演进以及各个架构的优缺点

简介: 软件架构是指在设计和构建软件系统时,对系统的组织结构、组件、模块、接口以及它们之间的关系和行为进行规划和定义的过程。它描述了软件系统的整体结构和组成部分之间的关系,以及系统的行为和功能。

1. 什么是软件架构?

软件架构是指在设计和构建软件系统时,对系统的组织结构、组件、模块、接口以及它们之间的关系和行为进行规划和定义的过程。它描述了软件系统的整体结构和组成部分之间的关系,以及系统的行为和功能。


软件架构的演进大致可以分为:


1.单机架构

2.应用数据分离架构

3.应用服务集群架构

4.读写分离架构

5.冷热分离架构

6.垂直分库架构

7.微服务架构

8.容器编排架构

下面为大家一一进行介绍

526ec23175c04e88b9f018b30b0ac8b5.gif



2. 单机架构

单机架构是一种简单的技术架构,通常指在一个单独的服务器上运行整个应用程序。在单机架构中,所有的组件和功能都运行在同一个物理或虚拟机上。


出现的原因:在互联网的早期,访问量比较小,单机架构足以满足需求


单机架构的优点:


1.部署简单

2.成本低

在单机架构中,所有的组件都运行在同一个服务器上,相互之间可以通过本地调用或直接访问来进行通信。这种架构简单、易于部署和管理,适用于小型应用或者不需要高可用性和扩展性的场景。


单机架构的缺点:


1.单点故障:由于所有的组件都运行在同一个服务器上,一旦服务器发生故障,整个应用程序将无法访问。

2.扩展性有限:单机架构通常只能通过升级硬件来提高性能,无法通过横向扩展来应对高负载。

3.难以维护和升级:由于所有的组件都集中在一个服务器上,维护和升级可能会影响整个应用程序的正常运行。

4.数据库与应用相互竞争资源


3. 应用数据分离架构

应用数据分离架构是一种将应用程序和数据存储分离的架构设计。在这种架构中,应用程序和数据存储可以运行在不同的服务器或者不同的环境中,通过网络进行通信。


出现原因: 单机架构存在严重的资源竞争,导致站点变慢


应用数据分离架构的优点包括:


1.可伸缩性:通过将应用程序和数据存储分离,可以独立地扩展应用程序和数据存储的能力,以满足不断增长的需求。

2.可维护性:独立的应用程序和数据存储使得系统的维护和升级更加容易,可以分别进行配置、优化和升级。

3.安全性:通过合理的安全和身份验证机制,可以保护数据的安全性和隐私性。

4.异构性:应用程序和数据存储可以选择不同的技术和平台,以满足不同的需求和约束条件。

缺点:


1.硬件成本变高

2.性能有瓶颈,无法应对海量并发


4. 应用服务集群架构

应用服务集群架构是一种将多个应用服务器组成集群的架构方式,旨在提高应用的可靠性、可扩展性和性能。


出现原因: 单个应用不足以支持海量的并发请求,高并发时战点响应变慢


应用服务集群架构的核心概念包括负载均衡、会话共享和故障转移。


负载均衡:通过将用户请求分发到不同的应用服务器上,实现请求的均衡分配,避免单个服务器负载过重,提高整体性能。


会话共享:为了保证用户在不同的应用服务器间的会话一致性,需要将会话信息存储在共享的存储中,例如数据库或缓存中。这样,当用户请求被转发到不同的应用服务器上时,可以保持用户会话的连续性。


故障转移:当某个应用服务器发生故障时,集群中的其他健康服务器可以接管该服务器的工作,确保应用的可用性。这可以通过使用心跳检测、监控和自动故障转移机制来实现。


负载均衡中间件: Nginx,LVS,F5等


优点:


1.高可用

2.高性能

3.具有一定的拓展能力

缺点:


1.性能瓶颈,数据库只有一个,架不住海量的并发

2.硬件成本变高

3.运维工作增多


5. 读写分离架构

读写分离架构是一种将数据库的读操作和写操作分离的架构设计,提高了数据库的性能和可扩展性。


读写分离架构的核心思想是将读操作分发到多个只负责读的从数据库(也称为从库),而写操作则由主数据库(也称为主库)处理。主库负责写入数据并同步到从库,而从库则负责处理读操作。这样可以将读操作的负载均衡到多个从库上,提高读操作的并发性能。


出现原因: 数据库称为性能瓶颈,互联玩一般读多写少,数据库承载压力大,主要是由这些读的请求造成的,因此要把读操作和写操作分离开


使用mycat,tddl等中间件将读和写的请求分离开.使对应的读和写的请求分配给对应的主库/从库


优点:


1.数据库的读取性能提高

2.读操作被其它服务器分担,写的性能间接提升

3.数据库有了从库,数据库的可用性提高(例如:一个服务器挂了,还有其它服务器)

缺点:


1.热点数据的频繁读取导致数据库负载很高

2.当同步挂掉,或者同步延迟比较大时,写库和读库的数据不一致

3.服务器成本进一步提升


6. 冷热分离架构

冷热分离架构是一种通过引入缓存,将冷数据和热数据分离存储和处理的架构设计,提高了系统的性能和存储效率。


出现的原因: 海量的请求导致数据库负载过高,站点响应再度变慢


在传统的数据库架构中,所有的数据都存储在同一个数据库中,无论数据的访问频率如何。而在冷热分离架构中,根据数据的访问频率将数据分为冷数据和热数据。


冷数据指的是访问频率较低的数据,往往是历史数据或不经常被查询的数据。这些数据可以被迁移到低成本、低性能的存储介质,如磁盘或云存储中。


热数据 指的是访问频率较高的数据,往往是经常被查询和更新的数据。这些数据可以被保留在高性能的存储介质,如内存或快速存储设备中。


缓存常用中间件: Redis


优点:


1.大幅降低对数据库的访问请求,性能提升非常明显

2.将冷数据存储在低成本的存储介质中,可以节省存储资源和成本。

3,将热数据存储在高性能的存储介质中,可以提高数据的读写速度和响应时间,从而提高系统的性能。

缺点:


1.带来了缓存一致性,缓存击穿,缓存失败,缓存雪崩等问题

2.服务器成本需要进一步增加

3.数据库单库太大,单个表体量太大,数据库再次成为性能瓶颈


7.垂直分库架构

垂直分库架构是一种将数据库按照功能或业务模块进行划分的架构设计


在传统的单一数据库架构中,所有的数据都存储在同一个数据库中,无论是哪个业务模块的数据。而在垂直分库架构中,将不同的业务模块的数据存储在独立的数据库中,实现逻辑上的分离。例如一个购物应用的数据库就可以分为: 用户库,商品库,交易库


优点:


1.数据库的吞吐量大幅提升,不再是瓶颈

2.通过将不同业务模块的数据分散到多个数据库中,可以实现水平扩展,每个数据库可以独立扩展和调整,提高系统的可扩展性。

3.将数据分散到多个数据库中,可以简化数据库的管理和维护工作。

缺点:


1.跨库join,分布式事务等问题需要方案去解决,目前的mmp都有对应的解决方案

2.数据库和缓存结合目前能够抗住海量的请求,但是应用代码整体耦合在一起,修改一行代码需要重新发布

8. 微服务架构

微服务架构是一种软件架构风格,将一个大型应用程序拆分为一组小型、独立的服务,每个服务都专注于执行特定的业务功能。这些服务可以独立开发、部署和扩展,通过轻量级的通信机制进行相互协作,共同构建一个完整的应用系统。


出现原因: 之前的架构有扩展差,持续开发困难,不可靠,不灵活和代码维护困难等弊端


优点:


1.灵活性高: 服务独立测试,部署,升级和发布

2.独立性高: 每个服务可以自行进行扩展

3.提高容错性: 一个服务问题并不会让整个系统瘫痪

4.新技术的应用容易: 支持多种变成语言

缺点:


1.运维复杂度高: 业务不断发展,应用和服务不断升级,应用和服务的部署变得复杂,同一台服务器上部署多个服务还要解决运行环境冲突问题

2.资环使用多: 这些独立运行的微服务都需要占用内存和CPU

3.处理故障困难: 一个请求跨多个服务调用,需要查看不同的服务的日志完成问题定位


9. 容器编排架构

容器编排架构是一种用于管理和编排容器化应用程序的架构设计。


容器编排架构提供了一种自动化的方式来部署、扩展和管理容器化应用程序,以实现高度可伸缩、弹性和可靠的部署。


在容器编排架构中可以借助容器化技术(如docker)将应用/服务打包为镜像,通过容器编排工具(如k8s)来动态发布和部署镜像,服务以容器化的方式进行


出现的原因:


1.微服务拆分细, 服务多部署工作量大,而且配置复杂,容易出错

2.微服务数量多,扩缩容麻烦,而且容易出错,每次缩容后再扩容又需要重新配置服务对应的环境参数信息

3.微服务之间运行环境可能冲突,需要更多的资源来进行部署或者通过修改配置来解决冲突

优点:


1.部署,运维简单快速: 一条命令就可以完成几百个服务的部署或者扩缩容

2.隔离性好: 容器与容器之间文件系统,网络等相互隔离,不会产生环境冲突

3.轻松,支持滚动更新: 版本间切换都可以通过一个命令完成升级或者回滚

缺点:


1.技术栈变多,对研发团队要求高

2.网络和存储挑战:在容器编排架构中,容器之间需要进行网络通信,并且需要访问共享的存储资源。处理容器之间的网络和存储挑战可能需要额外的配置和管理工作。

10. 小结

软件架构的演进首先解决的是应用和数据库之间的问题,通过将应用和数据库部署到不同的服务器上. 然后再通过负载均衡,处理应用的高并发问题.其次就是对数据库进行优化,通过读写分离,使用缓存,分库分表,分布式数据库来优化数据库. 最后就是在运维方面进行优化.


软件架构是软件开发的重要阶段,在软件生命周期中起到指导和决策的作用。一个好的软件架构可以提供良好的扩展性、可维护性和可重用性,从而降低开发和维护成本,并满足系统的需求和用户的期望。

1b727b2bde93472e86fe0cb1095f7914.gif

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
4天前
|
Cloud Native Devops 持续交付
探索云原生架构:为企业数字化转型插上翅膀
【4月更文挑战第26天】 随着企业对敏捷性、可扩展性和成本效率的不断追求,云原生技术正成为推动数字化转型的关键力量。本文深入剖析了云原生架构的核心组件,包括容器化、微服务、持续集成/持续部署(CI/CD)和DevOps实践,探讨它们如何协同工作以支持动态环境。通过分析多个行业案例,我们揭示了云原生实施的最佳实践,并讨论了在采纳云原生过程中面临的挑战及其解决方案。文章旨在为决策者提供一个清晰的云原生技术蓝图,帮助他们构建更加灵活和高效的业务模型。
|
2月前
|
Cloud Native Devops 持续交付
构建未来:云原生架构在现代企业中的应用与挑战
【2月更文挑战第31天】 随着数字化转型的加速,云原生技术已经成为推动企业IT架构现代化的关键力量。本文深入探讨了云原生架构的核心组件、实施策略以及面临的主要挑战。通过分析容器化、微服务、DevOps和持续集成/持续部署(CI/CD)等关键技术,揭示了如何利用这些技术实现敏捷性、可扩展性和弹性。同时,文章还讨论了企业在采纳云原生实践中可能遇到的安全性、复杂性和文化适应性问题,并提供了解决这些问题的策略和建议。
|
2月前
|
运维 Cloud Native 持续交付
云原生架构的未来演进:打造灵活、高效的企业IT基础
随着数字化转型的不断深入,企业的IT基础设施正经历着从传统架构向云原生架构的根本转变。本文将探讨云原生技术的最新发展趋势,分析其在提高业务敏捷性、降低运维成本以及促进技术创新方面的关键作用。我们将重点讨论如何借助容器化、微服务、DevOps和持续交付等核心技术,构建一个能够适应快速变化市场需求的云原生生态系统。通过实际案例分析,揭示企业在迁移到云原生架构过程中面临的挑战与解决策略,为读者呈现一幅云原生技术赋能企业未来的蓝图。
|
2月前
|
Cloud Native Devops 持续交付
构建未来:云原生架构在企业数字化转型中的关键作用
随着企业加速其数字化进程,云计算已成为支撑创新和灵活性的基石。本文深入探讨了云原生架构如何为企业提供敏捷性、可扩展性和成本效益,以及它如何成为支持现代应用程序开发和服务交付的核心。我们将分析云原生的关键组件,包括容器化、微服务、持续集成/持续部署(CI/CD)和DevOps文化,并讨论这些技术如何协同工作以提高企业运营效率和响应市场变化的能力。此外,我们还将审视采用云原生架构的潜在挑战和克服这些挑战的策略。
|
2月前
|
Cloud Native 安全 持续交付
构建未来:云原生架构的演进与实践
【2月更文挑战第30天】 随着数字化转型的深入,企业对于信息技术的需求日益复杂化和动态化。传统的IT架构已难以满足快速迭代、灵活扩展及成本效率的双重要求。云原生技术作为解决这一矛盾的关键途径,通过容器化、微服务、持续集成/持续部署(CI/CD)等手段,实现了应用的快速开发、部署及运维。本文将探讨云原生架构的最新发展,分析其如何助力企业构建更加灵活、高效的业务系统,并结合实际案例,展示云原生转型过程中的最佳实践和面临的挑战。
|
2月前
|
监控 Cloud Native 持续交付
构建未来:云原生架构在企业数字化转型中的关键作用
【2月更文挑战第30天】 随着企业加速其数字化转型步伐,云原生架构已不仅仅是一种趋势,而是一种必然。本文将探讨云原生技术如何为企业提供必要的敏捷性、可扩展性和弹性,以支持不断变化的市场需求。通过深入分析容器化、微服务和持续集成/持续部署(CI/CD)等关键概念,我们将揭示这些技术如何协同工作,帮助企业实现快速迭代和高效运营。
|
2天前
|
Cloud Native 安全 持续交付
探索云原生架构的未来:企业数字化转型的加速器
【4月更文挑战第28天】 随着企业加速其数字化转型的步伐,云原生架构作为一种创新的技术模式,正日益成为推动这一进程的关键因素。本文将深入探讨云原生技术的核心组件、实施策略以及面临的挑战,旨在为企业提供一个关于如何利用云原生架构促进业务敏捷性、可扩展性和创新能力的参考框架。通过分析最新的行业趋势和案例研究,我们将揭示云原生如何塑造企业应用开发的未来,并带来持续的业务价值。
|
6天前
|
Cloud Native Devops 持续交付
构建未来:云原生架构在企业数字化转型中的关键作用
【4月更文挑战第24天】 随着企业加速其数字化转型之旅,云原生架构已成为实现敏捷性、可扩展性和持续创新的关键推动力。本文将探讨云原生技术如何助力企业构建灵活的IT环境,支持快速部署新服务,并提高整体业务效率。通过分析微服务、容器化、DevOps和持续集成/持续部署(CI/CD)等关键技术的实践应用,我们将揭示这些元素如何共同塑造出一个响应迅速且高效的企业架构模型。
|
6天前
|
Cloud Native 持续交付 云计算
构筑未来:云原生架构在企业数字化转型中的关键作用
【4月更文挑战第24天】 随着企业加速其数字化进程,云原生技术已逐渐成为推动创新与维持竞争力的驱动力。本文将探讨云原生架构的核心概念、实施策略以及它如何助力企业在不断变化的市场环境中实现敏捷性和弹性。我们将深入剖析容器化、微服务、持续集成与持续部署(CI/CD)等关键技术,并讨论它们如何共同作用于构建高度可靠、可扩展的系统结构。通过具体案例分析,文章旨在为读者提供如何在组织中采用和优化云原生实践的洞见。
|
10天前
|
Cloud Native API 持续交付
构建未来:云原生架构在企业数字化转型中的关键作用
【4月更文挑战第21天】 随着企业加速其数字化转型的步伐,云原生技术已迅速成为推动创新和实现敏捷性的基石。本文深入探讨了云原生架构的核心组件,包括容器化、微服务、持续集成/持续部署(CI/CD)以及声明式API。通过分析这些技术的协同效应,揭示了它们如何共同促进系统的可伸缩性、弹性和维护性,进而支持企业在不断变化的市场环境中保持竞争力。
13 1