前言
随着大数据和云计算的飞速发展,单体式应用越来越不适用于复杂的业务需求。微服务架构的出现则将规模庞大的应用分解为小的、互相连接的服务,成功地解决了单体应用所存在的问题。此外,由微服务组成的服务集群在传统虚拟机或物理机方式下搭建步骤繁多,搭建逻辑复杂,集群的安装和部署都有一定的局限性,如配置文件之多、配置节点数量之大,部署过程涉及计算机网络、Linux操作系 统、SSH 无密码 登 录、jdk环 境 配 置、Shell脚本等一系列纷繁复杂的操作,动辄分布式集群的部署以失败告终,且无从下手找出故障根源,这就在一定程度上拖慢了开发进度。而随着大数据与云计算的飞速发展,服务集群的需求度也明显上升,如何快速搭建服务集群也成了业内人士研究的重点。
微服务管控平台
3.1 微服务管控平台
网管微服务管控平台主要实现微服务部署、API 开放的管控,通过集中配置、集中日志、集中监控实现对微服务的运维支撑。提供多租户管理机制,允许租户申请自己空间、进行微服务部署、服务 API 开放以及对空间、API 调用的管控机制。下图介绍了微服务管控平台总体架构。
平台架构包含 3 个部分 :API 开放管控、微服务调度和公共服务。
(1)API 开放管控 :通过注册中心和 API 网关实现服务发现和开放管控。 (2)微服务调度 :通过混合资源调度实现微服务部署、升级和扩容等管理。
(3)公共服务:包括管理门户、运维监控、集中配置以及安全中心。微服务管控平台选用Spring Coudl架构,其中注册中心和配置中心选择Consul,API 网关为 Zuul,客户端框架为 Ribbon,服务容错为 Hystrix。集中日志选择 ELK (Elasticsearch Logstash Kibana)。 各 模 块 间 调用关系如下图所示。
3.2 微服务运行
微 服 务 开 发 完 成 后, 根 据微服务开发语言选择一个合适的Docker 镜像,镜像中包含微服务运行环境。通过 Docker 命令把 微 服 务 打 包 称 为 Docker 镜像, 再 通 过 Kubernetes(K8S)对 Docker 镜像进行部署运行。 3.3 微服务梳理
通过对目标业务系统进行微服务梳理,目前该系统从业务功能上分为管理中心模块、运行管理模块、集成开发模块、数据质量监控模块、系统自监控、元数据管理、执行控制以及执行容器模块等。首先每个模块进行容器化部署,平台自身的管理中心模块具备上传其它功能模块的功能,待上传成功后自动实现解压、安装、部署、启动和管理,同时提供标准化的开放管理接口,以实现对扩展功能模块的管理功能。每一个执行容器按采集网元类型进行划分,其中单个网元类型执行容器微服务接收平台下发的执行命令,获取预先编排好的流程执行,执行完毕后返回通知服务,该服务具备微服务单一职责,独立部署等特点。业务系统的功能框架如下图所示。
微服务梳理是各系统微服务化改造的关键点,通过这个项目我们总结了 Matrix 方法论,对业务流程、功能服务和数据信息 3 个层面并行梳理分析,通过这个方法论可以快速、准确梳理出微服务,通过对网管系统微服务的梳理,抽取出公共微服务,实现服务共享,形成公共服务层。 3.4 微服务编排
3.4.1 流程画布与元件功能
微服务编排包括流程画布和执行元件等功能模块。 3.4.1.1 流程画布
具备增加目录、增加元任务、保存、编辑元任务、删除任务、复制活动、粘贴活动、查看、
元任务复制等功能,如下图所示。
作为一种常见的微服务编排业务流程 :首先通过 Http Micro Service Http-1、Http Micro Service Http-2元件获取数据后,发给 Join-1 元件。Join-1 元件根据关键字进行 Join 运算后将数据发送给 Join-2 元件。Http Micro Service Http-3 元件获取数据发给 Json Trans元 件 进 行 格 式 转 化 发 给 Join-2 元 件。Join-2 元 件根 据 关 键 字 进 行 Join 运 算 后 发 送 给 Join-3 元 件。Http Micro Service Http-4 元件获取数据发送给 Join-3元 件。Join-3 元 件 获 取 Http Micro Service Http-4 和Join-2 数据后,根据关键字进行 Join 运算后数据给服务调用方。 3.4.1.2 元件功能
(1)流程首节点 :此元件标识流程开始,在设计流程图中如果存在多个首节点,以编号最小的默认为首节点,如图所示。
(2)微服务节点 :通过该元件能够连接微服务,发送指令获取返回报文,以下是指令平台服务调用为例说明元件参数及配置。
(3)自定义解析节点 :此元件完成对上一个元件(指向本元件的来源节点)所生成报文解析操作。
(4)消息合并元件 :此元件用于将多个来源元件输出的文件合并为一个返回消息的操作。 3.4.2 流程微服务化
通过画布与元件实现了业务场景流程的组合编排,如何让编排的流程组成微服务呢?这就要借助微服务管控平台。 3.4.2.1 微服务模版
首先设计一个微服务模版,模版包含服务注册、服务配置和服务心跳这些微服务的基本能力。 (1)服务注册 :通过服务自动注册、发现,实现服务动态自动发现和接入,降低手工维护工作量,避免手工维护和微服务实际情况不一致。
(2)服务配置 :可以为每个微服务定制集中配置参数 , 方便微服务运行期动态调整。 (3)服务心跳 :被监控的元件定期发送心跳信息给监控进程(或者由监控进程轮询被监控