Tuxedo作为一款成熟的交易中间件,具有强大的交易处理性能、高度的可靠性和无限的伸缩性。Kubernetes作为新兴容器编排调度引擎,基于容器技术,实现资源管理的自动化以及跨多个数据中心的资源利用率最大化。前者以交易事务管理闻名,后者以容器编排著称。无论是Tuxedo还是Kubernetes,其运行离不开网络、设备及存储等基础设施的支撑。
本文重点对运行于基础设施之上两者运行特点进行分析对比,使具有Tuxedo运维经验的运维人员对Kubernetes有进一步的了解,给后续Kubernetes运维提供参考借鉴。
Tuxedo
Tuxedo ATMI体系架构图
大多数Tuxedo应用都是采用ATMI来实现运行环境和编程接口的,其体系架构如上图所示,整个架构划分为外部接口和内部服务层两个部分。外部接口层的基础是ATMI层,之上是Client。Tuxedo服务层包括通讯模型、管理信息库(MIBs)、应用服务器及管理服务器等。通讯模型指的是Tuxedo客户端和服务端、Tuxedo服务端与服务端之间传递消息的模型。管理信息库为其他应用程序管理和配置Tuxedo系统提供接口,通过该接口,使用人员可以对Tuxedo配置信息进行动态调整及对其运行状态进行实时监控(如某些系统通过MIBs获取Tuxedo队列地址、队列深度等实现流量控制)。应用服务为ATMI应用程序提供了数路由、编码、负载均衡和命名服务等。管理服务为ATMI应用程序提供事件、安全等服务。
Kubernetes
Kubernetes作为一个开源的大规模容器集群管理软件,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部属容器化的应用简单并且高效,Kubernetes提供了应用部署、规划、更新和维护的一种机制。典型Kubernetes架构图如下所示:
典型Kubernetes架构图
如上图所示,Kubernetes将集群中的机器划分为一个Master节点和一群工作节点(Node)。其中,在Master节点上运行着集群管理相关的一组进程:kube-apiserver、kube-controller-manager、kube-scheduler、etcd和kube-ctl。这些进程实现了整个集群的资源管理、Pod调度、弹性伸缩、安全控制、系统监控和纠错等管理功能,并且都是全自动完成的。Node作为集群中的工作节点,运行真正的应用程序,在Node上Kubernetes管理的最小运行单元是Pod。Node上运行着Kubernetes的kubelet、kube-proxy、docker和kube-ctl,这些服务进程负责Pod的创建、启动、监控、重启、销毁,以及实现软件模式的负载均衡器。
0 1上面对Tuxedo和Kubernetes的基本架构和组成要素进行了简要介绍,下面通过如下几个方面对两者进行对比分析:
运行态
应用程序要正常运行并提供服务,除了依赖的底层基础设施(如网络、服务器、存储等)外,还依赖应用本身的可执行文件及对应配置文件。基于Tuxedo应用在生产部署及运行时主要依赖应用程序包(可执行文件)、配置文件(ubb和bdm),基于Kubernetes应用在生产部署及运行时同样主要依赖应用程序包、配置文件(YAML或ConfigMap)。二者均通过配置文件和执行文件的组合,实现了服务的正常运行、服务(或服务数)控制或弹性伸缩、负载均衡、容错、监控检测等功能。Tuxedo中进程或可执行文件做为服务的载体,其在
Tuxedo配置文件主要参数如下所示(节选):
*RESOURCES
……
LDBAL Y 负载均衡
SCANUNIT 10