当前位置: 首页 > news >正文

docker 的八大技术架构(图解)

docker 的八大技术架构

在这里插入图片描述


单机架构

概念: 应用服务和数据库服务公用一台服务器
出现背景: 出现在互联网早期,访问量比较小,单机足以满足需求

架构优缺点:

  • 优点:部署简单,成本低

  • 缺点:存在严重的性能瓶颈,数据库和应用互相竞争资源

架构工作原理:

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

示例如下图:
在这里插入图片描述

对应的工作原理:
在这里插入图片描述



应用数据分离架构

概念: 应用服务和数据库服务使用不同服务器
出现背景: 单机存在严重的资源竞争,导致站点变慢

架构优缺点:

  • 优点:

    1. 成本相对可控
    2. 优点性能相比单机有提升
    3. 数据库单独隔离,不会因为应用把数据库搞坏,有—定的容灾能力

  • 缺点:

    1. 硬件成本变高
    2. 性能有瓶颈,无法应对海量并发

架构应用原理:

还是以购物网站为例,可以看到应用(划分了多个模块)和 数据库 在各自的服务器上通过网络协作完成业务运行

示例如下图:

在这里插入图片描述

对应的工作原理:

在这里插入图片描述


应用服务集群架构

概念: 引入了负载均衡,应用以集群方式运作
出现背景: 单个应用不足以支持海量的并发请求,高并发的

架构优缺点:

  • 优点:

    1. 应用服务高可用:应用满足高可用,不会一个服务出问题整个站点挂掉
    2. 应用服务具备一定高性能;如果不访问数据库,优点应用相关处理通过扩展可以支持海量请求快速响应
    3. 应用服务有—定扩展能力:支持横向扩展

  • 缺点:

    • 数据库成为性能瓶颈,无法应对数据库的海量查询
    • 数据库是单点,没有高可用
    • 运维工作增多,扩展后部署运维工作增多,需要开发对应的工具应对快速部署
    • 硬件成本较高

架构应用原理:

还是以购物网站为例,可以看到应用不再是一个,而是变成了多个,通过负载均衡来支持海量的并发

示例如下图:

在这里插入图片描述



在这里插入图片描述

对应的工作原理:

在这里插入图片描述



读写分离/主从分离架构

概念: 将数据库读写操作分散到不同的节点上,数据库服务器搭建主从集群,一主一从、—主多从都可以,数据库主机负责写操作,从机只负责读操作
出现背景: 数据库成为瓶颈,而互联网应用一般读多写少,数据库承载压力大,主要是由这些读的请求造成的,那么我们可以把读操作和写操作分开

架构优缺点:

  • 优点:

    1. 数据库的读取性能提升
    2. 优点读取被其他服务器分担,写的性能间接提升
    3. 数据库有从库,数据库的可用性提高了

  • 缺点:

    1. 热点数据的频繁读取导致数据库负载很高
    2. 当同步挂掉,或者同步延迟比较大时,写库和读缺点库的数据不一致
    3. 服务器成本需要进—步增加

架构应用原理:

还是以购物网站为例,可以看到应用不再是一个,而是变成了多个,数据库主机负责写操作,从机负责读操作,数据库主机通过复制将数据同步到从机

示例如下图:
在这里插入图片描述

对应的工作原理:

在这里插入图片描述



冷热分离架构

概念: 引入缓存,实行冷热分离,将热点数据放到缓存中快速响应
出现背景: 海量的请求导致数据库负载过高,站点响应再度变慢

架构优缺点:

  • 优点:大幅降低对数据库的访问请求,性能提升非常明显

  • 缺点:

    1. 带来了缓存一致性,缓存击穿,缓存失效,缓存雪崩等问题
    2. 缺点服务器成本需要进一步增加
    3. 业务体量支持变大后,数据不断增加,数据库单库太大,单个表体量也太大,数据查询会很慢,导致数据库再度成为系统瓶颈

架构应用原理:

还是以购物网站为例,可以看到多了缓存服务器,对于热点数据全部放到缓存中,不常用数据再去查询我们的数据库

示例如下图:

在这里插入图片描述

对应的工作原理:

在这里插入图片描述




垂直分库架构

概念: 数据库的数据被拆分,数据库数据分布式存储,分布式处理,分布式查询,也可以理解为分布式数据库架构
出现背景: 单机的写库会逐渐会达到性能瓶颈,需要拆分数据库,数据表的数据量太大,处理压力太大,需要进行分表,为降低运维难度,业界逐渐研发了分布式数据库,库表天然支持分布式

架构优缺点:

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

  • 缺点:

    1. 跨库join、分布式事务等问题,这些需要对应的去进行解决,目前的mpp都有对应的解决方案
    2. 数据库和缓存结合目前能够抗住海量的请求,但是应用的代码整体耦合在一起,修改一行代码需要整体重新发布

分库分表

在这里插入图片描述
分布式数据库

在这里插入图片描述

架构应用原理:

还是以购物网站为例,数据库是由多个主从库或者存储集群构成,支持分布式大规模并行处理

示例如下图:

在这里插入图片描述

对应的工作原理:

在这里插入图片描述



微服务器架构

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

出现背景:

  1. 扩展性差:应用程序无法轻松扩展,因为每次需要更新应用程序时,都必须重新构建整个系统
  2. 持续开发困难:一个很小的代码改动,也需要重新部署整个应用,无法频繁并轻松的发布版本
  3. 不可靠:即使系统的一个功能不起作用,可能导致整个系统无法工作
  4. 不灵活:无法使用不同的技术构建单体应用程序
  5. 代码维护难:所有功能耦合在一起,小白不知道从何下手

架构优缺点:

  • 优点:

    1. 灵活性高:服务独立测试、部署、升级、发布
    2. 独立扩展:每个服务可以各自进行扩展
    3. 提高容错性:一个服务问题并不会让整个系统瘫痪
    4. 新技术的应用容易:支持多种编程语言

  • 缺点:

    1. 运维复杂度高:业务不断发展,应用和服务都会不断变多,应用和服务的部署变得复杂,同一台服务器上部署多个服务还要解决运行环境冲突的问题,此外,对于如大促这类需要动态扩缩容的场景,需要水平扩展服务的性能,就需要在新增的服务上准备运行环境,部署服务等,运维将变得十分困难
    2. 资源使用变多:所有这些独立运行的微服务都需要需要占用内存和CPU
    3. 处理故障困难:一个请求跨多个服务调用,需要查看不同服务的日志完成问题定位

架构应用原理:

还是以购物网站为例,一个商城应用拆分成了多个微服务,如用户服务、交易服务和商品服务,相互之间协作支持整个商城的应用,还增添了直播带货的应用

示例如下图:
在这里插入图片描述

对应的工作原理:
在这里插入图片描述




容器编排架构

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

出现背景:

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

架构优缺点:

  • 优点:
    1. 部署、运维简单快速:一条命令就可以完成几百个服务的部署或者扩缩容
    2. 隔离性好:容器与容器之间文件系统、网络等互相隔离,不会产生环境冲突
    3. 轻松支持滚动更新:版本间切换都可以通过一个命令完成升级或者回滚

  • 缺点:
    1. 技术栈变多,对研发团队要求高
    2. 机器还是需要公司自身来管理,在非大促销的时候,还是需要闲置着大量的机器资源来应对大促销,机器自身成本和运维成本都极高,资源利用率低,可以通过购买云厂商服务器解决

现状: 目前最流行的容器化技术是 Docker,最流行的容器管理服务是 Kubernetes(K8S),应用/服务可以打包为 Docker 镜像,通过 K8S 来动态分发和部署镜像。Docker 镜像可理解为一个能运行你的应用/服务的最小的操作系统,里面放着应用/服务的运行代码,运
行环境根据实际的需要设置好。把整个“操作系统”打包为一个镜像后,就可以分发到需要部署相关服务的机器上,直接启动 Docker 镜像就可以把服务起起来,使服务的部署和运维变得简单。

C++和Java部署到服务器的过程图示:

在这里插入图片描述
上述过程联系现实的理解:

在这里插入图片描述



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

在这里插入图片描述

对应的工作原理:

在这里插入图片描述

相关文章:

docker 的八大技术架构(图解)

docker 的八大技术架构 单机架构 概念: 应用服务和数据库服务公用一台服务器 出现背景: 出现在互联网早期,访问量比较小,单机足以满足需求 架构优缺点: 优点:部署简单,成本低 缺点&#xff1…...

LeetCode-热题100:131. 分割回文串

题目描述 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。 示例 1: 输入: s “aab” 输出: [[“a”,“a”,“b”],[“aa”,“b”]] 示例 2: 输入&am…...

常用相似度计算方法总总结

一、欧几里得相似度 1、欧几里得相似度 公式如下所示: 2、自定义代码实现 import numpy as np def EuclideanDistance(x, y):import numpy as npx np.array(x)y np.array(y)return np.sqrt(np.sum(np.square(x-y)))# 示例数据 # 用户1 的A B C D E商品数据 [3.3…...

【漏洞复现】WordPress Plugin NotificationX 存在sql注入CVE-2024-1698

漏洞描述 WordPress和WordPress plugin都是WordPress基金会的产品。WordPress是一套使用PHP语言开发的博客平台。该平台支持在PHP和MySQL的服务器上架设个人博客网站。WordPress plugin是一个应用插件。 WordPress Plugin NotificationX 存在安全漏洞,该漏洞源于对用户提供的…...

AI新工具(20240322) 免费试用Gemini Pro 1.5;先进的AI软件工程师Devika;人形机器人Apptronik给你打果汁

✨ 1: Gemini Pro 1.5 免费试用Gemini Pro 1.5 Gemini 1.5 Pro是Gemini系列模型的最新版本,是一种计算高效的多模态混合专家(MoE)模型。它能够从数百万个上下文Token中提取和推理细粒度信息,包括多个长文档和数小时的视频、音频…...

鬼灭之刃-激情台词-02(解释来自文心一言)

愤怒吧,不共戴天的仇恨,强悍而纯粹的愤怒,将会化作坚不可摧的原动力,督促你变强 —— 吾峠呼世晴《鬼灭之刃》 愤怒和仇恨是一种强烈的情感,它们可以驱使人们去寻求改变,去变得更加强大。在故事中&#xff…...

openssl3.2 - exp - aes-128-cbc

文章目录 openssl3.2 - exp - aes-128-cbc概述笔记openssl 命令行实现简单直白的实现简单直白的实现 - 测试效果简单直白的实现 - 测试工程 周全灵活的实现周全灵活的实现 - 测试效果周全灵活的实现 - 测试工程 清晰一些的版本END openssl3.2 - exp - aes-128-cbc 概述 想将工…...

基于docker+rancher部署Vue项目的教程

基于dockerrancher部署Vue的教程 前段时间总有前端开发问我Vue如何通过docker生成镜像,并用rancher上进行部署?今天抽了2个小时研究了一下,给大家记录一下这个过程。该部署教程适用于Vue、Vue2、Vue3等版本。 PS:该教程基于有一定…...

Elasticsearch:让你的 Elasticsearch 索引与 Python 和 Google Cloud Platform 功能保持同步

作者:来自 Elastic Garson Elasticsearch 内的索引 (index) 是你可以将数据存储在文档中的位置。 在使用索引时,如果你使用的是动态数据集,数据可能会很快变旧。 为了避免此问题,你可以创建一个 Python 脚本来更新索引&#xff0…...

如何定位web前后台的BUG

一、对系统整体的了解 Server端:jspServletjson 数据库:sql、MySQL、oracle等 前台: 涉及到 jstl,jsp,js,css,htm等方面 后台:servlet,jms,ejb&#xff0…...

谈谈 IOC 和 AOP

我之前面试的时候,真的会有面试官问这个。我感觉确实这个比较高频,因为 Spring 框架最核心的就是这两个东西嘛,掌握了这两个就相当于掌握了 Spring 的半壁江山了。 不过一般面试官不会一上来就问你什么是 AOP 和 IOC,一般都是叫你…...

C/C++之内存旋律:星辰大海的指挥家

个人主页:日刷百题 系列专栏:〖C/C小游戏〗〖Linux〗〖数据结构〗 〖C语言〗 🌎欢迎各位→点赞👍收藏⭐️留言📝 ​ ​ 一、C/C内存分布 我们先来了解一下C/C内存分配的几个区域,以下面的代码为例来看…...

Linux下进程的调度与切换

🌎进程的调度与切换 文章目录: 进程的调度与切换 进程切换 进程调度       活动状态进程队列       位图判断       过期队列 总结 前言: 在Linux操作系统中,进程的调度与切换是操作系统核心功能之一&#xff…...

Linux相关命令(2)

1、W :主要是查看当前登录的用户 在上面这个截图里面呢, 第一列 user ,代表登录的用户, 第二列, tty 代表用户登录的终端号,因为在 linux 中并不是只有一个终端的, pts/2 代表是图形界面的第…...

React中 类组件 与 函数组件 的区别

类组件 与 函数组件 的区别 1. 类组件2. 函数组件HookuseStateuseEffectuseCallbackuseMemouseContextuseRef 3. 函数组件与类组件的区别3.1 表面差异3.2 最大不同原因 1. 类组件 在React中,类组件就是基于ES6语法,通过继承 React.component 得到的组件…...

GPT实战系列-智谱GLM-4的模型调用

GPT实战系列-智谱GLM-4的模型调用 GPT专栏文章: GPT实战系列-实战Qwen通义千问在Cuda 1224G部署方案_通义千问 ptuning-CSDN博客 GPT实战系列-ChatGLM3本地部署CUDA111080Ti显卡24G实战方案 GPT实战系列-Baichuan2本地化部署实战方案 GPT实战系列-让CodeGeeX2帮…...

AndroidStudio开发 相关依赖

1、com.google.zxing 用于二维码扫描 2、butterknife 用于简化findView 和 onClick操作 3、pub.devrel:easypermissions 简化权限请求的库 4、 网络请求框架(一):android-async-http 网络请求框架(二):xUtils 网络请求框架(三):Volley Volley…...

Zookeeper详解(zk)

文章目录 Zookeeper 概念ZooKeeper的应用场景使用场景zk的原理ZooKeeper、Nacos、Eureka 和 Consul区别Zookeeper的数据结构zk集群脑裂如何解决ZAB 协议假如注册中心挂了,消费者还能调⽤服务吗,用什么调用的dubbo注册中心为什么选择 Zookeeper关于zookee…...

BSD-3-Clause是一种开源软件许可协议

BSD-3-Clause是一种开源软件许可协议,也称为BSD三条款许可证。它是BSD许可证家族中的一种,是一种宽松的许可证,允许软件自由使用、修改和重新分发,同时也保留了一些版权和责任方面的规定。 BSD-3-Clause许可证的主要特点包括以下…...

持续集成平台 02 jenkins plugin 插件

拓展阅读 Devops-01-devops 是什么? Devops-02-Jpom 简而轻的低侵入式在线构建、自动部署、日常运维、项目监控软件 代码质量管理 SonarQube-01-入门介绍 项目管理平台-01-jira 入门介绍 缺陷跟踪管理系统,为针对缺陷管理、任务追踪和项目管理的商业…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

EtherNet/IP转DeviceNet协议网关详解

一&#xff0c;设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络&#xff0c;本网关连接到EtherNet/IP总线中做为从站使用&#xff0c;连接到DeviceNet总线中做为从站使用。 在自动…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)

前言&#xff1a; 在Java编程中&#xff0c;类的生命周期是指类从被加载到内存中开始&#xff0c;到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期&#xff0c;让读者对此有深刻印象。 目录 ​…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

HTML前端开发:JavaScript 获取元素方法详解

作为前端开发者&#xff0c;高效获取 DOM 元素是必备技能。以下是 JS 中核心的获取元素方法&#xff0c;分为两大系列&#xff1a; 一、getElementBy... 系列 传统方法&#xff0c;直接通过 DOM 接口访问&#xff0c;返回动态集合&#xff08;元素变化会实时更新&#xff09;。…...

uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)

UniApp 集成腾讯云 IM 富媒体消息全攻略&#xff08;地理位置/文件&#xff09; 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型&#xff0c;核心实现方式&#xff1a; 标准消息类型&#xff1a;直接使用 SDK 内置类型&#xff08;文件、图片等&#xff09;自…...