论文部分内容阅读
自2014年Martin Fowler正式提出微服务这一架构概念后,微服务引起业界的广泛关注,并且随着大量企业如Amazon、Netflix将自身的核心业务转为由基于微服务的解决方案提供后,微服务架构的落地得到充足的工业生产经验,微服务架构正逐渐成为企业应用架构的主流。而微服务架构作为分布式系统开发的一种风格,不可避免的将分配资源和提供网络服务作为应用目标。由于微服务架构自身的特点,会因划分太多服务导致出现资源浪费的情况,因此资源优化成为目前微服务架构的主要研究方向。当前在基于微服务应用的资源分配方法上,主流的方法有根据预测的工作负载来进行资源分配的策略制定,通过监视应用程序资源消耗以调整虚拟机的数量来优化资源使用,通过设定规则求解次优解来制定资源分配策略,通过设定规则求解最优解来制定资源分配策略等。这些方法没有考虑到分配资源的根本原因是为了满足用户的访问需求,并且尽可能的节约成本,因此资源分配方法还有很大的改进空间。在基于微服务架构应用平台中,不同的用户有不同的访问习惯和行为偏好,对于应用平台的不同功能点的访问行为有较大区别。如果不针对用户的行为偏好来进行资源的分配,势必会造成某些服务处于空闲状态,而某些服务处于超载状态,十分影响用户的体验和系统的性能。而本文以基于微服务架构应用平台为背景,针对这一问题进行了深入研究:1.提出一个基于用户行为偏好的负载预测模型。首先通过用户历史访问数据和用户私人数据来构建用户画像,来学习用户行为偏好,从而刻画用户在不同功能点的访问路线,最后利用此模型预测用户未来对功能点的访问趋势。另外为了利用服务历史负载的信息,运用基于线性方法和非线性方法的混合预测模型来进行负载预测。完整的负载预测模型结合了用户行为偏好的特征和基于服务历史负载构建的混合预测模型。2.提出一个基于多智能体强化学习方法的资源分配模型。将每类服务视为一个智能体,根据在多智能体环境中进行分散训练策略的Actor-Critic算法,引入注意力机制。并且结合第一部分的负载预测模型,使资源分配模型学习在不同的负载情况下最佳的资源分配策略。最终模型能够在满足用户需求的情况下,消耗最少的资源。最后,本文通过仿真实验对上述的方法进行实验评估。实验证明,本文所提出的资源分配方法比传统的资源分配方法更有优势。通过上述研究,本文实现了一种新的资源分配方法。基于微服务架构的应用可以根据本文提出的方法来设计自己的资源分配方法,在满足用户需求的情况下,减少资源消耗,避免资源浪费。