Page 130 - 《软件学报》2021年第5期
P. 130
1354 Journal of Software 软件学报 Vol.32, No.5, May 2021
之前无法得到满足的用户需求数量降为 0.使用了具有简单版本依赖的服务集合 1 的实验 1 与复杂版本依赖关
系的服务集合的实验 2 在系统演化之后,未满足用户需求数量均降到 0,且用户的平均响应时间保持相对稳定.
需要注意的是:在每次演化过程中,平均响应时间均为先增加后减少.因为在每次演化之后,系统需要从 Gateway
向 Cluster Agent 发送请求以为每个需求重新计算路由信息,导致了平均响应时间的增加.在 Gateway 中缓存路
由信息后,Gateway 无需再向 Cluster Agent 发送请求,因此平均响应时间降低.此外,表 1 中的服务可用性表明:
在不同的服务依赖复杂程度下,该系统均能够很好地针对用户需求变化进行自演化,且具有较高的服务可用性.
为了研究不同时间窗口的影响,设置了具有不同演化时间窗口大小的实验 3.实验 3 与实验 2 的设置包括服
务升级时间和用户设置等基本相同,但时间窗口设置为 10 分钟.实验结果显示在图 6(c)和表 1 中.结果表明:随着
时间窗口的增大,系统需要更多的时间来发现未满足的需求,因此服务的可用性降低了很多.但较大的时间窗口
会降低相同时间内系统演化的次数.实验 2 系统共演化了 5 次,而实验 3 系统演化了 4 次,考虑到每次演化过程
都会导致平均响应时间的波动,当时间窗口设置较大时,其他用户受到系统演化的影响就越小.
(a) 实验 1:服务集合 1,演化时间窗口为 5 分钟
(b) 实验 2:服务集合 2,演化时间窗口为 5 分钟
(c) 实验 3:服务集合 2,时间窗口为 10 分钟
Fig.6 Average response time and count of failed demands in service upgrade scenario
图 6 服务升级实验场景下的平均响应时间和失败需求数量
4.1.2 场景 2:新用户需求
该实验对现实世界中的另一种常见情况进行了模拟:用户提出新要求后,开发者发布了新版本服务以满足
用户的新需求.该场景下的用户设置与实验 1~实验 3 不同,部分用户会主动提出新需求,且这些需求无法通过系
统中的服务集合满足.在新需求出现后,能够满足这些新需求的服务在随机的时间内注册到系统.分别使用服务