• docker学习笔记(1) 架构概述


    微服务架构

    微服务VS传统分层架构

    传统分层架构

    优点

    对于简单系统:

    • 容易部署
    • 容易测试
    • 容易横向扩展

    缺点

    对于复杂系统:

    • 耦合度高
    • 不易快速维护
    • 启动慢,部署慢
    • 模块变更引起的回归问题多
    • 难以持续集成和部署

    微服务架构

    优点

    对于复杂系统:

    • 将一个庞大的系统分解成高内聚低耦合的组件
    • 异构系统,不同team可自主选择技术栈,维护效率高
    • 每个服务独立部署,易于持续集成和部署
    • 服务体量小,启动快

    缺点

    对于简单系统:

    • 增加了系统复杂性,分布式部署,需要实现进程间通信,需要处理分布式系统的复杂问题
    • 分区数据库,一个事物需要更新不同微服务的数据库
    • 测试复杂
    • 部署监控复杂

    微服务通讯

    点对点

    客户端访问不同微服务,这些服务又会调用其他微服务

    • 多用于系统内部多组件之间通讯
    • 微服务之间依赖关系错综复杂,维护成本高
    • 容易出现重复模块

    API网关

    所有请求都从API网关走

    • 新的API使用通过注册到网关实现
    • 容易统一审计监控
    • 减少功能相同的重复模块数量

    Docker架构

    1. 基于Linux内核的Namespaces、Control groups、Union file systems技术对进程进行封装隔离,属于操作系统层面的虚拟化技术,被隔离的进程独立于宿主机和其他进程,称为容器

    2. docker在容器的基础上,从文件系统、网络、进程隔离进行了进一步的封装,极大的简化了容器的创建和维护

    虚拟机和docker容器

    运行状态对比

    虚拟机

    docker

    • 虚拟机提供一套虚拟的硬件,在其上安装操作系统和应用
    • Docker容器不使用硬件虚拟化,运行在容器的应用程序接口和主机的内核直接通信

    特性对比

    Docker 虚拟机
    启动速度
    复杂度 对基础设施依赖低 部署复杂度高,面临基础设施兼容性问题
    运行性能 在内核中实现,性能接近原生部署 性能较差
    可控性 依赖简单,与进程无本质区别 依赖复杂
    体积 与业务发布版本大小相近 独立的操作系统,体积为GB级别
    资源利用率
    资源隔离 较弱 隔离性强
    安全性

    docker

    组成

    传统的容器只解决了容器执行的问题,而docker提供了一套构建->分发->执行的实现

    • 镜像:为了满足特定的用途,按照Docker规则制作的一个只读的模版,通过镜像来创建容器,通常镜像会基于其他镜像进行额外的定制
    • 容器:从镜像创建的运行实例,可以使用docker API创建、运行、停止、删除容器。可以将容器连接到多个网络、添加存储到容器、基于容器当前状态构建新的镜像
    • 仓库:存放docker镜像的地方,是docker镜像分发、部署的关键

    详细架构

    docker使用C/S架构,客户端通过API与Docker daemon通信,进行构建、分发、执行的工作

    Docker daemon

    监听Docker API请求,管理镜像,容器,网络,数据卷等。还可以同其他daemon进行通信来管理集群服务

    Docker client

    是用户与Docker交互的主要方式,可以通过docker命令的形式,也可以通过restful API的形式与一个或多个daemon进行通信

    Docker registries

    主要用于存放镜像,可以使用公有的docker hub,也可以搭建私有仓库,类似于github管理代码

    学习自:
    《Docker技术入门与实战(第3版)》Nigel,Poulton(奈吉尔·波尔顿) 著,李瑞丰,刘康 译
    《深入浅出Docker》杨保华,戴王剑,曹亚仑 著
    https://docs.docker.com/

  • 相关阅读:
    20145310《信息安全系统设计基础》第二周学习总结
    20145310《信息安全系统设计基础》第一周学习总结
    20145310 第0周《信息安全系统设计基础》学习总结
    课程总结
    20145310《Java程序设计》第5次实验报告
    20145310 《Java程序设计》第10周学习总结
    20145310 《Java程序设计》第9周学习总结
    20145310《Java程序设计》第4次实验报告
    20145310《Java程序设计》第3次实验报告
    git的安装以及遇到的问题
  • 原文地址:https://www.cnblogs.com/tongh/p/15985848.html
Copyright © 2020-2023  润新知