互联网应用架构的演进(八大架构的演进过程)

这篇具有很好参考价值的文章主要介绍了互联网应用架构的演进(八大架构的演进过程)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

博主最近在学中间件,理解互联网应用架构的演进过程,对于理解中间件在整体结构中的定位是十分重要的

常见概念

应用(Application)/系统(System)
完成某种服务的一个/一组程序

模块(Module)/组件(Component)
系统中,一个独立的功能称之为一个组件

分布式(Distributed)
系统中的模块被部署到多个服务器上,这些模块协同完成一系列工作,这样的系统叫分布式系统

集群(Cluster)
系统中的模块被部署到多个服务器上,完成特定目标的一个/多个模块被称为集群

主(Master)/从(Slave)
集群中,承担更多职责的程序被称为主,承担附属职责的程序被称为从。主节点需要向从节点同步数据

中间件(Middleware)
和业务无关的服务,功能更加通用。1. 数据库 2. 缓存 3. 消息队列

八大架构演进过程

单机架构

将所有服务(应用服务+数据服务)部署在同一台服务器上

用户访问应用服务,应用服务根据用户需求访问数据库服务,并将得到的数据返回给用户
由于互联网早期,应用/web访问量小,所以单机足以满足需求

优点:文章来源地址https://www.toymoban.com/news/detail-724681.html

  • 部署简单
  • 成本低
    缺点:
  • 存在性能瓶颈,用户无限增长但资源有限
  • 数据库和应用竞争资源

应用数据分离架构

由于单机架构的性能缺陷,当用户量增多时,网站的响应速度变慢
此时演变出了应用数据分离架构:将应用服务和数据服务部署在不同服务器上
应用服务和数据服务间的交互通过网络完成

(具体来说:使用cpp-httplib/Spring编写应用程序,应用服务接收用户请求并将其转换成数据库语句,接着将语句通过数据库客户端与网络发送给数据库服务端,服务端完成数据操作)

对于应用服务器:可以适当增加CPU、内存资源,因为业务的逻辑将占用更多的CPU和内存
而对于存储服务器:可以适当增加磁盘资源,甚至使用SSD固态硬盘,提高数据的读写速度

优点:

  • 性能相比单机架构有所提升
  • 数据库和应用分离,提高了容灾能力

缺点:

  • 硬件成本变高
  • 无法应对海量并发

应用服务集群架构

当用户的请求量增加,应用服务无法及时处理这些海量请求,导致响应时长过长,用户体验差
此时增加应用服务器数量(横向扩展),在应用服务和数据服务之间引入负载均衡(决策层),使应用服务以集群的方式运作。引入负载均衡后,每台应用服务器承担相同的压力

负载均衡器对于请求的承担能力要远大于应用服务器,因为负载均衡器只涉及到分配算法,不需要处理请求

这一架构涉及到两个软件设计哲学:

  1. 一个设备扛不住,就多加几个设备
  2. 没有什么问题是加一层无法解决的

当并发量越来越大时,Nginx扛不住了,那就多用几个Nginx
Nginx一多,无法实现Nginx之间的负载均衡,再引入决策层,使用LVS/F5实现Nginx的负载均衡
LVS/F5也扛不住了,那就多个几个LVS/F5
LVS/F5一多,无法实现负载均衡,直接修改DNS集群(添加多个IP地址),使之作为我们的负载均衡
DNS也扛不住?修改用户电脑的host文件,直接绕过DNS解析

优点:

  1. 应用服务高可用,不会因为一个服务器出问题,整个站点挂掉
  2. 服务具备高性能
  3. 应用服务可以横向扩展

缺点:

  1. 数据服务成为瓶颈
  2. 运维工作增多,维护成本增加
  3. 硬件成本高

读写/主从分离架构

y应用服务能够处理海量请求时,数据服务成为性能瓶颈
将数据服务进行读写/主从分离,主库负责写操作,从库负责读操作。主从数据库使用数据同步技术保证数据一致

为什么要读写分离?互联网应用一般读多写少,部署多个从数据库负责读操作,可以有效地提高响应速度

但是应用服务如何区分读写请求并将其发送给不同的数据库?因此在应用服务和数据服务之间引入一层中间层,该中间层能够识别读写流量被分流(负载均衡)给响应的数据服务。该中间层对应的软件:MyCat,TDDL

优点:

  1. 读写分离后,数据服务的读写能力都得到提升
  2. 数据库拥有从库(备份),可用性(容灾能力)提升

缺点:

  1. 同步服务延迟高或者挂掉时,导致读库和写库数据不一致
  2. 成本进一步地增加
  3. 热点数据的频繁读取导致数据库的负载率很高

冷热分离架构

互联网应用中,20%的数据就能应对80%的请求,这些数据被称为热点数据
对于热点数据,如果能做到更快的读写,那么响应时长将大大减少
所以引入缓存库,将热度高的数据放入缓存库中,由应用服务判断数据是否为热点数据(是否需要访问主从数据库)
缓存库的代表为redis

优点:

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

缺点:

  1. 带来了缓存一致性,缓存击穿,缓存失败,缓存雪崩等问题
  2. 成本进一步增加
  3. 数据不断增多时,单个数据库的大小太大,查询速度降低,导致数据库再次成为性能瓶颈

垂直分库架构

冷热分离架构主要是为了应对更高的请求量,但数据服务器的容量有限,当数据量越来越大时,存储是一个问题,如何高效地查询也是一个问题

若库太大:将数据库进行拆分,每个数据服务器存储一个/一部分的数据库(分库)
若表太大:将表进行水平拆分(分表),将不同表的列属性进行拆分,根据类型,属性将字段存储到不同的数据集群中,每个数据集群都有一个主库与多个从库,查询时不会干涉其他从库。使用MyCat/TDDL中间件能够自动分库/分表

如电商网站将用户消息,订单消息,产品消息分割成不同的数据库,每个数据库包含特定类型的数据
典型分布式数据库:Greenplum、TiDB、Postgresql XC、HAWQ 等

优点:

  1. 提高了数据吞吐量,数据服务不再是瓶颈
    缺点:
  2. 处理事务的难度增加
  3. 数据服务和应用服务耦合,应用服务的修改将导致整体服务的重新部署

微服务架构

之前的所有架构,一个应用服务器负责很多业务,这将导致一台服务器的代码变得复杂,同时耦合性增加。为了方便代码的维护,需要将负责复杂业务的服务器进行拆分,拆分成功能单一的更小的服务器(微服务)。同时将开发人员进行分组,以更好地开发与维护服务
微服务是一种架构风格,按照业务模块来划分代码使得每个模块的职责更加清晰,相互之间的迭代升级能够做到独立

之前的架构存在的问题:

  1. 扩展性差:修改一点程序就需要重新构建代码
  2. 持续开发困难:重新构建代码导致无法轻松地发布版本
  3. 不可靠:系统中的一个功能出现bug,导致整个系统出问题
  4. 不灵活:无法使用不同的技术构建单体应用程序
  5. 代码维护难:功能耦合在一起,难以阅读

为解决以上问题,使用了微服务架构
优点:

  1. 灵活性高,部署时弹性大
  2. 独立扩展
  3. 提高容错性
  4. 容易引入新技术
  5. 功能复用

缺点:

  1. 运维复杂度高:例如环境冲突问题
  2. 系统的性能下降:独立出来的每个模块需要通过网络进行通信,网络的速度比磁盘还慢
  3. 处理故障困难:一个请求困难调用了多个微服务,出错难以定位

容器编排架构

借助容器化技术(docker)将应用/服务打包为镜像,通过容器编排工具(如k8s)来动态方法和部署镜像,服务通过容器化方式运行
出现原因:

  1. 微服务拆分太细,服务的部署工作量大,配置复杂容易出错
  2. 微服务之间的运行环境可能冲突,需要更多的资源或者修改配置来解决冲突

优点:

  1. 隔离性好:不会产生环境冲突
  2. 部署、运维简单:k8s的容器编排
  3. 支持滚动更新:版本间的升级与回滚通过命令即可完成
    缺点:
  4. 技术栈多,学习成本高
  5. 服务器成本高

到了这里,关于互联网应用架构的演进(八大架构的演进过程)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 互联网八大技术岗位解析:前端+后端+移动+测试+大数据+管理等

    互联网史上最全技术岗位详解,包括:前端研发、后端研发、移动端研发、大数据、项目管理、测试、运维、技术管理等。 架构师 每个产品线都有架构师,在技术平台部门也需要技术平台的架构师。 架构师负责设计系统整体架构,从需求到设计的每个细节都要考虑到,把握

    2024年02月05日
    浏览(49)
  • 从互联网到云时代,Apache RocketMQ 是如何演进的?

    作者:隆基 2022 年,RocketMQ 5.0 的正式版发布。相对于 4.0 版本而言,架构走向云原生化,并且覆盖了更多业务场景。 操作系统、数据库、中间件是基础软件的三驾马车,而消息队列属于最经典的中间件之一,已经有 30 多年的历史。消息队列的发展主要经历了以下几个阶段:

    2024年02月14日
    浏览(46)
  • 从互联网到云计算再到 AI 原生,百度智能云数据库的演进

    如果说今年科技圈什么最火,我估计大家会毫不犹豫选择 ChatGPT。ChatGPT 是 2022 年 11 月 30 日由 OpenAI 发布的聊天应用。它创造了有史以来用户增长最快的纪录:自 11 月 30 日发布起,5 天就拥有了 100 万活跃用户,两个月就达到了一亿用户。对比其他热门应用,同样达到一亿用

    2024年02月04日
    浏览(50)
  • 互联网系统架构演变

    目录 1. 程序三高 1)高并发 2)高性能 3)高可用 2. 传统架构 2.1 提高服务器性能(单机) 2.2 增加服务器数量(DNS 负载均衡) 2.3 负载均衡 负载均衡的功能总结 负载均衡种类 负载均衡——主流的软件解决方案 Apache + JK Nginx 优点 Nginx 配置 配置反向代理 动静分离 轮询机制

    2024年01月23日
    浏览(52)
  • 互联网高可用架构探讨

    高可用,英文单词High Availability,缩写HA,它是分布式系统架构设计中一个重要的度量。业界通常用多个9来衡量系统的可用性,如下表: 既然有可用率,有一定会存在不可用的情况。系统宕机一般分为有计划的和无计划的,有计划的如日常维护、系统升级等,无计划的如设备

    2024年02月11日
    浏览(48)
  • 关于互联网金融平台性能测试的过程经历分享

      目录 项目角色 测试范围 测试策略 测试过程中协助项目组进行问题分析定位优化建议。测试后期负责测试报告编制,问题类型整理。 本次测试范围包括互联网金融平台自身7个模块,7个关联改造的外围系统。 整个测试计划分为公有云测试和私有云测试、端对端单模块测试

    2024年02月16日
    浏览(40)
  • 一文读懂互联网的架构本质

    【引子】谈到互联网,很多人脑海中会出现各种各样的术语和服务,但是互联网是如何设计并构建的呢?作为一个网络,互联网的架构本质是什么? 石头兄弟和我曾经一起译过一本《计算机网络问题与解决方案》的巨著,但真正仔细阅读并从中有所收获的朋友并不多。最近

    2024年02月11日
    浏览(42)
  • 互联网高可用架构探讨 | 京东云技术团队

    高可用,英文单词High Availability,缩写HA,它是分布式系统架构设计中一个重要的度量。业界通常用多个9来衡量系统的可用性,如下表: 既然有可用率,有一定会存在不可用的情况。系统宕机一般分为有计划的和无计划的,有计划的如日常维护、系统升级等,无计划的如设备

    2024年02月12日
    浏览(39)
  • 【第一期】《互联网广告系统:架构、算法与智能化》

    🌹欢迎来到 爱书不爱输的程序猿 的博客, 本博客致力于知识分享,与更多的人进行学习交流 广告平台的建设和完善是一项长期工程。 例如,谷歌早于2003年通过收购Applied Semantics开展Google AdSense项目,而直到20年后的今天,谷歌展示广告平台仍在持续创新和提升。 广告平台是

    2024年02月13日
    浏览(44)
  • 从更广阔的角度看待产业互联网,它展现的是一次重构的过程

    如果产业互联网仅仅只是在传统的供求关系之下,如果产业互联网仅仅只是在传统的平衡之下,缺少了一次对于供求关系的重新建构,那么,所谓的产业互联网,依然是无法跳出以往的发展困境,依然是无法摆脱以往的发展逻辑的。站在这样一个角度来看待产业互联网,其实

    2024年02月15日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包