微服务架构

微服务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学习笔记(1)- 架构概述的更多相关文章

  1. docker学习笔记(3)- 镜像

    简介 在docker学习笔记(1)- 架构概述一节中可以看到镜像是docker三大组件之一,可以将Docker镜像类比为虚拟机的模版. 镜像由多个层组成,每层叠加之后从外部看就像一个独立的对象,镜像的 ...

  2. Docker学习笔记 — Docker私有仓库搭建

    Docker学习笔记 — Docker私有仓库搭建   目录(?)[-] 环境准备 搭建私有仓库 测试 管理仓库中的镜像 查询 删除 Registry V2   和Mavan的管理一样,Dockers ...

  3. Docker学习笔记 — 配置国内免费registry mirror

    Docker学习笔记 — 配置国内免费registry mirror Docker学习笔记 — 配置国内免费registry mirror

  4. docker学习笔记1 -- 安装和配置

    技术资料 docker中文官网:http://www.docker.org.cn/ 中文入门课程:http://www.docker.org.cn/book/docker.html docker学习笔 ...

  5. Docker学习笔记之一,搭建一个JAVA Tomcat运行环境

    Docker学习笔记之一,搭建一个JAVA Tomcat运行环境 前言 Docker旨在提供一种应用程序的自动化部署解决方案,在 Linux 系统上迅速创建一个容器(轻量级虚拟机)并部署和运行应用程序 ...

  6. OGG学习笔记01-基础概述

    OGG学习笔记01-基础概述 OGG(Oracle Golden Gate),最近几年在数据同步.容灾领域特别火,甚至比Oracle自己的原生产品DataGuard还要风光,主要是因为其跨平台.跨数据 ...

  7. docker~学习笔记索引

    回到占占推荐博客索引 使用docker也有段时间了,写了不少文章与总结,下面把它整理个目录出来,方便大家去学习与检索! docker~学习笔记索引 docker~linux下的部署和基本命令(2017 ...

  8. Docker学习笔记 - Docker容器内部署redis

    Docker学习笔记(2-4)Docker应用实验-redist server 和client的安装使用 一.获取redis容器(含客户端和服务端) 二.创建服务端容器 1.在终端A中运行redis- ...

  9. docker学习笔记(一)—— ubuntu16.04下安装docker

    docker学习笔记(一)—— ubuntu16.04下安装docker 原创 2018年03月01日 14:53:00 标签: docker / ubuntu 1682 本文开发环境为Ubuntu ...

  10. Docker学习笔记总结

    Docker学习笔记 https://yeasy.gitbooks.io/docker_practice/content/   一 环境搭建 Ubuntu安装 .添加软件源的GPG密钥 curl -f ...

随机推荐

  1. Java8特性大全(最新版)

    一.序言 Java8 是一个里程碑式的版本,凭借如下新特性,让人对其赞不绝口. Lambda 表达式给代码构建带来了全新的风格和能力: Steam API 丰富了集合操作,拓展了集合的能力: 新日期时 ...

  2. 布客·ApacheCN 编程/后端/大数据/人工智能学习资源 2020.9

    公告 ApacheCN 项目的最终目标:五年内备份并翻译 Github 上的所有教程(其实快被我们啃完了,剩下的不多了). 警告各位培训班:对 ApacheCN 宣传文章的举报,也将视为对 Apach ...

  3. Java--这张线程瓜图保熟,不进来看看?这瓜要是不熟它就Dead掉了

    先来看一下线程这张图线程的几种运行状态之间运行流程: 看不懂没关系,慢慢来学习,往下学习来继续了解一下~ 什么是线程? 线程是进程的一部分,是程序执行中的一条执行路线: 进程就是指程序在其自身地址空间 ...

  4. java创建自定义类的对象数组

      1 public class Student{ 2 static int number = 0; // 静态变量的访问可以不用创建类的实例就可就可使用< 类名.属性 >的方法访问 3 ...

  5. HTTP缓存小结

    介绍 提到页面优化,浏览器缓存必定是一个绕不过的话题,判断一个网站的性能最直观的就是看网页打开的速度,而提高网页反应速度的一个方式就是使用缓存.一个优秀的缓存策略可以缩短网页请求资源的距离,减少延迟, ...

  6. Blob检测

    一 Laplace 算子 使用一阶微分算子可以检测图像边缘.对于剧烈变化的图像边缘,一阶微分效果比较理想.但对于缓慢变化的图像边缘,通过对二阶微分并寻找过零点可以很精确的定位边缘中心.二阶微分即为 L ...

  7. iptables 的使用 与 模块

    今日内容 Iptables 的使用 模块· 内容详细 一.Iptables 的使用 1.使用前奏 1.安装Iptables [root@m01 ~]# yum install iptables* 2. ...

  8. ASP.NET Core 6框架揭秘实例演示[09]:配置绑定

    我们倾向于将IConfiguration对象转换成一个具体的对象,以面向对象的方式来使用配置,我们将这个转换过程称为配置绑定.除了将配置树叶子节点配置节的绑定为某种标量对象外,我们还可以直接将一个配置 ...

  9. 解决方案:ipv4地址手动设置之后关掉推出再打开就没了(静态Ip设置好之后又自动变动态IP)

    解决方案:ipv4地址手动设置之后关掉推出再打开就没了(静态Ip设置好之后又自动变动态IP) 1.情况说明:修改好IP,关掉窗口后,又变成 自动获取IP (如图二) 2.解决方案: 1)调出 服务和应 ...

  10. 记一次腾讯云服务器centos linux可视化桌面安装并进行远程桌面登录及其安装中文包

    开始前请确保你有能上网的主机两部(一个是CentOS7系统,一个是Windows10系统)1.用SSH root用户登录Centos主机:2.检查你的centos是否装了epel库 执行命令:rpm ...