八种架构演进

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

八种架构演进,架构

日升时奋斗,日落时自省

目录

1、单机架构

2、应用数据分离架构

3、应用服务集群架构

4、读写分离/主从分离架构

5、冷热分离架构

6、垂直分库架构

7、微服务架构

8、容器编排架构

9、小结


1、单机架构

特征:应用服务和数据库服务器公用一台服务器

出现场景:访问量较小,单机可以满足,由于现在硬件的升级,所以一台服务器够支持很多请求

八种架构演进,架构

 红色箭头表示请求访问,蓝色箭头表示响应

 单机程序中,其实靠的不就是数据库信息的拉取嘛,但是数据库也不是不能去掉,光服务器负责所有操作(单机架构是比较常见架构使用)

一台主机的硬件资源是有上限的,CPU、内存、硬盘、网络每次请求都会收到一个请求,都是需要消耗上述的一些资源,现在一台主机都够用(不行了其实也可以增加硬件资源,但是肯定硬件资源不能在加了就开始使用分布式)

优点:部署简单、成本低

缺点:性能有严重平静、数据库和应用互相竞争资源

2、应用数据分离架构

特征:应用服务和数据库服务使用不同服务器

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

八种架构演进,架构

  红色箭头表示请求访问,蓝色箭头表示响应

优点:成本相对可控、性能相比单机有提升、数据库单独隔离、不会因为应用把数据库搞坏,不至于数据库瘫痪

缺点:硬件成本变高、性能有瓶颈,无法对应海量并发(当前数据库仍然是要接收所有请求处理处理)

3、应用服务集群架构

特征:引入负载均衡,应用以集群方式运作

出现场景:单个应用不足以支持海量的并发请求,高并发的时候站点响应变慢

注:能接收请求量多到数千,多个应用服务器集群同时处理大量请求量(此处tomcat就是横向扩展

八种架构演进,架构

 注:如果请求量更大呢,其实也同样可以按照上面的方法,交给一个更大应用服务接收请求,不够再进行横向扩展(第一先交给上层管理,第二同层进行横向扩展

八种架构演进,架构

   红色箭头表示请求访问,蓝色箭头表示响应

 注:根据需求而定不是说这样的架构一定好,能承载越多并发量就越适合当前,根据情况而定;对于图解有个解释,上面画的只是一个大概的图,实际上有了上层之后,下层就需要更多来接收,毕竟上层是负载均衡器,还是要给下层分配的

优点:

针对应用服务器

(1)高可用:应用满足高可用,不会一个服务出问题整个站点挂掉

(2)高性能:如果不是访问数据库,应用相关处理海量请求快速响应

(3)扩展能力:支持横向扩展

缺点:

针对数据库

(1)性能瓶颈:无法应对数据库的海量查询

(2)可用性:数据库是点单的,所以一旦崩溃就是整个系统挂掉

(3)运维成本高:扩展部署运维工作增加

(4)硬件成本高:说的就是F5这个硬件

4、读写分离/主从分离架构

特征:将数据库集群化,但是为了保证所取数据都是相同的,就让一个数据哭来下,剩下的小弟们跟随大哥进行同步;数据库服务器搭建主从集群,一主一从、也可以一主多从都可以,,数据哭主机负责写操作,从机只负责读操作

出现场景:数据库到达瓶颈,而互联网应用一般读多写少,数据库承载压力主要来源于读的请求你造成的,那么针对这样的情况把读操作和写操作分开

八种架构演进,架构

注:红色箭头表示请求是写操作;浅蓝色箭头表示读操作;紫色箭头表示写操作进行同步,同步给从库;蓝色箭头表示响应

优点:

针对请求访问

(1)读取性能提升

(2)读取操作为主数据库减轻了大部分请求的压力,写操作性能也得以提升

(3)可用性:一个数据库的坍塌不会给系统带来致命的伤害,提高了可用性

缺点:

针对热点数据

(1)读库虽然分担了很多请求量,但是它也会负载,热点数据的疯狂访问

(2)同步从库挂掉,或者延时,导致主库和从库数据有一定可能不一致

(3)服务器成本需要增加(添东西了,能不增加)

5、冷热分离架构

这里针对冷热数据进行解析:针对所谓数据都有常用数据,不常用数据,也就衍生出了“二八原则”,20%的热点数据,能满足80%的访问需求(不是说一定就是20%,按照业务需求来定夺分配,“一九”也不是没有)

特征:引入缓存,实行冷热分离,将热点数据放到缓存中快速响应

出现场景:海量的请求导致数据库负载过高,站点响应在度变慢,说明数据库已经开始吃力了;不足以提供较高的舒适度

八种架构演进,架构

 优点:大幅度降低数据库的访问请求,性能提升非常明显(访问缓存相比访问数据库快)

缺点:

(1)涉及到缓存就会设想到缓存到来的相关问题,缓存击穿、缓存失败、缓存雪崩等问题

(2)服务器成本的提高

(3)业务量支持变大,数据库单库太大,单表个体太大还是会导致数据库查询很慢,导致数据库再度到达瓶颈期

6、垂直分库架构

特征:数据库的数据被拆分,数据库数据分布式存储,分布式处理,分布式查询,也可以理解为分布式数据库架构

出现场景:写操作比较多,单机库性能已经支持不了了,需要拆分数据库,数据表的数据量太多,操作压力大,需要进行分表,降低运维难度,就有了分布式数据库,库表本来也就支持分布式

分库分表:

八种架构演进,架构

垂直分库:是指按照业务功能模块进行分库,将不同的业务模块分别放在不同的物理数据库中,这样可以提高系统的性能和扩展性

水平分库:是指按照用户属性(地市或者ID的hash)进行分库,将全省划分为个大区,每个大区有一个物理数据库,这样可以提高系统的扩展性和性能

注:这里就不在往整个架构图中带入了,这里直接将常见到的应用带入到架构中,这些中间件都是可以支持分库操作,内部实现思想也基本如上

分布式数据库:

八种架构演进,架构

 优点:数据库吞吐量大幅度提升,不再是瓶颈期

缺点:

(1)跨库join操作,分布式事务等问题,需要对应进行解决,目前的mpp都有解决对策

(2)数据库和缓存结合能够支持海量的请求,但是应用代码整体耦合,修改一行代码就需要连带修改很多,整体重新发布

7、微服务架构

特征:按照业务板块来分应用代码,是单个应用的职责更清晰,相互之间可以做到独立升级迭代

出现场景:场景不定全看自己对微服务的定位,这里针对几点进行评定

(1)扩展性差:应用程序不能轻松扩展,因为每次需要更新应用程序时,都必须重新构建整个系统

(2)持续开发困难一个很小的改动会惊动整个系统的代码连带改动,无法频繁并容易发布(这个是灵活性的体现)

(3)不可靠:一个功能不起作用了整个系统可能不能动

(4)代码维护比较吃力,都是在一起的,接手人需要了解整个系统才能每步修改

微服务体现:

八种架构演进,架构

 架构演示:

八种架构演进,架构

 注:图并没有画完,这里解释当我们找商品的时候,是可以去访问用户,返回用户信息之后,在去找商品,商品查找操作是一样的,先找缓存,如果缓存没有在找数据库

优点:

(1)灵活性高:服务独立测试、部署、升级、发布

(2)独立扩展:微服务将功能独立起来,各自扩展互不干扰

(3)提高容错性:一个服务问题,不会两边挂

(4)支持编程语言多

缺点:
(1)运维复杂度高:应用和服务的部署变得复杂,同一台服务器上不是多个服务还要解决运行环境冲突的问题,如果需要动态扩缩场景,需要水平扩展服务的性能,就需要在新增服务上准备运行环境

(2)资源使用变多:独立一个微服务是需要消耗CPU和内存的

(3)处理故障困难:需要查查看不同的日志完成问题定位,每个都是独立的,如果出问题需要慢慢排查

8、容器编排架构

特征:借助容器化技术(Docker)将应用/服务可以打包为镜像,通过容器编排工具(k8s)来动态分布和部署镜像,服务以容器化方式运行

出现场景:

(1)微服务拆分细致,服务多部署工作量大,配置复杂容易出错

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

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

容器化举例:

这里就我们比较熟悉的Java一套体系来说 java应用涉及:java、jdk、centos7 但是我们放到服务器上一次一次放太麻烦了,docker可以直接打包这个三个体系称为一个体系,直接部署到服务器上

八种架构演进,架构

 容器化体现:

八种架构演进,架构

 容器编排架构:

八种架构演进,架构

 红色箭头表示请求,蓝色箭头表示响应,紫色箭头表示去拿用户信息,浅蓝色箭头表示缓存没有,访问数据库

注:这里的图没有画完,同样是访问商品时拿到用户数据信息,再次进行数据访问,先访问缓存,数据不存在访问数据库

 优点:

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

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

(3)支持滚动更新:版本间奇幻都可以通过一个命令完成升级或者回滚

缺点:

(1)技术栈变多,技术要求严格

(2)运维成本极高,机器不是随时都会面临如此的资源消耗,一般只会维持一段时间,剩余时间还是闲置状态,此时资源利用率低,推荐云厂商服务器解决问题

9、小结

八种架构演进,架构

注:最后压力给到了应用,但是并没有结束,应用的改动会影响整个系统的代码耦合性太高,导致运维部署发布都需要很多次,任务量很大(图太长了,不太会截,这里分开截,内容是连续的)

八种架构演进,架构

 下面就有了微服务,微服务并没有解决运维任务量大的问题,微服务只是将代码解耦,能让开发更加便捷,各司其职互不影响,运维的麻烦还是经过docker容器化打包成镜像交给k8s进行编排降低运维的任务量文章来源地址https://www.toymoban.com/news/detail-662058.html

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

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

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

相关文章

  • 《凤凰架构》第一章——服务架构演进史

    前言 刚开始决定弄懂文中所提到的所有东西,就像我写ByteByteGo呢几篇文章一样,把每一句话都弄懂。但是对于《凤凰架构》来说,这有点太费时间了,并且没有必要,有些东西可能永远都不会用到,但文章为了全面的介绍一个内容,会提到那些东西。所以我还是针对一些自

    2024年02月14日
    浏览(46)
  • 【架构】互联网应用开发架构演进历程

    首先我们了解下计算机软件的发展历史,大概总结概括,分为c/s时代,web1.0时代和web2.0时代。 c/s时代:富客户端方案。卖软件可赚钱。​例如 qq、影音、游戏。 1.0时代:主要是单向信息的发布,即信息门户—广大浏览器客户端​ ,互联网内容是由少数编辑人员(或站长)定制的

    2023年04月26日
    浏览(66)
  • 大型网站架构演进过程

    大型网站的技术挑战主要来自于庞大的用户,高并发的访问和海量的数据,任何简单的业务一旦需要处理数以P计的数据和面对数以亿计的用户,问题就会变得很棘手。大型网站架构主要就是解决这类问题。 架构选型是根据当前业务需要来的,在满足业务需求的前提下,既要

    2024年02月08日
    浏览(43)
  • 合约广告平台架构演进实践

    作者 | 王悦凯 导读 从事B端业务系统研发多年,不免会有这样的思考:B端系统的技术挑战是什么?什么样的业务架构算好架构?本文结合百度合约广告业务的发展历程,介绍广告投放平台从单体架构到微服务架构演进过程中碰到的问题和思考。希望通过本文的介绍,让大家更

    2024年02月02日
    浏览(39)
  • 淘宝技术架构演进

    看了《淘宝技术这十年》,总结于此。 从无到有 2003年,eBay 和易趣在资本方面正打得不可开交,那怎么在最短的时间内把一个网站从零开始 建立起来呢? 淘宝为了尽快上线,仅花了一个月把买来的LAMP(Linux+ Apache+MySQL+PHP)改造上线。主要的改造是:从一个数据库进行所有的

    2024年02月06日
    浏览(46)
  • 电商系统架构演进

    具体以电子商务网站为例, 展示web应用的架构演变过程。 这个时候是一个web项目里包含了所有的模块,一个数据库里包含了所需要的所有表,这时候网站访问量增加时,首先遇到瓶颈的是应用服务器连接数,比如tomcat连接数不能无限增加,线程数上限受进程内存大小、CPU内

    2024年02月08日
    浏览(37)
  • 开放网关架构演进

    作者:庄文弘(弘智) 淘宝开放平台是阿里与外部生态互联互通的重要开放途径,通过开放的产品技术把阿里经济体一系列基础服务,像水、电、煤一样输送给我们的商家、开发者、社区媒体以及其他合作伙伴,推动行业的定制、创新、进化, 并最终促成新商业文明生态圈。

    2024年02月12日
    浏览(32)
  • Docker前置背景:架构演进

       \\\"但人类都环绕星球,我更愿追随彗星漂流~\\\"          在正式引入架构演进之前,本小节会对一些比较重要、常见的概念进行介绍。 (1)应用(application)/系统(system)          为了完成一整套服务的一个程序或者一组相互配合的程序群。生活例子类比:为了完成一项任务

    2024年02月13日
    浏览(45)
  • 架构的演进

    单体架构也称之为单体系统或者是单体应用。就是一种把系统中所有的功能、模块耦合在一个应用中的架构方式。 存在的问题: 代码耦合:模块的边界模糊、依赖关系不清晰,整个项目非常复杂,每次修改代码都心惊胆战 迭代困难:每次功能的变更或bug的修复都会导致重新

    2024年01月20日
    浏览(32)
  • 演进式架构

    演进能力是一种元特征和保护其他所有架构特征的架构封装器 IEEE 的软件架构定义中的4+1 视图模型。它关注不同角色的不同视角,将整个系统划分成了逻辑视图、开发视图、进程视图和物理视图 架构师确定了可审计性、数据、安全性、性能、合法性和伸缩性是该应用的关键

    2024年02月12日
    浏览(33)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包