容器技术在分布式系统应用


容器凭借着良好的外部隔离性,非常适合作为分布式系统的基本"对象"。容器屏蔽了底层的代码细节,抽象出了不同类型的应用的通用模式。不止容器的封装特性所带来的天然对象化,在更高层对容器的编排技术也能体现这种思想。从火热的容器编排(k8s)中的各类API对象我们处处都能看到"对象"思想的落地。

容器化应用PaaS云关键技术

主要通过引进Docker、Kubernetes等技术和搭建微服务架构模式来减少对现有应用的影响,即将应用程序分割成更小的相互关联的服务,并采用容器化技术进行微服务的封装、部署、管控。这些服务围绕业务能力构建并且可独立部署,方便地为不同类型的微服务提供差异化的管理策略。以容器技术为核心的支撑技术框架,既满足当前业务支撑系统发展的实际需求,又具有支撑未来业务高速发展的技术先进性。

应用拆分和服务部署方式

PaaS云平台引入微服务架构,并采用容器化技术进行微服务设计、编排、授权和配置,解除应用间的紧耦合和依赖。针对IT支撑系统多种多样的应用及业务,根据使用频次、服务调用开销不同,采用不同策略进行划分和分布式部署。几种应用拆分方式介绍如下:

  1. 针对HTTP/soap应用,采用开源缓存集群部署,将应用和MySQL数据库放在一个镜像(image)中,将会话(session)数据放在第三方缓存,实现快速的水平扩张,可满足类似电渠查询类业务的高峰值交易量需求。
  2. 针对纯计算类应用,如不涉及数据库的DCC应用模块,通过容器化提供大量计算能力,并通过对主控端(master)的多节点部署保障其高可用性。
  3. 针对MySQL类集群进行容器化改造,通过主从复制及共享存储备份解决数据服务的高可靠和安全性,并且可达到裸机的性能和更好的高可用性。拆分后的微服务粒度小,轻便灵活,可实现复杂多种应用场景的敏捷交付。通过容器技术进行服务设计、编排、授权、配置,可解除应用间的紧耦合和依赖,为业务系统升级和扩展提供了良好的技术基础,极大地提高运维效率和系统性能。

容器技术背景

技术特点

云计算本质是资源的按需分配和动态调度,从而提高资源利用率,降低使用成本。容器技术的出现进一步满足了云计算的本质要求,其技术特点决定了容器有可能成为下一代云计算基础设施的基石,容器的技术特点如下所示。

  1. 轻量级容器运行占用资源少,单机可以同时运行上百个容器,相比较传统虚拟化对物理机资源的消耗,容器自身的资源消耗可以忽略不计,其应用装填密度10倍于虚拟机。
  2. 快速启停容器启动速度快,启动时间在零点几秒到数秒之间,这一特性保证了动态调度的实时性,在保证应用正常运行的前提下,可以更加高效地调度和调整资源。
  3. 高性能容器没有传统guestOS层次,直接通过内核访问物理机资源,各方面性能接近裸机,从而可以进一步提高系统资源的利用率。
  4. 标准化采用标准化的容器控制接口和镜像打包格式,各类管理平台可以方便地调用统一接口,实现对容器资源的纳管。
  5. 镜像管理容器采用分层文件系统保存镜像,通过镜像仓库提供镜像文件的保存和分发,实现了容器镜像的一键式部署和快速复制,保证了开发测试生产环境的一致性和应用快速复制的高效性。
  6. 集群化容器往往使用集群方式部署和调度,通过集群系统自带的负载分发和服务发现等机制实现了大规模资源的按需分配、动态调度,保证了应用的快速部署和弹性扩展。另外,容器技术的代表——Docker公司从开始就将Docker完全开源,推动了整个容器技术生态的开源化发展。目前产业界各类主流容器解决方案基本采用全开源软件构建,大大降低了后进者的学习门槛和开发成本,从而保证容器技术生态圈迅速发展壮大。

技术体系

容器技术核心体系主要包括了三大部件,分别是容器引擎、镜像仓库和容器管理,在其周边还有一些网络、存储等方面的辅助部件,构成了完整的容器技术栈,如图所示
在这里插入图片描述

容器引擎

容器引擎是整个容器技术栈的核心,负责容器的创建、运行和管理,为容器挂载存储和网络资源,并对外提供轻量级的容器管理接口。容器引擎在操作系统上引入一个抽象层,封装了与底层系统内核交互的内容,屏蔽不同Linux发行版的差异性,使得容器具备跨OS移植的能力。目前主流的开源容器引擎包括Docker公司的Docker、Ubuntu的LXC/LXD和CoreOS团队的Rocket。

镜像仓库

镜像仓库打包了应用软件、运行环境和依赖库,采用分层结构构建,镜像可以像积木一样层层堆叠。容器镜像存储在镜像仓库中,镜像仓库管理容器镜像的迭代版本、依赖关系和其他相关的元数据,对外提供镜像管理接口,以支持镜像的上传、下载和检验。目前主流的开源镜像仓库包括Docker公司的Registry和VMware公司的Harbor。

容器管理

由一系列分布在多个主机的控制节点和计算节点组成。为了支撑分布式系统的复杂工作负载,让众多跨主机的容器协同工作,需要有相应的框架和解决方案来支撑容器集群的服务编排、资源调度和服务发现,保证整个集群能够可靠、高效、合理地运转。目前主流的开源容器集群框架包括Docker公司的Swarm、Google公司的Kubernete和Mesosphere公司的Mesos。

猜你喜欢

转载自blog.csdn.net/qq_33873431/article/details/106420736