Docker: Consul是什么?

【Docker: Consul是什么?】在计算机技术日新月异的今天, Docker 在国内发展的如火如荼 。特别是在一线互联网公司 Docker 的使用是十分普遍的,甚至成为了一些企业面试的加分项,那么今天我们继续关于Docker 的精华问答 。
1
Q:Consul是什么?
A:Consul是一个分布式、高可用的系统,是一个为了解决在生产环境中服务注册,服务发现,服务配置的一个工具,它有多个组件,提供如下几个关键功能:
服务发现:Consul的某些客户端可以提供一个服务,例如api或者MySQL,其它客户端可以使用Consul去发现这个服务的提供者 。使用DNS或者HTTP,应用可以很容易的找到他们所依赖的服务 。
健康检查:Consul客户端可以提供一些健康检查,这些健康检查可以关联到一个指定的服务(服务是否返回200 OK),也可以关联到本地节点(内存使用率是否在90%以下) 。这些信息可以被一个操作员用来监控集群的健康状态,被服务发现组件路由时用来远离不健康的主机 。
键值存储:应用可以使用Consul提供的分层键值存储用于一些目的,包括动态配置、特征标记、协作、leader选举等等 。通过一个简单的HTTP API可以很容易的使用这个组件 。
多数据中心:Consul对多数据中心有非常好的支持,这意味着Consul用户不必担心由于创建更多抽象层而产生的多个区域 。
2
Q:为什么要用它?
A:现在企业应用都向微服务化方向发展,当把我们的系统功能拆分成一个一个的微服务后,存在以下问题
需要配置N个服务的网络位置,加大配置的复杂性
服务的网络位置变化,都需要改变每个调用者的配置
集群的情况下,难以做负载(反向代理的方式除外)
3
Q:Docker构架
A:Docker使用C/S架构,Client 通过接口与Server进程通信实现容器的构建,运行和发布 。client和server可以运行在同一台集群,也可以通过跨主机实现远程通信 。

Docker: Consul是什么?

文章插图
4
Q:Docker vs VM
A:VM是一个运行在宿主机之上的完整的操作系统,VM运行自身操作系统会占用较多的CPU、内存、硬盘资源 。Docker不同于VM,只包含应用程序以及依赖库,基于libcontainer运行在宿主机上,并处于一个隔离的环境中,这使得Docker更加轻量高效,启动容器只需几秒钟之内完成 。由于Docker轻量、资源占用少,使得Docker可以轻易的应用到构建标准化的应用中 。但Docker目前还不够完善,比如隔离效果不如VM,共享宿主机操作系统的一些基础库等;网络配置功能相对简单,主要以桥接方式为主;查看日志也不够方便灵活 。
Docker: Consul是什么?

文章插图
Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护 。使得 Docker 技术比虚拟机技术更为轻便、快捷 。
作为一种新兴的虚拟化方式,Docker 跟传统的虚拟化方式相比具有众多的优势 。Docker 容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多;Docker 对系统资源的利用率很高,一台主机上可以同时运行数千个 Docker 容器 。
5
Q:多个 Docker 容器之间共享数据怎么办?
A:如果是同一个宿主,那么可以绑定同一个数据卷,当然,程序上要处理好并发问题 。如果是不同宿主,则可以使用分布式数据卷驱动,让分布在不同宿主的容器都可以访问到的分布式存储的位置 。如S3之类 。




    推荐阅读