微服务之架构演变

随着互联网的发展,网站应用规模不断扩大,网站架构随之不断演变,演变历史大致分为单体应用架构-垂直应用架构-分布式架构-SOA架构-微服务架构-云原生架构

架构演变

单体应用架构

以前网站流量小,只需要一个应用就可以把所有功能部署在一起,比如一个电商系统,包含很多模块,我们部署到一个tomcat里服务器上。
在这里插入图片描述

优点:

架构简单,容易开发,部署

缺点:

不易维护、扩展(模块耦合,难以针对某个模块性优化以及水平扩展)
单点容错率低

垂直应用架构

随着访问量增大,单一架构只能依靠增加节点来应对,但是不是多有模块都有较大访问量,所以产生垂直应用架构,把一个应用拆成几个互不相干的应用。
在这里插入图片描述

优点

流量分担
解决并发问题
进行优化和水平扩展
提高容错率(一个系统的问题不会影响到其他系统)

缺点:

系统之间相互独立, 无法进行相互调用, 会有重复的开发任务

分布式架构

当垂直应用越来越多,重复的业务代码就会越来越多。这时候,我们就思考可不可以将重复的代码 抽取出来,做成统一的业务层作为独立的服务,然后由前端控制层调用不同的业务层服务呢?

这就产生了新的分布式系统架构。它将把工程拆分成表现层和服务层两个部分,服务层中包含业务 逻辑。表现层只需要处理和页面的交互,业务逻辑都是调用服务层的服务来实现。
在这里插入图片描述

优点

抽取公共的功能为服务层,提高代码复用性

缺点

系统间耦合度变高,调用关系错综复杂,难以维护

SOA架构

在分布式架构下,当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加 一个调度中心对集群进行实时管理。
在这里插入图片描述

优点

使用注册中心解决了服务间调用关系的自动调节

缺点

服务间会有依赖关系,一旦某个环节出错会影响较大( 服务雪崩 )
服务关系复杂,运维、测试部署困难

微服务架构

微服务架构在某种程度上是面向服务的架构SOA继续发展的下一步,它更加强调服务的"彻底拆分"。
在这里插入图片描述

优点

服务原子化拆分,独立打包、部署和升级,保证每个微服务清晰的任务划分,利于扩展
微服务之间采用Restful等轻量级http协议相互调用

缺点

分布式系统开发的技术成本高(容错、分布式事务等)

云原生架构

云原生架构是为了更好地适应云计算环境而提出的一种软件架构方式。其产生原因包括:

  • 弹性和可扩展性需求: 云计算提供了弹性和可扩展性的优势,可以根据负载情况动态调整资源。云原生架构可以更好地利用这些特性,使应用能够快速地响应变化。
  • 容器化技术的兴起: 容器化技术如Docker的出现,使得应用能够以一种轻量级、可移植的方式打包和交付。云原生架构将容器作为核心组件,从而使应用更具可移植性和一致性。
  • 持续集成/持续交付(CI/CD): 云原生架构鼓励使用自动化的持续集成和持续交付流程,使得软件交付更加频繁、可靠,从而更好地适应快速变化的市场需求。
  • 微服务架构的兴起: 云原生架构通常采用微服务架构,将应用拆分成一组小型、独立部署的服务。这样可以提高开发速度、可维护性和可伸缩性。
  • 基础设施即代码(IaC): 云原生架构鼓励使用基础设施即代码的方法来管理基础设施,使得基础设施的创建、配置和管理变得更加灵活和可重复。

在这里插入图片描述

优点:

  • 灵活性和可伸缩性: 云原生架构允许应用根据需要自动伸缩,以适应不断变化的负载情况,从而提供更好的用户体验。
  • 高可用性: 通过将应用拆分成多个微服务,并在多个地理位置部署,可以实现更高的可用性和容错性。
  • 快速交付: 采用云原生架构,应用可以更快地进行持续集成和持续交付,从而更快地交付新功能和修复。
  • 资源利用率: 云原生架构可以更好地利用云计算的资源弹性,避免资源浪费。
  • 跨平台兼容性: 云原生架构使用容器作为交付机制,可以在不同的云平台和环境中运行,提高了可移植性。

缺点:

  • 学习曲线: 云原生架构需要开发团队熟悉新的技术和方法,可能需要一定的学习曲线。
  • 复杂性: 拆分成微服务和使用容器等技术增加了系统的复杂性,需要更高的管理和维护成本。
  • 安全性: 由于微服务的分布和容器化,可能增加了一些安全风险,需要额外的安全措施。
  • 资源消耗: 由于容器化技术本身会带来一定的资源开销,可能需要更多的资源来支持同样的工作负不适用于所有应用: 云原生架构不适用于所有应用,特别是那些对基础架构依赖较大的传统应用。
    总之,云原生架构在适应现代云计算环境和提高开发效率方面具有明显优势,但也需要考虑到其带来的复杂性和管理挑战。是否选择采用云原生架构取决于具体应用场景和团队的技术能力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/98083.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

理解FPGA中的亚稳态

一、前言 大家应该经常能听说到亚稳态这个词,亚稳态主要是指触发器的输出在一段时间内不能达到一个确定的状态,过了这段时间触发器的输出随机选择输出0/1,这是我们在设计时需要避免的。本文主要讲述了FPGA中的亚稳态问题,可以帮助…

某物联网数智化园区行业基于 KubeSphere 的云原生实践

公司简介 作为物联网 数智化园区一体化解决方案提供商,我们致力于为大中型园区、停车场提供软硬件平台,帮助园区运营者实现数字化、智能化运营。 在使用 K8s 之前我们使用传统的方式部署上线,使用 spug(一款轻量级无 Agent 的自…

书单制作方法详细步骤,需要的小伙伴快来看看~

随着网络的发展,视频已经成为了人们获取信息的主要途径之一。书单视频作为一种特殊类型的视频,既能为观众提供阅读建议,又能为制作者带来收益,因此备受欢迎。本文将分享书单视频制作的详细步骤,帮助有兴趣的朋友们快速…

Flink基础实操-计算单词出现次数

🥇🥇【大数据学习记录篇】-持续更新中~🥇🥇 个人主页:beixi 本文章收录于专栏(点击传送):【大数据学习】 💓💓持续更新中,感谢各位前辈朋友们支持…

用Qt自制一个小闹钟

小闹钟 功能 当按下启动按钮时,停止按钮可用,启动按钮不可用,闹钟无法设置,无法输入自定义内容 当按下停止按钮时,暂停播报,启动按钮可用,闹钟可以设置,可以输入自定义内容 .pro文…

Weblogic SSRF【漏洞复现】

文章目录 漏洞测试注入HTTP头,利用Redis反弹shell redis不能启动问题解决 Path : vulhub/weblogic/ssrf 编译及启动测试环境 docker compose up -dWeblogic中存在一个SSRF漏洞,利用该漏洞可以发送任意HTTP请求,进而攻击内网中redis、fastcgi…

企业架构LNMP学习笔记12

1、Server配置: Server虚拟主机的配置: 在实际生产业务环境中,一台web服务器,需要使用多个网站部署。搭建vhost虚拟主机实现不同域名,解析绑定到不同的目录。 #基于http的web服务 server{#监听端口listen 80#配置虚…

微服务[Nacos]

CAP 1)一致性(Consistency) (所有节点在同一时间具有相同的数据) 2)可用性(Availability)(保证每个请求不管成功或者失败都有响应) 3)分区容错(Partition tolerance)(系统中任意信息的丢失或失败不会影响系统的继续运作) 一、虚拟机镜像准备 …

vue3中TCplayer应用

环境win10:vitevue3elementUI 1 安装 npm install tcplayer.js2 使用 <template><div><video id"player-container-id" width"414" height"270" preload"auto" playsinline webkit-playsinline></video>&l…

Excel·VBA二维数组组合函数的应用实例

看到一个问题《关于#穷举#的问题&#xff0c;如何解决&#xff1f;(语言-开发语言)》&#xff0c;对同一个数据存在“是/否”2种状态&#xff0c;判断其是否参与计算&#xff0c;并输出一系列数据的“是/否”状态的结果 目录 方法1&#xff1a;二维数组组合函数结果 方法2&am…

JVM垃圾回收算法和CMS垃圾收集器

目录 判断一个对象是否死亡&#xff1f; 1、引用计数法 2、可达性分析算法 三色标记 垃圾收集算法 1、分代收集理论 2、垃圾回收算法 标记-清除 标记-复制 标记-整理 CMS&#xff08;Concurrent Mark Sweep&#xff09;收集器 CMS垃圾收集器步骤 CMS垃圾收集器优…

科创板50ETF期权交易:详细规则、费用、保证金和开户攻略

科创板50ETF期权是指以科创板50ETF为标的资产的期权合约。科创板50ETF是由交易所推出的一种交易型开放式指数基金&#xff08;ETF&#xff09;&#xff0c;旨在跟踪科创板50指数的表现&#xff0c;下文介绍科创板50ETF期权交易&#xff1a;详细规则、费用、保证金和开户攻略&am…