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

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

                 change 值为 15,大于 95%的微服务对;且这对微服务的代码相似度值高达 96.4%.此外,ts-order-service 和 ts-order-
                 other-service 的 co-change 值为 26,代码相似度为 94%;ts-travel-service 和 ts-travel2-service 的 co-change 为 10,
                 代码相似度为 85.8%.可见,频繁发生跨服务修改的原因之一是微服务代码存在高度代码克隆:当一个微服务发
                 生修改时,与之代码相似的微服务需同步更新,从而发生频繁跨服务修改,导致难以独立更新和演化.















                        Fig.4    Statistical chart of the code similarity between microservice pairs in Train-Ticket system
                                      图 4  Train-Ticket 系统中微服务间源代码相似度统计图
                    图 5 展示微服务 ts-travel-service、ts-travel2-service、ts-order-service、ts-order-other-service 的 idd 值相对
                 偏高,意味着它们频繁被其他微服务调用来处理用户请求.ts-admin-basic-info-service 的 odd 值相对偏高,说明此
                 微服务经常调用其他服务来完成功能.SCN 度量值为 2,即 2 对服务间存在循环依赖,分别是 ts-seat-service 和
                 ts-travel-service 间、ts-seat-service 和 ts-travel2-service 间.










                                                     (a) odd,idd 值的箱线图















                                                     (b) odd,idd 值的曲线图
                                Fig.5   Measurements of odd, idd for microservices in Train-Ticket system
                                       图 5  Train-Ticket 系统中微服务的 odd、idd 度量结果

                    图 6 展示了 isg 和 icl 度量值的分布和详情.在去冗余后的 40 条代表性的 trace 中,70%的 trace 的 isg 值等
                 于 2、icl 值等于 1,即系统处理用户请求时常常经由 2 个微服务处理、平均涉及 1 次跨服务调用.但是,ID 为
                 532ee705767389b、f4f859e39007036、c8d065b0825594d 这 3 条 trace 的 isg 和 icl 值比其他 trace 明显高,说明
   105   106   107   108   109   110   111   112   113   114   115