Page 134 - 《软件学报》2021年第5期
P. 134

1358                                     Journal of Software  软件学报 Vol.32, No.5,  May 2021

                 执行.但是在这些工作中,没有考虑到复杂的用户需求变化,且忽略了微服务之间的版本依赖.本文通过监控用
                 户需求变化,利用 MAPE-K 模型,结合版本依赖模型,运行微服务版本依赖的不断变化,并能够针对用户需求变
                 化自动执行演化方案来维持或者提升系统服务质量,大幅度降低了需求频繁变化的复杂系统维护的复杂性.

                 6    总结和下一步工作

                    本文面向多版本并存的微服务系统提出了针对用户需求变化的自适应方法和系统实现.针对不断变化的
                 微服务之间的版本依赖,提出了版本依赖模型,并实现了依赖模型的自动构建;针对有着复杂版本依赖的用户需
                 求变化的场景,实现了适用于不同需求变化场景的演化算法,能够得到较优的演化方案;针对开发者的 DevOps
                 流程中的部署需求,提供了几种常用的操作及对应算法,并能够自动考虑依赖关系来降低开发者的负担.为了让
                 微服务系统具备自适应能力,实现了编程框架 MF4MS 和自适应系统结构 MI4MS,在满足版本依赖的情况下,能
                 够自动针对用户需求变化进行演化,并保持服务质量稳定,以及针对 DevOps 流程中的部署需求,降低 DevOps 的
                 复杂程度.
                    在目前的 MI4MS 设计方面,服务系统内部微服务之间相互调用的东西流量依然需要 Gateway 进行协调,
                 从而避免依赖不满足、服务实例的服务能力不够等情况.和传统的负载算法在服务调用方实现以及点对点通讯
                 方式相比,好处是不再需要额外的模块来确保在每个实例独立负载决策时,全局范围内的约束条件(如每个服务
                 实例的服务能力)依然能够得到满足.在全局约束下,无法完全在实例侧进行负载均衡,需要额外的措施确保每
                 个实例的负载均衡结果满足全局约束,考虑到本文的目标是多版本依赖下的自适应问题,本文直接在 Gateway
                 中进行相关控制.此外,也可以通过在实例侧增加额外的路由规则缓存,并通过合适的缓存失效机制确保缓存的
                 有效性,从而实现生命周期中的大部分时间内进行点对点连接.
                    在用户需求方面,虽然本文考量了用户需求变化中新需求的出现等问题,这些新需求依然局限于现有的服
                 务集合,即系统能够自适应的用户新需求必须是现有服务集合中能够满足的需求,否则无法通过部署相关服务
                 实例来满足新需求,未来需要提供合适的基于外部服务库等方式主动为系统用户提供满足新需求的新服务.
                    此外,由于系统需要收集到全局的信息后才能够进行决策并进行相关演化,导致演化操作往往不能够第一
                 时间被触发.比如规模较大时,系统中可能只有一个比较集中区域内的用户需求发生了剧烈变化,其他地区没有
                 变化,那么此时系统依然需要等待时间窗口,并收集全局所有信息才能够进行自适应演化,导致了不必要的性能
                 影响,因此需要进一步考虑系统的区域划分问题.同时,当规模扩大后,集中式的算法不易处理大数量级别(比如
                 几千服务器节点、几十万服务等)的数据,通过对整个系统进行合适的区域划分,利用区域之间的协同优化,实现
                 区域之间演化窗口的相互独立以及问题的分解.
                    后续可能的工作:首先,集中式的微服务系统调度将集中了全部的分析、计算工作,浪费了其他节点的资源,
                 同时还需要将所有的数据都收集到一起,有着大量的数据传输,响应速度变慢,后续工作引入去中心化演化,将
                 整个系统区域化,各个区域之间进行独立且协同演化;其次,当出现新需求时,如果系统中现有的服务无法满足,
                 则不会主动给出解决方案,下一步工作会对功能空洞监测以及功能空洞的自动、半自动补全,以在出现无法满
                 足的新需求时依然能够继续维持系统的服务质量;此外,目前的算法仍然需要进一步的提升,才能够达到大规模
                 系统的自适应需求.

                 References:
                 [1]    Gaur A, Scotney B, Parr G, McClean S. Smart city architecture and its applications based on IoT. Procedia Computer Science, 2015,
                     52:1089−1094.
                 [2]    Feng ZY, Xu YW, Xue X, Chen SZ. Review on the development of microservice architecture. Journal of Computer Research and
                     Development, 2020,57(5):1103−1122 (in Chinese with English abstract).
                 [3]    Wu HY, Deng WJ. Research progress on the development of microservices. Journal of Computer Research and Development, 2020,
                     57(3):525−541 (in Chinese with English abstract).
   129   130   131   132   133   134   135   136   137   138   139