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

2023-11-11

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)来动态分发和部署镜像,服务以容器化方式运行

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

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

技术案例
架构优缺点
优点
  • 部署、运维简单快速:一条命令就可以完成几百个服务的部署或者扩缩容
  • 隔离性好:容器与容器之间文件系统、网络等互相隔离,不会产生环境冲突
  • 轻松支持滚动更新:版本间切换都可以通过一个命令完成升级或者回滚
缺点
  • 技术栈变多,对研发团队要求高
  • 机器还是需要公司自身来管理,在非大促的时候,还是需要闲置着大量的机器资源来应对大促,机器自身成本和运维成本都极高,资源利用率低,可以通过购买云厂商服务器解决。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

技术架构演进之路-Docker【二】 的相关文章

随机推荐

  • 全新升级!讯飞星火认知大模型V2.0,你准备好了吗?

    前言 AI大模型正在全球掀起新一轮的技术革命与商业浪潮 从技术突破到应用落地 加速改变着我们的生活与产业 依托通用人工智能领域的持续深耕和系统性创新 科大讯飞于5月6日正式发布星火认知大模型 并于6月9日迅速完成迭代升级 受到用户持续好评
  • 软件测试环境的搭建

    前言 测试环境是QA开展测试工作的前置条件 稳定和可控的测试环境 可以使测试人员在执行测试用例时无需花费额外的时间去维护 有些公司运维或者研发部门会帮忙准备好测试环境 但是QA如果一味依赖其他部门 会局限测试工作的开展 一 什么是测试环境
  • 【PASS】析因设计样本量计算

    b站视频 working
  • 软件设计和硬件开发 部分学习网站

    1 单片机教程网 http www 51hei com 2 博客园 https www cnblogs com 3 各种程序语言基础知识 https www runoob com cprogramming c scope rules htm
  • Linux运维基础--常见命令

    Linux运维基础 常见命令 linux的发行版本介绍 Linux 内核 kernel 版本主要有 4 个系列 分别为 Linux kernel 2 2 Linux kernel 2 4 Linux kernel 2 6 Linux ker
  • 贪心——字典序最小问题

    https vjudge net problem POJ 3617 题目简单理解就是 给定长度为N的字符串为S 要构造一个长度为N的字符串T 起初 T 是一个空串 随后反复进行下列任意操作 从S的头部删除一个字符串 加到T的尾部 从S的尾部
  • 教与学(TlBO)算法路径规划应用

    是一种基于群体的启发式优化算法 不需要任何算法特定参数 这种方法模拟了传统的课堂教学过程 整个优化过程包括教师阶段和学习者阶段 在教师阶段 每个学生都向最优秀的个体进行学习 在学习阶段 每个学生都以随机的方式向其他学生学习
  • k8s--基础--23.3--认证-授权-准入控制--授权

    k8s 基础 23 3 认证 授权 准入控制 授权 1 介绍 Kubernetes的授权是基于插件形式的 其常用的授权插件有以下几种 1 Node 节点认证 2 ABAC 基于属性的访问控制 3 RBAC 基于角色的访问控制 4 Webho
  • 在IDEA中用jdbc技术通过配置文件连接mysql数据库连接池

    File gt project Structure gt Libraries gt 点 号 gt java gt 选择在电脑中下载druid 1 1 9 jar及以上版本的德鲁伊jar包和mysql connector java 8 0 0
  • MySQL-锁详解

    锁 锁是计算机协调多个进程或线程并发访问某一资源的机制 在数据库中 除传统的计算资源 如CPU RAM I O等 的争用以外 数据也是一种供许多用户共享的资源 如何保证数据并发访问的一致性 有效性是所有数据库必须解决的一个问题 锁冲突也是影
  • 算法刷题-双指针-反转链表

    反转链表的写法很简单 一些同学甚至可以背下来但过一阵就忘了该咋写 主要是因为没有理解真正的反转过程 206 反转链表 力扣题目链接 题意 反转一个单链表 示例 输入 1 gt 2 gt 3 gt 4 gt 5 gt NULL 输出 5 gt
  • fork() 函数

    请问下面的程序一共输出多少个 int main void int i for i 0 i lt 2 i fork printf return 0 答案 8 解析 参考文章 https coolshell cn articles 7965 h
  • Ubuntu 18.04 安装Tensorflow遇到的问题

    问题一 Tensorflow安装完成后测试时 出现libcublas so 9 0找不到问题 ImportError libcublas so 9 0 cannot open shared object file No such file
  • uni-app 数据上拉加载更多功能

    实现上拉加载更多 打开项目根目录中的 pages json 配置文件 为 subPackages 分包中的商品 goods list 页面配置上拉触底的距离 subPackages root subpkg pages path goods
  • 线程的同步和互斥

    线程的同步和互斥题目 题目 设计生产者与消费者模型 缓冲区是一个大小为10的环 每个生产者产生一个0 1000的随机整数 存放在环空位中 消费者从环中取数据 并输出 一个生产者或消费者对应一个线程 要避免 1 两个生产者同时向环的同一个位置
  • 两个数组找相同元素_leetcode数组--sort排序题目汇总

    概要 此类题目的特点是会遇到一些杂乱无序的数组 经过排序后 会更好处理 1051 高度检查器 学校在拍年度纪念照时 一般要求学生按照 非递减 的高度顺序排列 请你返回能让所有学生以 非递减 高度排列的最小必要移动人数 注意 当一组学生被选中
  • qrcode页面生成二维码

  • 2.使用服务端SDK

    使用服务端SDK 一 服务端SDK 1 简介 2 功能介绍 二 使用SDK 1 安装 2 初始化 3 创建测试类 三 创建测试用例 1 获取视频播放凭证 2 获取视频播放地址 一 服务端SDK 1 简介 sdk的方式将api进行了进一步的封
  • 人工智能的道德与伦理

    人工智能的道德与伦理 对人工智能的研究始于上世纪50年代 近几年 科学界和产业界对它的兴趣超越了以往 最近一年半来 谷歌收购了十几家机器人公司 并正在开发人工智能的一个图腾 无人驾驶汽车 去年 社交媒体脸谱成立了新的人工智能实验室 数据显示
  • 技术架构演进之路-Docker【二】

    docker 技术架构演进之路 了解每种技术架构以及如何演进的 熟悉Docker在架构中的核心作用 八大架构演进 一 单机架构 外链图片转存失败 源站可能有防盗链机制 建议将图片保存下来直接上传 img 9o2adujk 168437644