• docker知识1---容器背景


    一、服务架构模式演变:

    1)集中式/单体应用架构:
    当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。
    前后端都在一个包里,所有的业务模块都耦合在一个项目里,大多数都是模块之间的调用,开发和部署都在一起;
    单个模块有更新,所有模块一起启停,而且对高并发、大数据处理能力比较弱;
    存在的问题:
    代码耦合,开发维护困难;
    无法针对不同模块进行针对性优化;
    无法水平扩展;
    单点容错率低,并发能力差;
    2)垂直拆分
    当访问量逐渐增大,单一应用无法满足需求,此时为了应对更高的并发和业务需求,我们根据业务功能对系统进行拆分:
    优点:
    系统拆分实现了流量分担,解决了并发问题;
    可以针对不同模块进行优化;
    方便水平扩展,负载均衡,容错率提高;
    系统间相互独立;
    缺点:
    服务之间相互调用,如果某个服务的端口或者ip地址发生改变,调用的系统得手动改变;
    搭建集群之后,实现负载均衡比较复杂;

    3)分布式架构
    当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。
    此时,用于提高业务复用及整合的分布式调用是关键。
    将一个大的系统拆分成多个子系统;
    优点:
    将基础服务进行了抽取,系统间相互调用,提高了代码复用和开发效率;
    缺点:
    系统间耦合度变高,调用关系错综复杂,难以维护;
    搭建集群之后,负载均衡比较难实现;

    4)面向服务架构(SOA,service oriented architecture):
    基于分布式架构演变来的,俗称服务化,可以理解为面向于业务逻辑开发层。
    将共同的业务逻辑进行拆分、拆分成独立一个项目进行部署,没有视图层。服务概念可以理解为接口。
    将应用中相近的功能模块聚合到一起,以服务的形式提供出去,服务于服务之间通过接口进行通信,其是面向服务的;

    5)微服务架构:
    微服务架构基于SOA架构演变来的。
    单体应用拆分成多个互不相干的小应用,每个小应用称为微服务。
    服务与服务之间通过轻量级的通信机制(通常是基于http、RESTful Api)互相协作、配合;
    每个服务都是围绕具体的目的/业务进行构建,并运行在独立的进程中,可独立部署,可以用不同的编程语言编写,并使用不同的数据存储技术。

    二、应用服务部署方式演变

    1)物理机原生部署:单台物理机安装OS→部署依赖环境→安装应用程序→重复以上步骤在其他物理机部署服务→调试→试生产→生产运营;
    缺点:小时级别部署、硬件资源利用率低、成本投入大、物理机硬件限制软件平台、应用迁移复杂、扩展比较困难(纵向扩展受限);

    2)虚拟机部署:物理机虚拟化(分2种形式)→虚拟机安装OS及环境→部署应用→调试→试生产→生产运营;
    优点:硬件资源池化使得硬件利用率提高、物理资源层面的隔离、不受硬件平台限制、扩展容易、方便对接云化、可将依赖环境的OS打包成一个镜像模板;
    缺点:十分钟级别部署、系统消耗资源高(虚拟化及虚拟机操作系统占用资源);

     

    3)容器化部署:物理机或虚拟机安装OS→从仓库拉取并运行服务镜像→调试→试生产→生产运营; 优点:秒级部署服务,自动运维;

    优点:秒级部署,APP层面的隔离、保证开发、测试、部署、调试、生产、运维的环境高度一致,统资源消耗低,简化配置、提升开发效率;
    缺点:容器多时,管理比较困难;应用不能完全隔离;

     常见的容器项目有:docker;

     4)容器云部署: 在各厂家云平台上使用容器编排工具管理容器;

    优点:K8S等工具实现容器编排及自动化运维;
    缺点:K8S要求较高,出现问题排查难度大。

     常见容器编排工具有:docker-swarm,K8S;

     

  • 相关阅读:
    神经网络反向传播时的梯度计算技巧
    调整Virtual Box硬盘大小
    suse glibcxx版本过高问题
    linux命令之----sort命令用于将文本文件内容加以排序
    ffmpeg编码中的二阻塞一延迟
    Linux下查看编辑二进制文件:hexedit神器
    Unity3D之Mecanim动画系统学习笔记(二):模型导入
    Unity3D之Mecanim动画系统学习笔记(一):认识Mecanim动画系统
    TypeScript学习笔记(六):泛型
    TypeScript学习笔记(五):接口
  • 原文地址:https://www.cnblogs.com/chalon/p/15005167.html
Copyright © 2020-2023  润新知