张鹏飞 王永强
摘要:理论上任何业务系统如果长期存在的话,随着此系统业务变更、功能增加必然会不断演变,在一个更大的分布式环境中,这种改变尤其明显,那么就需要架构分析设计时更多的考虑系统所处的生态环境建设,这样才能使得整个系统不断进化。随着虚拟化技术的发展以及docker容器实践逐渐完善,微服务架构的设计思想逐渐浮出水面.形成分布式 环境下新的最重要的设计思想。
关键词:软件工程;微服务;持续交付
一、从分布式单体架构到微服务架构迁移
(一)分布式单体架构
分布式单体架构指的是在分布式环境下直接部署运行一个整体开发的应用,由整体应用来提供系统所需的服务,它在技术上通常采用分层实现,大致分为表现层、应用层、数据层,它有天然的优 势:它是模块独立无关的,各层之冋是技术分离的;它有统一的技术栈和开发标准;它通常在一个进程中运行,模块相互之间协同消耗极小。
(二)微服务架构定义
微服务架构是一种新的软件体系设计模 式,它并没有形成统一、严格的定义,但是基于其 分布式环境应用的场景,却拥有一些共同的特征: 比如开发敏捷性、持续交付、可伸缩性、最终--致性等。微服务架构建议将大型复杂的单体架构应用划分为一组微小的服务,每个微服务根据其负责的具体业务职责提炼为单一的业务功能;每个服 务可以很容易地部署并发布到生产环境里隔离和独 立的进程内部,它可以很容易地扩展和变更;对于一个具体的服务来说可以采用任何适用的语言和工 具来快速实现;服务之间基于基础设施互相协同工作, 1.3迁移需解决问题
(1)如何处理服务状态
在分布式环境下尽可能的设计无状态的微服务 更容易实现可伸缩性,但是在很多应用场景(用户相关数据读写)有状态是不可避免的.所以必须把 有状态服务的状态相关信息提取出来使得有状态服 务达到无状态服务同样的性能和扩展能力。目前有 两种实现方式:一种是采用分布式缓存集群存储状 态,一种是采用nosql数据库集群来存储状态。
(2)服务之间通信机制由于每个微服务都是在独立、隔离的进程内部 运行,所以这些微服务之间的调用行为属于进程冋 通信。
(3)服务可持续交付
实现微服务架构的保障就是能够严格执行服务 的可持续交付,服务可持续交付指的是每个服务 交付的流程具备持续性,也就是说一个微服务应用 从开发完毕到部署发布中间的过程是一个可持续的 过程,并且这个微服务应用可能存在多个版本不同 运行状态的服务实例,它们需要集成到现有的运行环境中穏定提供服务。服务可持续交付常常包括几个方面:开发、单元测试、构建、部署、集成、集 成测试、发布,从基础设施环境来看又包含几个部分,代码版本管理、构建管理、部署管理、集成管 理、测试管理、发布管理、运维监控管理。
二、微服务架构基础设施设计与分析
(一)微服务架构基础设施设计依据
(1)分布式系统核心问题
1) 性能和可伸缩性
在分布式环境下,微服务架构使得业务逻辑可 以拆分为粒度较小的服务,这些服务能够运行在独 立、隔离的环境,易于部署、可扩展性強,因此这 些微服务的处理请求能力可伸缩性强,性能优势明显。
2) 数据一致性和高可用性
在分布式环境下,从硬件到主机操作系统到软 件总有一部分存在故障状态,需要保证这个系统的 高可用性就需要尽可能的减少系统资源开销的同时 排除单点故障或者容忍错误;然而在故障恢复或者 多点备份或者执行多服务事务的同时也需要保证数 据的一致性,基于性能优先的考虑这种数据一致性 是数据最终一致性。
(2)DevOps基本原则
DevOps指的是从软件交付的全局岀发在开发 和运维架起交流和协作的桥梁,并且自动化配置管 理软件的文化变革运动,DevOps的重要组成部分就 是持续交付,其基本原则是使软件交付的流程自动 化且可持续,并尽可能简洁。
(二)微服务架构基础设施总体设计
通过分析在分布式环境下从单体架构迁移到微服务架构需要解决的问题以及微服务架构基础设施的设计依据.得到微服务架构基础设施总体设计。其中,开发完毕的微服务应用经由持续交付平 台部署、验证、发布到分布式环境中,同时把这个 微服务注册到服务注册中心,用户或外部服务通过 服务网关访问此分布式环境节点中的API服务,服 务网关通过服务注册中心发现服务.其他一些基础 设施提供对这些微服务的运行监控管理。
(三)微服务架构基础设施关键组件
(1)持续交付平台
实现一个可持续交付网平台的目的是把基于分布式环境分析设计的微服务应用快速灵活、可重复 且持续的、自动化的集成部署到分布式环境中稳定 运行,并且这些微服务是可编程配置、易于维护、 变更、扩展的,其可以运行于一个独立、隔离的容 器里表现为一个进程。
(2)服务注册与发现组件
服务注册与发现是微服务架构中的核心组件,分布式环境中服务的实例会根据运行环境变化依据 默认规则或策略动态变化,这时要实现服务注册与 发现变得异常复杂。
(3)服务网关
服务网关冏是一个统一调用逻辑人口,封装了分布式环境中某个节点内部的服务信息。
三、微服务架构基础设施在运维管理中的应用
随着信息化的发展,各类应用系统层出不穷、运维人员管理数量极其庞大的微服务变得十分复杂,因此在分布式环境下应用的可持续交付能力变得极其重要。采用持续交付平台可以支持微服务自动化的便捷部署到分布式环境中并经过验证后发布。采用服务注册中心可以支持微服务的发现与定位,为微服务的集成、组合提供支持。通过在分布式环境下提供各种基础设施使得整个运维管理更加高效、科学、合理,并且极大的降低了运维成本和复杂性。
四、结论
本文通过分析分布式环境下微服务架构相对于 单体架构的优势以及其迁移需解决问题提出微服务 基础设施总体设计,分析了基础设施关键组件的功 能,举例了其在运维管理中的应用。当然微服务架 构的实践还存在很多待深入研究的问题·比如其在 机器学习、大数据挖掘等分布式计算场景的应用, 这些还需要今后在实践中不断探索、学习。
参考文献:
[1]熊敏,林荣恒.邹华.云计算环境卜·的自适应資源监测模 型设计卩].新型工业化,2012, 2(11): 25-3L