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

Docker--架构篇

目录

一、整体架构图和演变因素

二、单机架构

        2.1介绍

        2.2原因

        2.3原理图

        2.4优缺点

三、应用数据分离架构

        3.1介绍

        3.2原因

        3.3原理图

        4.4优缺点

四、应用服务集群架构

        4.1介绍

        4.2原因

        4.3原理图

        4.4优缺点

五、读写分离架构

        5.1介绍

        5.2原因

        5.3原理图

        5.4优缺点

六、冷热分离架构

        6.1介绍

        6.2原因

        6.3原理图

        6.4优缺点

七、垂直分库架构

        7.1介绍

        7.2原因

        7.3原理图

        7.4优缺点

八、微服务架构

        8.1介绍

        8.2原因

        8.3原理图

        8.4优缺点

九、容器编排架构

        9.1介绍

        9.2原因

        9.3原理图

        9.4优缺点

十、网络应用架构演示图


一、整体架构图和演变因素

以解决上一架构的缺点而不断演进解决方法形成新的架构

二、单机架构

        2.1介绍

       应用服务和数据库服务共用一台服务器

        2.2原因

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

        2.3原理图

        2.4优缺点

优点:部署简单、成本低

缺点:性能存在严重瓶颈,数据库与应用服务竞争资源

三、应用数据分离架构

        3.1介绍

应用服务和数据库分离

        3.2原因

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

        3.3原理图

        4.4优缺点

优点:

        (1)成本可控

        (2)与单机相比性能提升

        (3)数据库被隔离保障安全性

缺点:

        (1)硬件成本增加

        (2)性能依然存在瓶颈,无法应对海量开发

四、应用服务集群架构

        4.1介绍

引入负载均衡,应用服务以集群方式运行

        4.2原因

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

        4.3原理图

        4.4优缺点

优点:

        (1)应用服务满足高并发

        (2)性能提升可迅速响应(不访问数据库的前提下)

        (3)应用服务可横向扩展

缺点:

        (1)数据库性能存在瓶颈

        (2)不支持高并发可用

        (3)运维工作上升

        (4)硬件成本高

五、读写分离架构

        5.1介绍

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

        5.2原因

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

        5.3原理图

        5.4优缺点

优点:

        (1)读写性能提高

        (2)可用性提升

缺点:
        (1)频繁读取的热数据负载高

        (2)数据库间同步延迟

        (3)服务器成本增加

六、冷热分离架构

        6.1介绍

引入缓存服务器,实行冷热数据分离,将热点数据缓存在缓存服务器中,每次访问先从缓存中寻找,从而达到快速响应

        6.2原因

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

        6.3原理图

        6.4优缺点

优点:

        (1)大幅提升数据库访问请求速度

        (2)性能明显提升

缺点:
        (1)可能引发缓存一致性,缓存击穿,缓存失效,缓存雪崩等问题,服务器成本进一步增加

        (2)业务量变大,单表数据过大,数据查询缓慢

七、垂直分库架构

        7.1介绍

拆分数据库数据,数据库数据分布式存储、处理和查询,分布式数据库架构

        7.2原因

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

        7.3原理图

        7.4优缺点

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

缺点:

        (1)跨库join、分布式事务等问题,这些需要对应的去进行解决,目前的mpp都有对应的解决方案

        (2)耦合度高,数据库和缓存结合目前能够抗住海量的请求,但是应用的代码整体耦合在一起,修改一行代码需要整体重新发布

八、微服务架构

        8.1介绍

按照业务来划分应用服务,使单个应用职责更清晰相互之间可以独立迭代

        8.2原因

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

(2)持续开发困难:一个很小的代码改动,也需要重新部署整个应用,无法频繁并轻松的发布版本

(3)不可靠,一个功能影响其他功能

(4)不灵活,代码耦合度很高

(5)维护工作困难

        8.3原理图

        8.4优缺点

优点:

        (1)灵活性高

        (2)独立扩展

        (3)提高容错性

        (4)支持多编程语言

缺点:

        (1)运维难度高

        (2)资源使用变多

        (3)处理故障困难

九、容器编排架构

        9.1介绍

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

        9.2原因

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

(2)微服务数量多扩缩容麻烦

(3)微服务环境可能发生冲突

        9.3原理图

        9.4优缺点

优点:

        (1)部署运维简单快速

        (2)隔离性好,容器与容器之间文件系统、网络等相互隔离

        (3)支持版本前后滚动更新

缺点:

        (1)技术栈变多

        (2)机器本身成本和运维成本高,资源利用率低,会存在大量服务器空闲的情况

十、网络应用架构演示图

http://www.xdnf.cn/news/19852.html

相关文章:

  • C++CSP-J/S必背模板
  • 机器学习从入门到精通 - Transformer颠覆者:BERT与预训练模型实战解析
  • PLSQL导入excel数据的三种方法
  • PL-YOLOv8:基于YOLOv8的无人机实时电力线检测与植被风险预警框架,实现精准巡检与预警
  • 区块链版权存证的法律效力与司法实践
  • 52Hz——STM32单片机学习记录——FSMC
  • maven scope=provided || optional=true会打包到jar文件中吗?
  • 车辆安全供电系统开发原则和实践
  • VR节约用水模拟体验系统:沉浸式体验如何改变我们的用水习惯
  • Debezium报错处理系列之第130篇:OutOfMemoryError: Java heap space
  • Spring boot3.x整合mybatis-plus踩坑记录
  • Cesium 实战 - 自定义纹理材质 - 箭头流动线(图片纹理)
  • 企业资源计划(ERP)在制造业的定制化架构
  • 【QT随笔】巧用事件过滤器(installEventFilter 和 eventFilter 的组合)之 QComboBox 应用
  • 手把手教你开发第一个 Chrome 扩展程序:网页字数统计插件
  • 从竞态到原子:pread/pwrite 如何重塑高效文件 I/O?
  • 如何使文件夹内的软件或者文件不受windows 安全中心的监视
  • Java8特性
  • 【HarmonyOS 6】仿AI唤起屏幕边缘流光特效
  • leetcode-每日一题-人员站位的方案数-C语言
  • Spring 循环依赖问题
  • 《LINUX系统编程》笔记p8
  • 大模型RAG项目实战:RAG技术原理及核心架构
  • SpringBoot 事务管理避坑指南
  • 机器学习:从技术原理到实践应用的深度解析
  • 机器人抓取中的力学相关概念解释
  • JVM中产生OOM(内存溢出)的8种典型情况及解决方案
  • 初识NOSQL
  • 方法决定效率
  • git: 取消文件跟踪