您的位置:首页 > 运维架构 > Docker

微服务与Docker介绍

2017-02-16 10:38 204 查看


什么是微服务

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

• 一种软件架构模式 

• 复杂应用解耦为小而众的服务 

• 各服务精而专 

• 服务间通信通过API完成





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

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


扩展立方模型(Scale  Cube)





Y轴 功能解耦 通过分解 不同模块扩展 

X轴 水平副本 通过副本扩展 

Z轴 数据分区 通过分解 相似内容扩展


Docker是什么

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





Docker包含两方面技术

-镜像技术  

打破“代码即应用”的观念 

从系统环境开始,自底至上打包应用









微服务和Docker

Dev 

开发简单有效的模块        

配置是一个运行时的限制     

不再是异常复杂的应用    

new    WebServer().start(8080); 

    

Ops 

管理硬件设施 

监控&反馈    

不是应用的执行细节    

结合扩展立方(Scale   Cube)





Docker化实践

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

• App-Centric的体现 

• Single-Process的真实含义





Docker化实践——进程隔离





Dockerfile、Docker镜像与Docker容器





容器内技术栈: 

1.单进程理念 

2.不存在传统的init进程(全局PID=1) 

——dockerinit与init进程的区别 

3.缺少基本的服务进程 

——cron 

——rsyslogd等 

4.与内核进程通信能力薄弱(ipc命名空间隔离) 

  

导致遗留系统Docker化存在压力。 重构?非重构下的最佳实践?


Docker化实践——日志管理

原理:stdout&stderr 

传统模式: 

      -stdout&stderr    

      -磁盘日志文件 

      -日志服务器 

日志持久化磁盘的弊端 

      -移植性 

      -部署复杂度 

日志Docker层面管理 

      -json-file     

      -syslog(并非应用调用syslog) 

      -fluetd





以syslog为例 




Docker化实践——日志管理





Docker化实践——配置管理

传统方式:配置文件 

• Docker容器的无状态 

• 配置文件的状态性 

• Docker容器依赖配置文件 

• 额外的配置管理需求 

• 非自动化 

• 非标准化

• 沿用传统模式——配置文件 

——使用挂载volume的方式 

——配置文件与宿主机耦合 

• 采用环境变量方式 

——打包配置进入Docker镜像 

——打包配置进入Docker容器 

——完美支持编排工具compose 

  

• 环境变量与配置文件共存 

——修改Docker镜像执行入口 

——使用环境变量替换配置文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: