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

容器 - 八大架构的演进

Docker

容器虚拟化核心技术+docker生态、架构及组成部分+容器编排详解+核心原理实现

我目前就来学学基本知识。

八大架构的演进

文章目录

  • Docker
  • 八大架构的演进
    • 1. 单机架构
    • 2. 应用数据分离架构
    • 3. 应用服务集群架构
    • 4. 读写分离/主从分离架构
    • 5. 冷热分离架构
    • 6. 垂直分库架构/分布式数据库架构
    • 7. 微服务架构
    • 8. 容器编排架构

1. 单机架构

所有服务部署在一台服务器上

  • 出现原因:互联网早期,访问量小,单机足以满足需求
  • 架构原理:以电子商城为例,应用和数据库在蛋哥服务器上写作完成业务
  • 架构优缺点:
    • 部署简单,成本低
    • 性能瓶颈,数据库和应用相互竞争资源

2. 应用数据分离架构

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

  • 出现原因:单机存在严重的资源竞争,导致站点变慢
  • 工作原理:应用与数据在各自服务器上通过网络写作完成
  • 优缺点:
    • 成本相对可控;性能相对提升;隔离,一定的容灾能力
    • 硬件成本变高。性能有瓶颈,无法应对海量并发

3. 应用服务集群架构

引入了负载均衡(DNS ip分配;LVS/F5硬件;Nginx,应用,多级挂载),应用以集群方式运作

  • 出现原因:单个应用不足以支持海量的并发请求,高并发的时候站点响应变慢
  • 优缺点:
    • 应用服务高可用;应用服务具备一定的高性能;应用支持横向扩展
    • 数据库单点;运维工作量增加;硬件成本较高

4. 读写分离/主从分离架构

将数据库读写分散到不同节点上,数据库服务器搭建主从集群(一主一从,一主多从),大哥负责写,小弟负责读。

  • 出现原因:数据库成为瓶颈,期号互联网应用读多写少,干啥找谁(加一层mycat/tddr)

  • 架构工作原理:数据库主机通过复制同步

  • 优缺点:

    • 数据库读取性能提升;写也间接提升;可用性高
    • 热点数据频繁读取导致数据库负载很高;同步延迟;服务器成本增高

5. 冷热分离架构

引入缓存,实行冷热分离,将热点数据放入缓存中

  • 出现原因:海量请求负载过高
  • 架构工作原理:多了缓存服务器(Redis集群化)
  • 优缺点:
    • 大幅降低数据库的访问请求,性能提升非常明显
    • 缓存一致性,缓存击穿,缓存失效;
    • 单个表体量太大,数据查询很慢

6. 垂直分库架构/分布式数据库架构

数据库的数据被拆分,分布式存储处理和查询

  • 出现原因:单机写库逐渐达到性能瓶颈
  • 优缺点:
    • 跨库join,分布式事务等问题,需要解决方案,目前的mpp都有对应的解决方案
    • 数据库和缓存结合目前能抗住海量的请求,但应用的代码耦合在一起,修改一行需要整体重新发布。

7. 微服务架构

按照业务板块来划分应用代码,使单个应用的职责更清晰,可以单独升级迭代。springcloud double

  • 出现原因:扩展性差;持续开发困难;不可靠;不灵活;代码维护困难
  • 缺点:运维复杂度高;资源使用变多;处理故障困难

8. 容器编排架构

借助容器化技术(如docker)将应用/服务打包成镜像

优点:

  • 部署运维简单:一条命令完成几百个服务的部署和扩容
  • 隔离性好:容器与容器之间的文件系统、网络等相互隔离,不会产生环境冲突

相关文章:

  • 深度学习中的图像处理(基本介绍+示例代码)
  • Python---函数的应用案例(多个)
  • Laravel/Lumen 任务调度简易入门说明
  • Windows系统搭建VisualSVN服务并结合内网穿透实现公网访问
  • 【C++进阶之路】第九篇:特殊类设计
  • STM32 寄存器配置笔记——系统时钟配置 HSE as PLL
  • web:[GXYCTF2019]禁止套娃
  • gwas数据获取如何获取完整的GWAS summary数据(1)------GWAS catalog数据库
  • 【JavaEE初阶】 JavaScript基础语法——贰
  • R语言——taxize(第三部分)
  • Linux 常用命令学习笔记
  • Postgresql常用命令函数
  • 目标检测YOLO系列从入门到精通技术详解100篇-【目标检测】目标视觉检测
  • 二百零七、Flume——Flume实时采集5分钟频率的Kafka数据直接写入ODS层表的HDFS文件路径下
  • 使用 AWS boto3 库从 s3 桶中批量下载数据
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • 4个实用的微服务测试策略
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • java8-模拟hadoop
  • jquery ajax学习笔记
  • js中forEach回调同异步问题
  • Laravel 中的一个后期静态绑定
  • Meteor的表单提交:Form
  • mongodb--安装和初步使用教程
  • python 学习笔记 - Queue Pipes,进程间通讯
  • sublime配置文件
  • 关于字符编码你应该知道的事情
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 思考 CSS 架构
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • (3)STL算法之搜索
  • (C语言)fread与fwrite详解
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (四)Android布局类型(线性布局LinearLayout)
  • (一) springboot详细介绍
  • (转)winform之ListView
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • (状压dp)uva 10817 Headmaster's Headache
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .Net IOC框架入门之一 Unity
  • .net 使用ajax控件后如何调用前端脚本
  • .net连接MySQL的方法
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • /proc/interrupts 和 /proc/stat 查看中断的情况
  • [ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解
  • [ 云计算 | AWS 实践 ] 基于 Amazon S3 协议搭建个人云存储服务
  • [].slice.call()将类数组转化为真正的数组
  • [Android]使用Git将项目提交到GitHub
  • [Angular] 笔记 8:list/detail 页面以及@Input
  • [Ariticle] 厚黑之道 一 小狐狸听故事
  • [BUG] Authentication Error