论文部分内容阅读
随着云计算的发展和普及,大量的计算任务由本地设备迁移至云计算系统中来。与此同时,大数据和人工智能概念的兴起及其实际应用的有效落地,对大规模的计算能力提出了更高的要求,对计算能力和数据存储能力的需求成指数增长。因此,提高云上系统的性能和效率将会带来巨大的经济效益。云计算系统的后端一般为高效的分布式系统,节点间通过网络连接,作为一个统一的整体对外提供计算和存储等服务。数据一致性是分布式系统正常工作的重要前提。一方面,分布式系统节点间的协调和调度需要所有节点对系统当前的全局运行状态有一致的认识,从而使节点间的协同成为可能。另一方面,为了保证数据可靠性,分布式存储系统会将单份数据的多个副本存储于不同的物理节点中,从而减少数据丢失的可能性。在采用普通商用服务器的数据密集型的分布式系统中,由于网络、硬件设备故障等原因,在多次读写后,多个副本间容易出现不一致的情况,读取数据时有可能获得老旧数据,而这是一个分布式存储系统所应该避免的情况。由此可见,维护数据一致性对分布式系统至关重要。然而,一致性的维护依赖于频繁的校验和数据传输,耗费大量的计算资源。当副本数较多、网络基础设施不足时,数据密集型的分布式存储系统对一致性的维护过程将成为性能瓶颈。本文以OpenStack Swift为例,以维护数据一致性所产生的瓶颈问题为主,研究了数据密集型分布式存储系统所面临的主要问题及其解决办法。文章的主要贡献为:(一)深入研究了分布式存储系统现有的技术背景,采用理论分析与实验验证相结合的方式,分析了数据密集型的分布式对象存储系统在数据频繁更新状态、节点失效状态以及节点失效后的恢复状态下出现的性能瓶颈及其原因。(二)提出了一种内存中的哈希维护策略,减少了频繁的磁盘读写操作,从而提高了数据更新和节点恢复状态下系统的整体性能。(三)提出了基于超时统计的失效节点检测和处理机制,以及基于优先队列的失效节点快速恢复机制,以提升系统在节点失效状态及失效节点恢复状态下的同步性能。(四)为高效地统计网络流量以辅助前述研究,本研究实现了一款Linux下的流量统计软件,可精确统计特定事件之间某个进程所有端口的进出流量。