Docker:技术架构演进

news2024/10/5 14:20:41

文章目录

  • 基本概念
  • 架构演进
    • 单机架构
    • 应用数据分离架构
    • 应用服务集群架构
    • 读写分离/主从分离架构
    • 冷热分离架构
    • 垂直分库
    • 微服务
    • 容器编排架构

本篇开始进行对于Docker的学习,Docker是一个陌生的词汇,那么本篇开始就先从技术架构的角度出发,先对于技术架构有一个基本的认识

基本概念

  1. 应用和系统:为了完成一整套服务的一个程序或者是一组相互配合的程序
  2. 模块和组件:当应用量比较庞大时,会把整个目标划分为多个模块和组件
  3. 分布式:系统中的多个模块被部署到不同的服务器上,那这样就可以叫做是分布式系统,换句话说,比如平时的web服务器和数据库放在不同的服务器上,那这就是一个分布式的系统
  4. 集群:部署在多个服务器上,为了实现一个特定功能的组件,那这个整体就被叫做是集群,比如MySQL会工作在不同的服务器上,一起来进行数据库的服务目标,这样就可以被叫做是一组数据库集群
  5. 中间件:一类提供不同应用程序用户相互通信的软件,也就是说是不同技术工具或者是数据库之间的桥梁,这种就是中间件
  6. 容器:可以让开发者把应用以及依赖放到一个可以移植的镜像中,发布到各种操作系统的机器上,实现出一个虚拟化的功能
  7. 容器编排:这是一个用于进行管理云平台上多个主机上的容器化的应用,可以让部署容器化的应用更加简单高效

架构演进

现在假设做了一个项目,这个项目会随着时间的推移不断复杂,那么就需要不断的更换架构

单机架构

在项目的最初期,由于工程量比较小,所以使用最基础的内容就可以了,因此,使用普通的基础的单机架构即可:

在这里插入图片描述
这也是最基础的架构,把所有的内容都放到了单机服务器上

应用数据分离架构

随着工程的升级,此时随着数据越来越多,原来的单机服务器已经不能够满足日常的需求了,因此就要想办法降低这个单机服务器上的数据量,因此就采取出了应用数据分离架构

在这里插入图片描述
这种架构模式也比较简单,直接把应用的数据存储在了应用服务器上,而把存储的内容数据,放到了存储服务器上,其实也就是把数据库服务部署在了一个存储服务器上

应用服务集群架构

随着用户的继续增长,数据量变得更多了,此时单台的应用服务器已经不能够满足日常的需求了,因此现在又要进行升级技术,下面给出两种方案:

  1. 垂直扩展:购买更加优秀的应用服务器来进行应对这种更多的流量,优点是直接把项目换个机器部署即可,但是缺点是价格比较昂贵
  2. 水平扩展:把软件的架构进行调整,增加应用层的硬件,把用户的流量分担到不同的应用服务器中,从而增加系统的承载能力,这样的方案优势是可以控制成本,提升空间大,但是缺点是需要技术的支持,因为直接相当于更换了一种存储模式

之后,这个项目采取了一个水平扩展的方案,引入了一个负载均衡的方案,把用户的流量合理的分发到了不同的应用服务器上,当然这也需要一个专门的系统组件,叫做流量分发,实际的负载均衡不仅仅说的是工作在应用层的是负载均衡,在网络层的也可能是负载均衡

下面是这种模式下的架构图:

在这里插入图片描述

读写分离/主从分离架构

在把用户的请求通过负载均衡发送到不同的应用服务器后,确实可以进行并行处理很多的问题了,并且随着用户的增长还可以使用扩张服务器的方法来进行压力的缓解,但是现在的问题是,不管扩展多少个服务器,这些请求都会从数据库来进行读写数据,这就导致数据库的压力会很大,那么如何解决数据库压力大的问题?

如果想要使用扩展数据库的方法来解决,其实是不可以的,因为数据是需要保持一致性的,采取多个数据库服务器,会导致整体上的数据一致性不能得到合理的保证,因此引入了一个主从服务器的概念

保留一个主要的数据库作为写入数据库,而其他的数据库都是从属数据库,从库的所有数据都来自于主库的数据,经过同步之后,从库可以维护着和主库一样的数据,为了分担数据库的压力,可以把数据的请求全部给主库来进行处理,但是读取的数据请求分散到从库中,这样就会导致压力进一步的减少,达到一个缓解的目的

下面是这种架构的模式图:

在这里插入图片描述

冷热分离架构

随着访问量的继续增加,就会发现业务中的一些数据的读取频率是要比其他数据的要高的,那么这些数据就被叫做是热点数据,对于热点数据来说,可以把其缓存起来,这样就可以减少访问数据库的次数,比如前面用过的Redis就是这样达到原理

在这里插入图片描述

垂直分库

随着业务的增加,大量的数据存储在一个库中是不可行的,一个主数据库已经完成不了这么多的数据了,因此就可以把数据进行分别存储,比如对于评论和数据,可以进行商品ID的hash,分别存储到不同的库中即可,具体的模式图如下所示:

在这里插入图片描述

微服务

随着项目的持续增加,整个项目可能会有很多个模块来组成,因此就需要把业务分发给不同的开发团队来进行维护,每个团队独立实现自己的微服务,相互之间对数据的直接访问进行隔离,总体来说就是可以进行一些相互之间的调用关联等:

在这里插入图片描述

容器编排架构

系统的资源利用率其实在上述的架构中是不高的,为什么这样说?因为有很多的资源是用来应对短时的高并发,而很多的资源在正常情况下都是用不到的,那这样的问题如何解决?容器化技术就带来了解决方案

目前最为流行的容器化技术就是Docker了,容器管理服务是K8S,可以把应用服务打包为一个Docker镜像,使用K8S来进行动态的分发和镜像的部署,Docker的镜像可以理解为是一个能够运行你的服务的最小的一个操作系统,里面放的是其对应的数据,那么把整个操作系统打包wield一个镜像之后,就可以分发到对应的机器上,直接启动这个Docker的镜像,就可以把服务打包起来,使得服务部署变得轻松简单

在实际的使用中可能还会有生产和研发的K8S集群,这样的集群不会公用,会有对应的研发和测试集群等

在这里插入图片描述
至此,一个高可用,高并发的系统模型就这样诞生了

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python词云生成库-wordcloud

内容目录 一、模块介绍二、WordCloud常用的方法1. generate(self, text)2. generate_from_frequencies(frequencies)3. fit_words(frequencies)4. generate_from_text(text) 三、进阶技巧1. 设置蒙版2. 设置过滤词 WordCloud 是一个用于生成词云的 Python 库,它可以…

6-Maven的使用

6-Maven的使用 常用maven命令 //常用maven命令 mvn -v //查看版本 mvn archetype:create //创建 Maven 项目 mvn compile //编译源代码 mvn test-compile //编译测试代码 mvn test //运行应用程序中的单元测试 mvn site //生成项目相关信息的网站 mvn package //依据项目生成 …

问题:卫生事业的发展受多种因素的影响和制约,以下属于卫生事业发展影响因素的有(? ?)。 #微信#其他

问题:卫生事业的发展受多种因素的影响和制约,以下属于卫生事业发展影响因素的有(? ?)。 A、经济水平 B、管理水平 C、人口素质 D、科技发展 参考答案如图所示

全面解析:渗压计数据如何预测地下水趋势

随着人们对水资源日益增长的需求和对环境保护意识的提升,地下水位的监测和预测成为了水利工程和环境科学领域的重要研究内容。渗压计作为一种能够测量土壤或岩石中孔隙水压力的仪器,在地下水位的监测中发挥着关键作用。本文将从渗压计的工作原理、安装方…

Ubuntu系统安装docker以及安装yg系统所能使用到的插件

Ubuntu系统安装docker以及安装yg系统所能使用到的插件 前言:建议大家使用ubuntu系统的时候,直接永久关闭防火墙目前我们处于学习状态,这样有利于提高开发效率。 项目地址:https://github.com/xzhHas/yg 文章目录 Ubuntu系统安装do…

Windows搭建apache网站

1、官网下载安装包,注意下载服务器对应操作系统的安装包(此案例为64位操作系统) Apache VS17 binaries and modules downloadFor (business) webmasters, developers and home-users who want running always up to date Windows VS17 binar…

RK3568笔记三十:PP-ORCv3自训练部署

若该文为原创文章,转载请注明原文出处。 一、介绍 PP-OCR 是百度公布并开源的OCR领域算法,一个轻量级的OCR系统,在实现前沿算法的基础上,考虑精度与速度的平衡, 进行模型瘦身和深度优化,使其尽可能满足产业…

Django request.POST获取提交的表单数据

在Django中,request.POST 是一个特殊的属性,它是一个类似于字典的对象,用于访问通过POST方法提交的表单数据。如果你在视图中使用 print(request.POST.get(username)),这通常意味着你正在尝试从一个HTML表单中获取一个名为 userna…

映宇宙:多基础设施下,如何进行数据库选型升级|OceanBase 《DB大咖说》(五)

随着多基础设施成为行业发展的主流趋势,数据库选型时需要考虑哪些关键因素?对于云数据库的升级策略,又该如何制定?OceanBase《DB 大咖说》第五期特别邀请了映宇宙(原映客)的数据库负责人赵智博先生&#xf…

DENet:融合全局与局部,多模块策略,超越传统分割方法,提升青光眼筛查精度

DENet:融合全局与局部,多模块策略,超越传统分割方法,提升青光眼筛查精度 提出背景精细拆解A. 全局视网膜图像层面B. 视盘区域层面 提出背景 论文:https://arxiv.org/pdf/1805.07549 代码:https://github.…

使用mysqldump迁移MySQL数据

将Windows系统中MySQL数据导出到其他系统中MySQL数据库中 1.导出数据 进入MySQL安装目录的bin目录下,打开dos窗口执行以下命令 --single-transaction 参数表示不锁表 1.1 指定部分表导出 mysqldump -u用户名 -p密码 数据库名 表1 表2 表3 --single-transact…

Nvidia/算能 +FPGA+AI大算力边缘计算盒子:测控巡检智能机器人

是集研发、生产、制造、销售为一体的高新技术企业,是国内"皮带机智能巡检"领域的技术引领者。公司先后获得国家级高新技术企业、太原市市级企业技术中心、太原市技术创新示范企业、山西省民营科技企业、山西省专精特新中小企业、山西省四新中小企业、太原…

【经验分享】搭建电商项目过程中关于淘宝APP商品数据采集的要点

淘宝APP商品采集的注意事项和应用可以归纳为以下几点: 注意事项: 遵守平台规则: 在进行淘宝商品采集时,务必遵守淘宝平台的相关规则,不得采集敏感信息,如用户隐私、商家敏感数据等。尊重商家权益&#xf…

PMP考试技巧和PMP考试大纲

今日分享PMP考试技巧,文末附上PMP考试大纲,你会喜欢的! PMP考试大纲:人员试题占比42% ,流程试题占比50%,商业环境试题占比8%。 PMP解题策略 PMP考试默认条件 精准审题 E(Eye):找到题眼; K(Key):找到考…

ui自动化中,selenium进行元素定位,以及CSS,xpath定位总结

几种定位方式 简单代码 from selenium import webdriver import time# 创建浏览器驱动对象 from selenium.webdriver.common.by import Bydriver webdriver.Chrome() # 参数写浏览器驱动文件的路径,若配置到环境变量就不用写了 # 访问网址 driver.get…

视频大模型 Vidu 支持音视频合成;字节跳动推出语音生成模型 Seed-TTS 丨 RTE 开发者日报 Vol.221

开发者朋友们大家好: 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「…

618什么数码好物值得入手?优质数码清单分享,错过等明年!

在到来的618年中大促,各种数码好物竞相亮相,正是您更新装备、升级体验的黄金时刻,在这个购物的狂欢节里,我们特别为大家准备了一份精选的优质数码清单,帮助大家从海量的选择中筛选出真正值得入手的宝贝,这些…

问题:与十六进制数AB等值的二进制数是()。 #其他#经验分享

问题:与十六进制数AB等值的二进制数是()。 A.10101011 B.10011010 C.10101010 D.11011100 参考答案如图所示

CSS实现3个圆点加载动画

加载动画主要使用了css的animation和transform属性&#xff0c;animation用来实现动画效果&#xff0c;transform实现过渡&#xff0c;让动画看起来更真实 一、html <div class"loadding-box"><div class"dot1"></div><div class&qu…

根据AgentLego 搭建多工具智能体

操作目的和工具介绍 操作目的&#xff1a; 本操作文档旨在指导用户如何使用 AgentLego 进行智能体构建。AgentLego 是一个开源的智能体算法库&#xff0c;它提供了一系列工具和接口&#xff0c;使开发者能够轻松地构建和部署智能体。 工具介绍&#xff1a; AgentLego 支持直接…