技术架构演进之路-Docker【二】

文章详细阐述了技术架构从单机到应用数据分离、读写分离、冷热分离、分布式数据库、微服务架构,再到利用Docker和容器编排工具(如Kubernetes)的演进过程。每个阶段解决了不同问题,如性能瓶颈、扩展性、容错性和运维复杂度,同时也带来了新的挑战和复杂性。
摘要由CSDN通过智能技术生成

docker

技术架构演进之路

了解每种技术架构以及如何演进的,熟悉Docker在架构中的核心作用

八大架构演进

一、单机架构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9o2adujk-1684376445937)(C:\Users\17512\AppData\Roaming\Typora\typora-user-images\1684231515844.png)]

当前服务由应用服务数据库服务两个服务组成,应用服务由 用户模块、商品模块、交易模块三个模块组成,我们可以理解它为 淘宝。用户模块负责用户登陆注册、商品模块负责商品的录入和浏览、交易模块负责用户的下单和购买。所用数据放在数据库访问中,用户表、商品表、交易表。

应用服务和数据库服务部署在一台服务器上。

简介

应用服务和数据库服务共同部署在一台服务器上

出现原因

出现在互联网早期,访问量比较小,单机足以满足需求。

架构工作原理

以电子商城为例,可以看到通过应用(划分了多个模块)和数据库在单个服务器上协作完成业务运行

技术案例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ofTlE0PD-1684376445939)(C:\Users\17512\AppData\Roaming\Typora\typora-user-images\1684285358773.png)]

架构优缺点
优点:部署简单、成本低
缺点:存在严重的性能瓶颈、数据库和应用互相竞争资源

二、应用数据分离架构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GGnTbOWN-1684376445939)(C:\Users\17512\AppData\Roaming\Typora\typora-user-images\1684286043695.png)]

简介

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

出现原因

单机存在严重的资源竞争,导致站点变慢

架构工作原理

以电子商城为例,可以看到应用和数据库在各自的服务器上,通过网络协作完成业务运行

技术案例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4kn56Q4u-1684376445940)(C:\Users\17512\AppData\Roaming\Typora\typora-user-images\1684286531543.png)]

架构优缺点
优点:成本相对可控、性能相比单机有所提升、数据库单独隔离不会因为应用把数据库搞坏,有一定的容灾能力
缺点:硬件成本变高、性能有瓶颈,无法应对海量并发

三、应用服务集群架构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ql2G7L8U-1684376445940)(C:\Users\17512\AppData\Roaming\Typora\typora-user-images\1684287235738.png)]

简介

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

出现原因

单个应用不足以支持海量的并发请求,高并发的时间站点响应变慢

架构工作原理

以电子商城为例,可以看到应用不再是一个,而是变成了多个,通过负载均衡来支持海量的并发

技术案例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JJ0XANtu-1684376445941)(C:\Users\17512\AppData\Roaming\Typora\typora-user-images\1684288265178.png)]

架构优缺点
优点:应用服务高可用:应用满足高可用,不会一个服务出问题整个站点挂掉、应用服务具备一定高性能:如果不访问数据库,应用相关处理通过扩展可以支持海量请求快速响应、应用服务有一定扩展能力:支持横向扩展
缺点:数据库成为性能瓶颈,无法应对数据库的海量查询、数据库是单点,没有高可用、运维工作增多,扩展后部署运维工作增多,需要开发对应的工具应对快速部署、硬件成本较高

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

简介

将数据库读写操作分散到不同的节点上,数据库服务器搭建主从集群,一主一从、一主多从都可以,数据库主机负责写操作,从机只负责读操作

出现原因

数据库成为瓶颈,而互联网应用一般读多写少,数据库承载压力大,主要是由这些读的请求造成的,那么我们可以把读操作和写操作分开

架构工作原理

以电子商城为例,可以看到数据库服务器不再是一个,而是变成了多个,数据库主机负责写操作,从机负责读操作,数据库主机通过复制将数据同步到从机

技术案例
架构优缺点
优点
  • 数据库的读取性能提升
  • 读取被其他服务器分担,写的性能间接提升
  • 数据库有从库,数据库的可用性提高
缺点
  • 热点数据的频繁读取导致数据库负载很高
  • 当同步挂掉,或者同步延迟比较大时,写库和读库的数据不一致
  • 服务器成本需要进一步增加

五、冷热分离架构

简介

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

出现原因

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

架构工作原理

以电子商城为例,可以看到多了缓存服务器,对于热点数据全部放到缓存中,不常用数据再去查询我们的数据库

技术案例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4uW7jVy6-1684376445941)(C:\Users\17512\AppData\Roaming\Typora\typora-user-images\1684371842389.png)]

架构优缺点
优点
  • 大幅度降低对数据库的访问请求,性能提升非常明显
缺点
  • 带来了缓存一致性,缓存击穿,缓存失败,缓存雪崩等问题
  • 服务器成本需要提高
  • 业务体量变大,数据不断增加,数据库单库太大,单个表体量也太大,数据查询会变慢,导致数据库再度成为系统瓶颈

六、垂直分库架构[分布式数据库架构]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-52x7ANzK-1684376445942)(C:\Users\17512\AppData\Roaming\Typora\typora-user-images\1684373484740.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9Nvq5wGZ-1684376445943)(C:\Users\17512\AppData\Roaming\Typora\typora-user-images\1684373529302.png)]

简介

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

出现原因

单机的写库会逐渐达到性能瓶颈,需要拆分数据库,数据表的数据量太大,处理压力太大,需要进行分表,为降低运维难度,业界逐渐研发了分布式数据库,库表天然支持分布式

架构工作原理

以电子商城为例,数据库是由多个主从库或者存储集群构成,支持分布式大规模并行处理

技术案例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EHZihPxP-1684376445943)(C:\Users\17512\AppData\Roaming\Typora\typora-user-images\1684373877789.png)]

架构优缺点
优点
  • 数据库吞吐量大幅提升,不在是瓶颈
缺点
  • 跨库join,分布式事务等问题,这些需要对应的去解决,目前的mpp都有对应的解决方案
  • 数据库和缓存结合目前能够抗住海量的请求,但是应用的代码整体耦合在一起,修改一行代码需要整体重新发布

七、微服务架构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Bjx9yTL6-1684376445944)(C:\Users\17512\AppData\Roaming\Typora\typora-user-images\1684374347376.png)]

简介

微服务是一种架构风格,按照业务板块来划分应用代码,使单个应用的职责更清晰,相互之间可以做到独立升级迭代。

出现原因
  • 扩展性差:应用程序无法轻松扩展,因为每次需要更新应用程序时,都必须重新构建整个系统
  • 持续开发困难:一个很小的代码改动,也需要重新部署整个应用,无法频繁并轻松的发布版本
  • 不可靠:即使系统的一个功能不起作用,可能导致整个系统无法工作
  • 不灵活:无法使用不同的技术构建单体应用程序
  • 不灵活:无法使用不同的技术构建单体应用程序
架构工作原理

以电子商城为例,一个商城应用拆分成了多个微服务,如用户服务、交易服务和商品服务,相互之间协作支持整个商城的应用

技术案例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RYua9Xli-1684376445944)(C:\Users\17512\AppData\Roaming\Typora\typora-user-images\1684374571128.png)]

架构优缺点
优点
  • 灵活性高:服务独立测试、部署、升级、发布
  • 独立扩展:每个服务可以各自进行扩展
  • 提高容错性:一个服务问题并不会让整个系统瘫痪;
  • 新技术的应用容易:支持多种编程语言
缺点
  • 运维复杂度高:业务不断发展,应用和服务都会不断变多,应用和服务的部署变得复杂,同一台服务器上部署多个服务还要解决运行环境冲突的问题,此外,对于如大促这类需要动态扩缩容的场景,需要水平扩展服务的性能,就需要在新增的服务上准备运行环境,部署服务等,运维将变得十分困难
  • 资源使用变多:所有这些独立运行的微服务都需要需要占用内存和 CPU
  • 处理故障困难:一个请求跨多个服务调用,需要查看不同服务的日志完成问题定位

八、容器编排架构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3kKOZtHe-1684376445944)(C:\Users\17512\AppData\Roaming\Typora\typora-user-images\1684375054147.png)]

简介

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

出现原因
  • 微服务拆分细,服务多部署工作量大,而且配置复杂,容易出错
  • 微服务数量多扩缩容麻烦,而且容易出错,每次缩容后再扩容又需要重新配置服务对应的环境参数信息
  • 微服务之间运行环境可能冲突,需要更多的资源来进行部署或者通过修改配置来解决冲突
架构工作原理

以电子商城为例,一个商城应用拆分成了多个微服务,如用户服务、交易服务和商品服务,每一个微服务打包到容器之中,相互协作来完成系统功能,通过容器编排工具完成部署运维

技术案例
架构优缺点
优点
  • 部署、运维简单快速:一条命令就可以完成几百个服务的部署或者扩缩容
  • 隔离性好:容器与容器之间文件系统、网络等互相隔离,不会产生环境冲突
  • 轻松支持滚动更新:版本间切换都可以通过一个命令完成升级或者回滚
缺点
  • 技术栈变多,对研发团队要求高
  • 机器还是需要公司自身来管理,在非大促的时候,还是需要闲置着大量的机器资源来应对大促,机器自身成本和运维成本都极高,资源利用率低,可以通过购买云厂商服务器解决。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孙宇航_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值