zoukankan      html  css  js  c++  java
  • 微服务与Docker介绍

    什么是微服务

    微服务应用的一个最大的优点是,它们往往比传统的应用程序更有效地利用计算资源。这是因为它们通过扩展组件来处理功能瓶颈问题。这样一来,开发人员只需要为额外的组件部署计算资源,而不需要部署一个完整的应用程序的全新迭代。最终的结果是有更多的资源可以提供给其它任务。

    • 一种软件架构模式
    • 复杂应用解耦为小而众的服务
    • 各服务精而专
    • 服务间通信通过API完成

    image

    微服务应用程序的另一个好处是,它们更快且更容易更新。当开发者对一个传统的单体应用程序进行变更时,他们必须做详细的QA测试,以确保变更不会影响其他特性或功能。但有了微服务,开发者可以更新应用程序的单个组件,而不会影响其他的部分。测试微服务应用程序仍然是必需的,但它更容易识别和隔离问题,从而加快开发速度并支持DevOps和持续应用程序开发。

    第三个好处是,微服务架构有助于新兴的云服务,如事件驱动计算。类似AWS Lambda这样的功能让开发人员能够编写代码处于休眠状态,直到应用程序事件触发。事件处理时才需要使用计算资源,而企业只需要为每次事件,而不是固定数目的计算实例支付。

    扩展立方模型(Scale  Cube)

    cube

    Y轴 功能解耦 通过分解 不同模块扩展
    X轴 水平副本 通过副本扩展
    Z轴 数据分区 通过分解 相似内容扩展

    Docker是什么

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架包括系统。

    image

    Docker包含两方面技术

    -镜像技术 
    打破“代码即应用”的观念
    从系统环境开始,自底至上打包应用

    image

    image

    微服务和Docker

    Dev
    开发简单有效的模块       
    配置是一个运行时的限制    
    不再是异常复杂的应用   
    new    WebServer().start(8080);
       
    Ops
    管理硬件设施
    监控&反馈   
    不是应用的执行细节    


    结合扩展立方(Scale   Cube)

    image

    Docker化实践

    本质:进程隔离,资源管理

    • App-Centric的体现
    • Single-Process的真实含义

    image

    Docker化实践——进程隔离

    image

    Dockerfile、Docker镜像与Docker容器

    image

    容器内技术栈:
    1.单进程理念
    2.不存在传统的init进程(全局PID=1)
    ——dockerinit与init进程的区别
    3.缺少基本的服务进程
    ——cron
    ——rsyslogd等
    4.与内核进程通信能力薄弱(ipc命名空间隔离)
     
    导致遗留系统Docker化存在压力。 重构?非重构下的最佳实践?

    Docker化实践——日志管理


    原理:stdout&stderr

    传统模式:
          -stdout&stderr   
          -磁盘日志文件
          -日志服务器
    日志持久化磁盘的弊端
          -移植性
          -部署复杂度
    日志Docker层面管理
          -json-file    
          -syslog(并非应用调用syslog)
          -fluetd

    image

    以syslog为例
    image

    Docker化实践——日志管理

    image

    Docker化实践——配置管理

    传统方式:配置文件
    • Docker容器的无状态
    • 配置文件的状态性
    • Docker容器依赖配置文件
    • 额外的配置管理需求
    • 非自动化
    • 非标准化

    • 沿用传统模式——配置文件
    ——使用挂载volume的方式
    ——配置文件与宿主机耦合

    • 采用环境变量方式
    ——打包配置进入Docker镜像
    ——打包配置进入Docker容器
    ——完美支持编排工具compose
     
    • 环境变量与配置文件共存
    ——修改Docker镜像执行入口
    ——使用环境变量替换配置文件


    今天先到这儿,希望对您有参考作用, 您可能感兴趣的文章:
    构建高效的研发与自动化运维
    IT基础架构规划方案一(网络系统规划)
    餐饮行业解决方案之客户分析流程
    餐饮行业解决方案之采购战略制定与实施流程
    餐饮行业解决方案之业务设计流程
    供应链需求调研CheckList
    企业应用之性能实时度量系统演变

    如有想了解更多软件设计与架构,系统 IT,企业信息化 资讯,请关注我的微信订阅号:

    MegadotnetMicroMsg_thumb1_thumb1_thu[2]


    作者:Petter Liu
    出处:http://www.cnblogs.com/wintersun/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    该文章也同时发布在我的独立博客中-Petter Liu Blog

  • 相关阅读:
    5分钟了解为什么学习Go
    jieba gensim 相似度实现
    functiils.lru_cache缩短递归时间
    python深浅copy和赋值
    ajax上传文件 基于jquery form表单上传文件
    form组件类 钩子函数验证
    基于jquery读取input上传的文件内容
    MongonDB指令汇总
    冥想编程
    《如何阅读一本书》读书笔记
  • 原文地址:https://www.cnblogs.com/wintersun/p/5136385.html
Copyright © 2011-2022 走看看