面向微服务软件开发方法研究
2021-09-23张志国
张志国
(上海派遣人才有限公司 上海市 200070)
微服务是 SOA 架构的一种变体,基于轻量级协议与细粒度服务进行应用程序构造与软件开发设计,可凭借其扩展性优势进行开放平台的部署,实现降低成本、缩短开发周期的应用效果。利用微服务的简易架构进行开放平台的设计与开发,能够让数据交流与传输效率更为高效,确保了信息传送的高效性与开放性。
1 微服务架构
微服务架构十分轻便小巧,运行模式十分便捷。每个微服务独立运行安放,各自发挥自身的功能。每个微服务单独实现对应的功能,该功能是由微服务进行封锁包装。技术路线选择各异,进行独自更新。面对容量十分庞大,同一时间内执行多个程序的情况之下,此时微服务是不二选择。面对开发大型的系统时,并且有着十分庞大的项目团队,这时候就要浪费大量的时间在更新软件上,而且不能方便有效地维护系统等情况时,微服务可以从根本上解决这些问题。从而大大节约了时间,从而节约了物力人力,提高了工作效率,从而更好地将项目顺利完成。
2 复杂服务软件系统的建模
服务业务层主要是由服务消费者,服务提供者,以及服务监管者三部分组合而成的,如图1所示。
Service Mesh 对服务实例所需的资源管理接口、消息路由接口、流量控制接口、监控测量接口进行打包封锁,监控日志以及流量是每个微服务必不可少的配置。感知、决断、执行的能力是适应性软件的基本能力,基于 Service Mesh 的自适应软件框架是具有以上功能的。如图2所示。
3 微服务软件开发分析设计
面对复杂的软件开发,开发工作人员就需要专业与之匹配的专业工具来辅助更好地完成相关的开发工作。从而能更好完成软件的开发设计和维护管理。如此一来开发出来的额软件才更具有稳定性和。从而满足软件服务的根本要求。如果想要科学精准有效地保持繁杂软件具有一定的适配能力。就需要引入先进的创新的技术理念和软件工具集,来对分析软件,部署更新,运行维护这三个阶段来进行监管。
3.1 分析设计阶段
3.1.1 服务需求建模
产生刻画复杂服务软件系统的多主体回路模型是服务需求建模的目的,从而描绘出复杂服务系统中关联Agent与其他主体之间的有效交通,其中包含了一些非常纷繁复杂的社会性质先关系统技术。对主要的业务指标群集进行有效定义。在处理 Agent时,可以根据BPMN的原则来进行有效设计系统,定对Agent功能来进行有效定义,确保Agent的服务和QoS 加以规范化。
3.1.2 服务语义建模
在面对大规模、多样化、关系复杂的服务元数据时,可以采用服务语义建模,其精准度高,而且能够十分高效地表示建模服务语义,从而更好支持智能服务的应用与匹配。融合多源数据、标注人工语义、基于图神经网络的语义和知识图谱表示学习是服务语义建模的主要特点,从大量的非结构化的数据中,自动构造面向服务适配的服务图和语义知识图。
3.1.3 服务适配组合
其具体包括以下研究内容:
图1:复杂服务软件系统的分层架构
图2:基于 Service Mesh的自适应软件框架
服务智能组合功能需要通过构造语义驱动来实现,微服务的语义聚类是由微服务的语义画像来完成的。遵照BPMN程序的基本特性,从而寻找到与微服务语义契合的群集。寻找一些在语言结构以及特点上具有相似性质的微服务集合。科学有效地对服务主体的建模进行支撑。最终让开发软件的工作人员完成BPMN程序到微服务程序的映射。
在进行流程的组合时,可以将微服务的适配自动插入功能实施到整个流程的组合中来。如此一来便可以让上下游微服务的智能承接功能得以有效实施。其次,根据服务主体中的业务核心指标集KPIb ,把 BPMN 流程的QoS规范转化为微服务流程的 QoS 要求,科学有效地确保部署和运行。因此必须要对微服务流程和编排功能进行设计。还有科学有效管理微服务的组合方案。让集成和编排部署工作实现连续化。将整个业务流程和微服务的组合功能进行动态化的管理与维护,并且保证他们的一致性与合理性。管理持服务流程的版本、将其动态实施与管理,并遵从流程适配的功能要求、QoS 要求、成本约束要求,优化逻辑方案和物理方案。
3.1.4 交付更新阶段
构成智能化、有效性,精准的服务代码以及托付整个演变过程。完成审计繁琐的服务演变流程是交付更新的首要任务。
交付更新阶段一共分为三个步骤分别是持续集成、持续部署、金丝雀部署和灰度发布
(1)持续集成。最具有代表性的连续性集成工具有 Git Lab CI1)是 Git Lab 内置的持续集成工具,通过创建CI 配置文件在仓库的根目录下,将 build 组件 Git Lab Run- ner进行配置,从而实现了无论在何种场景下都能够实现自动构建功能。
(2)持续部署。以容器镜像库作为基础是持续部署的主要特点,通过YAML文件的有效引导,从而把 Docker 镜像持续部署到目标环境。最具有代表性的持续部署工具 Ar- go CD2就是依据声明式 Git Ops 理念的持续部署工具。还能够科学有效地控制版本,其具有完全自动化以及可审计的应用部署和生命周期。
(3)金丝雀发布以及灰度发表。和他有异曲同工之妙是灰度发布。系统单一是金丝雀策略拥有的属性和特点。软件更新方式是以旧代新,自动替换。他们共同的具有代表性工具有 Argo Rollouts 3), Istio4)和 Flag- ger5)。Argo Rollouts 在面向K8S中是最有代表性的。对于蓝绿的灰度发布和金丝雀部署支持度很高。Istio 的服务网格是完全具有开源特性。将透明部分与分布式应用程序相互接入,如此一来便可以将所有的日志进行集成,以及远距离测试策略系统的API接口。Flag ger 是一个开源的 Kubernetes operator,它的主要功能就是帮助解决不间断的交付环节中如果一旦发生失败的情况以及在系统无法使用的情况下等问题的产生。
4 未来研究方向
为了能够让微服务软件设计能够有效实现,在工业方面相关人员已经开发出了很多微服务框架(如Spring Cloud等)和开源解决方案(如Netlix开源组件、服务网格Istio.Docker等),并且大大得到普及,在整个学术界也有相关的专业人士表述了关于如何实现面向微服务软件设计的方式方法。但是同时需要对其进行有效验证,看它是否具备一定的大规模系统开发需求。除此之外,在对微服务软件展开有效设计时,此过程受到很多外部因素和内部因素的制约与影响。从而给开发设计工作带来了严重的挑战和困境。
为了能有有效实现微服务软件的设计与开发,相关的工作人员应该深入全面了解剖析已有的实战经验。在已有的基础之上对当前存在的缺陷和弊端展开游戏哦啊分析。与此同时,大力引入汲取最新的科学和学术研究成果,充分验证这些学术成果,另外,还要科学有效合理地评估并研究微服务的设计质量。科学全面评估整体的质量功效。从而有效促进并且帮助相关的开发人员更好地完成设计工作。
通过展开对微服务软件的有效测试,我们发现目前仅有的测试方式有组件测试、端到端测试、回归测试、验收测试、变异测试和软件调试几种类型。但是由于相关的工作人员技术有限,能力有限,导致了到目前为止仍然没有完备的测试方法来针对于微服务内部逻辑结构。此外,目前仅仅拥有关注自动化测试框架的构建,没有进行深入考究对面向微服务的测试建模、测试用例生成、测试预期输出判定以及故障定位等。
如果想要对微服务软件展开科学合理有效测试。就需要相关的工作人员通过引入传统测试技术的基础之上加以优化和创新。期间要保持测试具有有效性,创新性,准确性,全面性,高效性稳定性等等。除此之外,通过在微服务测试的测试建模、测试用例生成、测试预期输出判定以及故障定位等各个阶段开发相应的自动化测试方法和工具,形成系统的微服务测试方法体系。
对于微服务重构来说,迄今为止有较多的研究数量,相关的工作人员和学者探索了重构程序和重构方法。同时还阐述了大量的将单体应用迁移为微服务的方法,而且通过实证研究予以证实。但是,已有的重构方法能否和现代的大规模系统相互适应依然需要相关人员进一步展开验证。通过对比不同重构方法和评估上相关工作人员应该不断创新思维,积极探索开辟新的经验研究途径。通过已有的研究基础,选择适用于不同重构场景的标准化、规范化方法。
5 结语
随着互联网技术的快速发展,互联网用户表也是日益加赠。传统互联网业务的单体式应用模式已经无法满足差异化用户的个体需要,引入微服务能够根据用户逻辑进行需求拆分,基于简单运行逻辑进行微服务功能的实现微服务是 SOA 架构的一种变体,基于轻量级协议与细粒度服务进行应用程序构造与软件开发设计,可凭借其扩展性优势进行开放平台的部署,能够有效降低成本、缩短开发周期的应用效果。