十四:对微服务与持续交付之容器的理解

目录

1. 简介

了解什么是Docker,了解微服务与容器的关系,为什么docker适合微服务架构的持续交付。以及如何解决资源调度问题,Kubernetes。对于最后一部分,当前系列博客是以理解微服务架构微主,开篇之初就提及文章中每行字都要经过自己的大脑和双手,所以这里将Kubernetes中文社区中相关的东西搬过来也没有意义且违背初衷。从以下方面理解:
2. 什么是Docker
2.1 概念
2.2 通俗理解
3. 为什么Docker适合微服务架构
4. 基于容器的持续交付流程是怎样的
5. 如何解决资源调度问题
5.1 什么是Kubernetes
5.2 Kubernetes设计架构
5.3 Kubernetes设计理念

2. 什么是Docker

2.1 概念

Docker 是一个开源应用容器,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

2.2 通俗理解

摘录于知乎,刘允鹏

  Docker的思想来自于集装箱,集装箱解决了什么问题?在一艘大船上,可以把货物规整的摆放起来。并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响。那么我就不需要专门运送水果的船和专门运送化学品的船了。只要这些货物在集装箱里封装的好好的,那我就可以用一艘大船把他们都运走。docker就是类似的理念。现在都流行云计算了,云计算就好比大货轮。docker就是集装箱。
  1.不同的应用程序可能会有不同的应用环境,比如.net开发的网站和php开发的网站依赖的软件就不一样,如果把他们依赖的软件都安装在一个服务器上就要调试很久,而且很麻烦,还会造成一些冲突。比如IIS和Apache访问端口冲突。这个时候你就要隔离.net开发的网站和php开发的网站。常规来讲,我们可以在服务器上创建不同的虚拟机在不同的虚拟机上放置不同的应用,但是虚拟机开销比较高。docker可以实现虚拟机隔离应用环境的功能,并且开销比虚拟机小,小就意味着省钱了。
  2.你开发软件的时候用的是Ubuntu,但是运维管理的都是centos,运维在把你的软件从开发环境转移到生产环境的时候就会遇到一些Ubuntu转centos的问题,比如:有个特殊版本的数据库,只有Ubuntu支持,centos不支持,在转移的过程当中运维就得想办法解决这样的问题。这时候要是有docker你就可以把开发环境直接封装转移给运维,运维直接部署你给他的docker就可以了。而且部署速度快。     
  3.在服务器负载方面,如果你单独开一个虚拟机,那么虚拟机会占用空闲内存的,docker部署的话,这些内存就会利用起来。总之docker就是集装箱原理。

3. 为什么Docker适合微服务架构

结合Docker,可以有效地解决微服务架构下,服务粒度细、服务数量多所导致的开发环境搭建、部署以及运维成本高的问题
利用Docker容器化技术,能实现一个节点运行几十上百的Docker容器,每个容器独立运行一个服务,降低了随着服务数量增多导致的节点数量跟着增多带来的成本

4. 基于容器的持续交付流程是怎样的

发布流程

5. 如何解决资源调度问题

业界成熟方案:Kubernetes,一下资料参考Kubernetes中文社区。传送门

5.1 什么是Kubernetes

Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。

小节《为什么Docker适合微服务架构》说明了微服务架构使用Docker的好处,Docker是一个开源应用容器,解决微服务的资源调度问题也就是解决Docker容器的资源调度问题。而K8s正是致力于解决容器化部署的应用简单、高效。

5.2 Kubernetes设计架构

  当前系列博客是以理解微服务架构微主,开篇之初就提及文章中每行字都要经过自己的大脑和双手,所以这里将Kubernetes中文社区中相关的东西搬过来也没有意义,暂放传送门,后续实际使用会深入了解,放系列文章。

5.3 Kubernetes设计理念

  暂放传送门,后续实际使用会深入了解,放系列文章。

猜你喜欢

转载自blog.csdn.net/chenghuaying/article/details/81433765