软考架构师高级

论企业集成平台的技术与应用

2015

试题四 论企业集成平台的技术与应用

企业集成平台是一个支持复杂信息环境下信息系统开发、集成和协同运行的软件支撑环境。它基于各种企业经营业务的信息特征,在异构分布环境(操作系统、网络、数据库)下为应用提供一致的信息访问和交互手段,对其上运行的应用进行管理,为应用提供服务,并支持企业信息环境下各特定领域的应用系统的集成。企业集成平台的核心是企业集成架构,包括信息、过程、应用集成的架构。

(请围绕“企业集成平台的技术与应用”论题,依次从以下三个方面进行论述。)

1.概要叙述你参与管理和开发的企业集成平台相关的软件项目以及你在其中所担任的主要工作。

2.简要说明企业集成平台的基本功能及企业集成的关键技术,并结合项目实际情况,阐述该项目所选择的关键技术及其原因。

3.结合你具体参与管理和开发的实际项目,举例说明所采用的企业集成架构设计技术的具体实施方式及过程,并详细分析其实现效果。

摘要:

2022年3月,我负责了某公司基于云原生理念的“自动化运维系统”的建设项目,由我担任系统架构设计师,负责系统架构设计工作,在该系统架构设计中,我们选择微服务架构,通过grpc协议进行多个服务之间的通信,通过proto进行接口定义,实现多个服务之间的控制集成;通过vuecli脚手架进行前端web的开发,进行表示集成的实现;通过书写定时任务,将多个数据进行组合实现数据集成,本文将详细介绍该系统在表示集成、控制集成、数据集成三方面的时间过程。该项目总投入近450万,历时15个月,于2023年6月交付至今,不仅帮助运维人员高效、安全的管理云上应用和后端服务器资源,同时帮助开发和测试人员实现应用的快速迭代和测试,大大提升了团队之间的协作效率,消除了运维和开发之间的壁垒,得到了用户的一致好评。

正文:

随着云原生技术的发展,企业也逐渐引入相关技术,在基础设施层,越来越多的企业开始购买云上服务器,如应用服务器企业可选择阿里云的ECS服务器,数据库服务器企业可选择阿里云的RDS,DNS服务企业可选择阿里云的域名解析,云上资源购买十分方便,在页面中点击几下即可购买成功,但在实际工作中,不能随意购买,需要结合企业成本和服务器资源使用情况来综合考量,避免资源浪费,所以对云上资源的成本、资源使用情况的可视化管理就很重要。同时,随着容器技术和微服务架构的发展,企业应用也都选择微服务架构,采用容器的方式部署在kubernets集群中,在这种情况下,应用的快速发布、容器资源管理、监控告警就显得尤为重要。

为了实现云上资源的可视化管理和基于云原生应用的快速发布,我所在的公司决定开发一个“自动化运维”系统,我们称之为云平台,并在2022年3月正式启动该项目的建设工作,我被任命为系统架构设计师,负责系统架构设计工作该项目总投入450万元人民币,建设周期从2022年3月至2023年6月截止,历时15个月。该系统主要包括应用中心、发布中心、监控中心、成本中心、容器中心、权限管理和变更管理七大模块,应用中心是整个系统的数据中心,其他模块的功能都围绕“应用”来进行资源的展示和操作;发布中心以“应用”为单位,向用户提供应用的快速发布功能;监控中心以“应用”为单位,向用户提供应用的监控告警功能;成本中心以“应用”为单位,向用户展示每个应用的成本;容器中心以“应用”为单位,展示应用的相关容器资源;权限管理是对用户分类,使得不同的用户可看到不同的模块;变更管理主要对云上资源的变更进行管控,避免对云上资源的误操作导致系统故障。

企业应用集成主要包含表示集成、控制集成、数据集成等,下面将详细介绍本平台在这三种集成方面使用到的技术、原因、实施过程和实施效果。

表示集成主要是页面功能的集成,前端使用Vue进行代码的开发,一方面由于Vue是一种MVVM框架,通过数据绑定的方式进行数据的更新,另一方面Vue的代码书写更接近于原生的html ,简单易懂。前端获取数据使用Http协议调用后端接口,数据调用成功后进行数据的展示,例如在应用中心,应用的新增、修改和删除都是通过Http接口直接调用后端;对于实时数据的展示,例如在发布中心,应用发布开始后,前端需要实时的监听kubernets中容器的运行状态,通过展示容器的实时状态来告知用户应用发布的进度,针对这种功能,前后端的交互通过websocket协议,后端是Websocket Server端,后端获取到容器状态后,直接将数据推送给前端,进行数据的更新。在成本中心,主要是根据成本数据,通过在Grafna中配置Sql语句生成的各种维度的报表,为了让用户在一个平台中操作,我们将Grafna页面通过Vue-iframe集成到“自动化运维系统”中。通过以上技术,将应用生命周期的管理、自动化发布、监控告警、成本报表等信息统一到一个平台,使得用户在一个平台就能完成自己的工作,不需要在多个系统之间切换。

控制集成主要是业务逻辑的集成,通过接口调用实现复杂的业务逻辑。由于我们是基于云原生理念的微服务架构,后端开发语言使用Golang,微服务之间的数据交互使用Grpc协议,接口定义使用Proto,服务提供者只需要在Proto中书写接口定义文件,服务调用者在Proto中,就能了解到所有的接口信息,包含接口的如参、出参和接口描述,Proto就是接口文档,不需要再花费时间书写接口文档,服务调用者拿到Proto后,可生成多种语言的代码,没有编程语言的限制。例如在发布中心,应用的发布功能会调用应用中心的应用相关的接口获取应用、环境、集群等信息,这些信息获取后,调用发布中心的接口进行代码的获取和新的容器镜像的打包,最后调用容器中心的接口,进行Kubernets集群中Deployment资源镜像的更新。在这一个逻辑中,会调用三个微服务的接口,通过业务逻辑的集成,可以实现多样的业务功能,使得每个服务更加轻量化,每个服务独立开发,可扩展性更强。

数据集成是将多种数据源进行统一管理,提高数据的获取速度。例如容器中心的应用检索功能,应用相关信息主要有应用名、实例名、实例Ip、实例创建时间、环境、负责人、部门、集群、集群节点名称、集群节点Ip等多维度信息,这些信息有的存储在Mysql数据库的多个表中,有的存储在Kubernets集群中,需要通过Kubernets集群的Api获取,数据来源多样,为了实现数据快速检索功能,首先进行数据集成,书写定时任务逻辑代码,将Mysql多个表中的数据和Kubernets集群的数据进行整合,定义一组新的数据结构存储到Elasticsearch中,应用检索功能只需要通过Elasticsearch的SDK即可实现应用的多维度检索,可实现模糊搜索和精确搜索,代码实现简单,数据查询效率高。

经过近15个月的项目开发,“自动化运维系统”顺利投入使用,开发人员和测试人员可通过该系统实现应用发布的自动化,无需运维人员的协助,消除了运维和开发的固有壁垒;运维人员可通过该系统高效管理云上资源,实时查看云上资源的使用率和成本,减少资源浪费,提高资源使用率。当然,在本项目中还有一些不足之处,在进行云上资源成本统计时,最初我们通过阿里云的费用接口来拉取各个产品的成本,由于产品很多,写了很多逻辑,后来通过和阿里云的技术人员沟通,可以在阿里云平台上将所有产品的费用一键转储到oss中,直接通过oss的sdk即可快速查询所有产品的费用,后来我们开发人员快速修改下成本获取的逻辑,并没有对项目产生什么影响。由于架构合理且考虑周全,进展顺利,得到了公司技术人员的认可,大大提高了技术团队的协作效率。

留言

您的邮箱地址不会被公开。 必填项已用 * 标注

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。