集中式结构
什么是集中式结构?
集中式结构就是由一台或多台服务器组成的中央服务器,系统内的所有数据都存储在中央服务器中,系统内所有的业务都先由中央服务器处理。多个节点服务器与中央服务器连接,并将自己的信息汇报给中央服务器,由中央服务器统一进行资源和任务调度:中央服务器根据这些信息,将任务下达给节点服务器;节点服务器并行任务,并将结果反馈给中央服务器。
集中式结构最大的特点,就是部署结构简单。
本文会描述下面3种经典的集中式结构:
- Google Borg
- Kubernetes
- Mesos
Google Borg
Borg是Google内部使用的集群管理系统,采用了典型的集中式结构。在Borg中一个集群被称为一个Cell,每个Cell里面有一个Leader,称为BorgMaster,还有一系列的节点,称为Borglet。
BorgMaster包含两个进程:
- 主进程:处理客户端的RPC请求,同时管理系统中所有实体的状态,并负责和Borglet通信。
- scheduler:负责任务调度,通过任务对资源的需求以及当前Borglet所在服务器的资源情况进行匹配,为任务寻找一个合适的节点服务器执行。
Borglet是运行在每个节点机器上的agent,负责任务的拉起、停止、重启等,并管理和收集本服务器资源,将任务的状态、服务器状态等信息上报给BorgMaster,而BorgMaster会周期性的轮询每个Borglet,以获取节点服务器的状态和资源信息等。
Borg可以运行各种各样的任务,这些任务分为两类:
- 长服务:长时间运行不停止的服务,并且要求能够处理短暂的、延迟敏感的请求。
- 批处理任务:通常需要几秒到几天的时间来完成的批处理Job。
Borg的三个优点:
- 开发者只需要关注应用,不需要关注底层资源管理。
- 高可靠性和可用性,支持多种应用。
- 支持上千服务器的管理和运行。
Kubernetes
Kubernetes也是典型的集中式结构,它主要由Master节点和Slave节点组成,以及客户端命令行工具kubectl和其他附加项。
Master节点运行在中心服务器上,它由API Server、Scheduler、Cluster State Store和Control Manager Server组成:
Worker节点是真正的工作节点,运行在从节点服务器,包括kubelet和kube-proxy核心组件,负责运行业务应用的容器。
Kubernetes在容器管理方面的优势:
- 自动化容易得部署和复制
- 将容器组织为组,弹性伸缩
- 荣期间负载均衡
- 基于版本控制与滚动更新。
Mesos
在Mesos中,一个集群包括Mesos Master和多个Mesos Agent。
Mesos Master负责收集和管理所有Agent所在服务器的资源和状态,并且对接Spark、Hadoop等框架,将集群中服务器的资源告知给这些框架,以便这些框架进行任务资源匹配和调度。
Mesos Agent复杂任务的拉起、停止、重启等,负责收集所在服务器的资源信息和状态,并上报给Mesos Master。
Mesos的优势在于:
- 效率
- 可扩展性
- 模块化