Page 122 - 《软件学报》2021年第5期
P. 122
1346 Journal of Software 软件学报 Vol.32, No.5, May 2021
演化操作指令,并自动执行.该组件应该部署在边缘集群的主节点上.
• Gateway.负责处理来自服务实例和用户的所有请求.通过与 Cluster Agent 的协作,为具有不同类型依赖
关系的请求分配满足依赖的实例并进行请求转发.同时对请求进行记录,为在 Control Center 提供历史
数据从而进行 QoS 以及用户需求分析.该组件应该部署在任意边缘节点上.
• Build Center.负责对微服务源代码进行自动编译打包,并使用 Maven 和 Jenkins 自动进行容器镜像的自
动构建以及上传.该组件应部署在任意云端节点上.
通过按固定时间窗口执行自适应控制循环,即可在时间窗口开始时感知到可能的服务质量下降以及用户
需求变化,并自动演化以维持或者提高服务质量.MI4MS 具备以下主要功能.
(1) 通过 Control Center、Service Analyzer 以及 MI4MS 的协作,可以自动从使用了 MI4MS 的微服务源码
中自动抽取出服务接口以及版本依赖信息,从而进行 VDM 的自动构建,并利用 Build Center 对新版本
的服务进行快速构建交付.
(2) 通过 Control Center、VDM 以及 Cluster Agent 能够在满足系统中所有版本依赖时计算出演化方案,
并能够自动执行,降低了开发者维护多版本共存的微服务环境的复杂性.
(3) 通过 VDM、Cluster Agent 以及 Gateway 的协作,能够在满足服务质量的情况下,对系统中带有版本依
赖的请求进行路由,并允许运行时对指定服务的版本依赖进行调整,确保在具有复杂依赖系统中的请
求路由正确性.
2 面向用户需求变化及开发者 DevOps 流程中部署需求的自适应算法
2.1 面向用户需求变化的自适应算法
为了在用户需求发生变化时保持 QoS 稳定,该算法需要考虑版本依赖和其他约束条件生成最佳演化方案.
2.1.1 抽象描述
定义 4. d=〈u,p,loc,t〉,用户 u 在时间 t、地点 loc,按照依赖关系 p∈D 所提出的需求.服务之间的 3 种类型的依
赖关系 D 在这里也用于表示用户在服务系统中的具体需求,即指定服务、接口、版本的 p v ,指定服务、接口、
服务质量的 p i 以及指定功能和服务质量的 p f .D 表示所有的用户需求集合,d∈D.
定义 5. e=〈type,c,loc〉,系统中的服务器节点,其中,type={ES,CS}表示服务器节点类型,ES 代表边缘服务器,
CS 代表云服务器;c 与定义 1 中一致,表示该服务器能够提供给服务实例的运算资源;loc 表示服务器节点的经纬
度坐标.任意两个节点 e i 与 e j 之间的连接通过延迟(单位毫秒)和带宽(单位 Mb/s)表示:link ij =〈deloy ij ,
bandwidth ij 〉.E 表示系统中所有服务器节点的集合,e∈E.其中,边缘服务器节点和云服务器相比有着更低的延迟
和更高的带宽,将服务部署在边缘上能够提升服务质量.但是边缘节点的计算资源有限,需要将一部分实例部署
在计算资源相对无限的云端节点上.
定义 6. τ(s)=〈s,e〉,系统中服务器节点 e 上服务 s 的一个实例.Inst 为系统中所有服务实例的集合,τ(s)∈Inst.
定义 7. r(d)=〈τ(s),i〉,针对用户需求 d 的请求定向状态,表示将用户需求 d 转发到服务 s 的实例τ(s)的接口 i
上.其中,DS 表示系统中所有用户需求的请求定向状态,r(d)∈DS.
定义 8. Θ(t)=〈S(t),E(t),D(t),Inst(t),DS(t)〉,微服务系统在时刻 t 的系统状态,由在时刻 t 的服务集合 S(t)、服务
器节点集合 E(t)、用户需求集合 D(t)、服务实例集合 Inst(t)以及需求请求定向状态集合 DS(t)构成.
定义 9. OP={Switch,Add,Remove},系统演化类型的基本操作集合,其中,
• Switch(d,τ i (s m ),i j ,τ j (s n ),i k ),将用户需求 d 的请求定向状态 r(d)从服务 s m 的实例τ i (s m )的接口 i j 转移到服
务 s n 的实例τ j (s n )的接口 i k 上,其中,m 与 n,j 与 k 可能相同.
• Add(τ(s),e),在服务器节点 e 上部署一个新的服务 s 的实例τ(s).
• Remove(τ(s)),删除服务 s 的实例τ(s).
问题定义. 一个服务系统以时间θ为演化时间间隔,通过一系列演化操作 O={op|op∈OP},从时刻 t 的状态
演化到时刻 t+θ的状态可以表示为