大规模云计算平台的技术挑战
文 / 刘缙 朱家稷 张海勇正如单机操作系统的内核,在阿里云OS中,飞天大规模分布式计算平台起到了承上启下的关键作用。飞天运行在通过网络互联的通用服务器集群上,隐藏了海量硬件所带来的复杂度和不可靠,向云OS的其他组件提供可信赖的的计算能力和存储能力。具体来讲,飞天本身是一个由多个组件所构成的复杂的分布式系统,其中的核心组件是以下两个子系统。计算资源调度系统(又称伏羲):管...
·
文 / 刘缙 朱家稷 张海勇 正如单机操作系统的内核,在阿里云OS中,飞天大规模分布式计算平台起到了承上启下的关键作用。飞天运行在通过网络互联的通用服务器集群上,隐藏了海量硬件所带来的复杂度和不可靠,向云OS的其他组件提供可信赖的的计算能力和存储能力。 具体来讲,飞天本身是一个由多个组件所构成的复杂的分布式系统,其中的核心组件是以下两个子系统。
- 计算资源调度系统(又称伏羲):管理和调度集群计算资源;在多个云服务间动态分配计算资源,以满足用户的计算需求;自动检测服务器故障并迁移故障服务器上的服务。
- 分布式文件系统(又称盘古):管理集群的所有硬盘;合理地安排数据存放位置以兼顾性能和数据安全性;自动检测磁盘故障并复制数据以保证安全。
- 在不可靠硬件基础上提供高可靠的计算能力和存储能力;
- 提供高可用服务;
- 低成本运维海量硬件;
- 在线应用与离线应用并存;
- 克服节点间带宽的限制;
- 最大化利用计算资源,等等。
- 一种思路是针对每种具体故障设计检测方法。但“软”故障产生的原因可能很多,例如执行缓慢可能是服务器硬件故障、网络故障、磁盘故障、操作系统软件故障等,逐一检测会使系统过于复杂。
- 另一种思路是从宏观现象来检测,下面看两个例子。
- 停止写新数据到这块磁盘,防止更多数据处于危险中;
- 开始为这块磁盘上的数据增加更多副本;
- 当这块磁盘上的所有数据都有额外的副本,就可以将它下线,待运维处理。
- 正常情况下,任何时候集群中都有且仅有很小比例的服务器发生故障,此时自动恢复有效,即使无效也不会造成灾难;
- 如果发生(罕见的)大范围故障,明智的策略是尽量降低系统负载,因为此时实际上已不可能靠故障自动恢复来保持服务质量。万一此时故障自动恢复机制试图进行大量操作,并超出预设的限制,即暂时禁止掉这部分逻辑。
- 保证redo log是多份拷贝的,避免单机故障造成数据损坏或丢失。
- 为降低写入延迟,确保redo log写入多个数据服务器内存buffer后即返回成功,由后台工作线程保证内存数据在很短时间内持久化到磁盘。
- 严格检测redo log数据的健康状态,并及时采取补救策略确保数据的可靠性。
- 确保多个数据服务器成功接收数据并放到内存buffer中(这点是redo log的设计基础)。
- 选择数据服务器充分考虑硬件的隔离性,避免故障的关联。
- 在接受数据时数据服务器判断自身的健康状态:
- 所写的磁盘状态是正常的,并且剩余空间足够;
- 当前的workload状况良好,比如内存和I/O队列没有超负荷。
- 限制从内存buffer到磁盘I/O的最长时间(30秒内)。
- 发现写入超时后(比如磁盘异常慢或I/O请求超载),立刻通知master服务器进行复制备份。
- 当发现写入异常(磁盘坏或者满等)后,立刻报警,通知master复制。
- 监测磁盘异常和后台检查数据完整性,发现异常后立刻通知master复制。
已为社区贡献1642条内容
所有评论(0)