docker学习笔记(1)- 架构概述
微服务架构
微服务VS传统分层架构

传统分层架构
优点
对于简单系统:
- 容易部署
- 容易测试
- 容易横向扩展
缺点
对于复杂系统:
- 耦合度高
- 不易快速维护
- 启动慢,部署慢
- 模块变更引起的回归问题多
- 难以持续集成和部署
微服务架构
优点
对于复杂系统:
- 将一个庞大的系统分解成高内聚低耦合的组件
- 异构系统,不同team可自主选择技术栈,维护效率高
- 每个服务独立部署,易于持续集成和部署
- 服务体量小,启动快
缺点
对于简单系统:
- 增加了系统复杂性,分布式部署,需要实现进程间通信,需要处理分布式系统的复杂问题
- 分区数据库,一个事物需要更新不同微服务的数据库
- 测试复杂
- 部署监控复杂
微服务通讯
点对点

客户端访问不同微服务,这些服务又会调用其他微服务
- 多用于系统内部多组件之间通讯
- 微服务之间依赖关系错综复杂,维护成本高
- 容易出现重复模块
API网关

所有请求都从API网关走
- 新的API使用通过注册到网关实现
- 容易统一审计监控
- 减少功能相同的重复模块数量
Docker架构
基于Linux内核的Namespaces、Control groups、Union file systems技术对进程进行封装隔离,属于操作系统层面的虚拟化技术,被隔离的进程独立于宿主机和其他进程,称为容器
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学习笔记(1)- 架构概述的更多相关文章
- docker学习笔记(3)- 镜像
简介 在docker学习笔记(1)- 架构概述一节中可以看到镜像是docker三大组件之一,可以将Docker镜像类比为虚拟机的模版. 镜像由多个层组成,每层叠加之后从外部看就像一个独立的对象,镜像的 ...
- Docker学习笔记 — Docker私有仓库搭建
Docker学习笔记 — Docker私有仓库搭建 目录(?)[-] 环境准备 搭建私有仓库 测试 管理仓库中的镜像 查询 删除 Registry V2 和Mavan的管理一样,Dockers ...
- Docker学习笔记 — 配置国内免费registry mirror
Docker学习笔记 — 配置国内免费registry mirror Docker学习笔记 — 配置国内免费registry mirror
- docker学习笔记1 -- 安装和配置
技术资料 docker中文官网:http://www.docker.org.cn/ 中文入门课程:http://www.docker.org.cn/book/docker.html docker学习笔 ...
- Docker学习笔记之一,搭建一个JAVA Tomcat运行环境
Docker学习笔记之一,搭建一个JAVA Tomcat运行环境 前言 Docker旨在提供一种应用程序的自动化部署解决方案,在 Linux 系统上迅速创建一个容器(轻量级虚拟机)并部署和运行应用程序 ...
- OGG学习笔记01-基础概述
OGG学习笔记01-基础概述 OGG(Oracle Golden Gate),最近几年在数据同步.容灾领域特别火,甚至比Oracle自己的原生产品DataGuard还要风光,主要是因为其跨平台.跨数据 ...
- docker~学习笔记索引
回到占占推荐博客索引 使用docker也有段时间了,写了不少文章与总结,下面把它整理个目录出来,方便大家去学习与检索! docker~学习笔记索引 docker~linux下的部署和基本命令(2017 ...
- Docker学习笔记 - Docker容器内部署redis
Docker学习笔记(2-4)Docker应用实验-redist server 和client的安装使用 一.获取redis容器(含客户端和服务端) 二.创建服务端容器 1.在终端A中运行redis- ...
- docker学习笔记(一)—— ubuntu16.04下安装docker
docker学习笔记(一)—— ubuntu16.04下安装docker 原创 2018年03月01日 14:53:00 标签: docker / ubuntu 1682 本文开发环境为Ubuntu ...
- Docker学习笔记总结
Docker学习笔记 https://yeasy.gitbooks.io/docker_practice/content/ 一 环境搭建 Ubuntu安装 .添加软件源的GPG密钥 curl -f ...
随机推荐
- springcloud 负载均衡之 ribbon。
一.什么是 ribbon? 就是负载均衡! nginx也是负载均衡 1.1 !!!!ribbon和nginx的区别是什么? /* nginx: 正向代理(和客户端连在一起) 反向代理(和服务器端连在一 ...
- AT3527 [ARC082D] Sandglass
解法一 直接考虑在初始为 \(a\) 的情况下时刻 \(t\) 时 \(A\) 中剩余的沙子是行不通的,不妨反过来考虑在时刻 \(t\) 每个初始值 \(a\) 的答案,令其为 \(f_t(a)\). ...
- (DDS)正弦波形发生器——幅值、频率、相位可调(二)
(DDS)正弦波形发生器--幅值.频率.相位可调(二) 主要关于调相方面 一.项目任务: 设计一个幅值.频率.相位均可调的正弦波发生器. 频率每次增加10kHz 相位每次增加 PI/2 幅值每次增加两 ...
- 基于java处理.docx格式的word合并
如下实例是将 2.docx和3.docx合并,写到empty.docx中,不适用于.doc格式,public static void main(String[] args) { File file1 ...
- SpringBoot+MyBatis通过ScriptRunner读取SQL文件
@Component public class InitDBTables implements CommandLineRunner { @Autowired DataSource dataSource ...
- 【转】zabbix监控mysql
纯属搬家收藏,原文链接 https://www.cnblogs.com/shenjianyu/p/6627843.html 注意: 1.关注的重点在agent端部分 2.zabbix_get命令没有, ...
- shell脚本三剑客之sed
shell脚本之sed命令 1.概述 2.工作流程 3.命令格式 4.具体操作 1.概述: 1.sed是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流 2.sed编辑器 ...
- python篇第6天【数据类型】
Python有五个标准的数据类型: Numbers(数字) String(字符串) List(列表) Tuple(元组) Dictionary(字典) Python数字 数字数据类型用于存储数值. 他 ...
- NPM 错误、问题等汇总
一. npm的作用就是对Node.js依赖的包进行管理,也可以理解为用来安装/卸载Node.js需要装的东西 二. 1. 修改npm配置为淘宝的源下载: npm install -g cnpm --r ...
- windows 使用自带的cmd终端进行文件MD5校验
1.使用快捷键win+r,调用运行界面,输入cmd后回车 2.输入certutil -hashfile <文件名称> MD5,回车后,即可校验文件的MD5了(注意写绝对路径)