论云原生架构及其应用~系统架构师论文
标题:论云原生架构及其应用
近年来,随着数字化转型不断深入,科技创新与业务不断融合,各行各业正在从大工业时代以容器和微服务架构为代表的云原生技术作为云计算服务的新模式已经逐渐成为企业持续发展的主流选择。请围绕“论云原生架构及其应用”论题,依次从以下三个方面进行论述。
1.概要叙述你参与管理和开发的软件项目以及承担的主要工作;
2.请介绍你所知道的云原生架构的模式及其是如何在你的项目中实现的;
3.具体阐述你参与管理和开发的项目是如何向采用云原生架构的,并详细论述在项目设计与实现过程中遇到了哪些实际问题,是如何解决的。
摘要
2021年3月,我单位联合某省公安厅研发了数据脱敏管理系统。系统以数据脱敏为核心,分为资源模块、敏感属性模块、脱敏规则模块、脱敏模块、权限模块、审计模块,解决了数据在其生命周期的传输、存储、使用、共享环节的安全问题。在项目中,我担任系统架构师,负责架构设计工作。本文论述了云原生架构在系统中的应用。系统使用springcloud开发,分为前端web服务、平台支撑服务、业务服务三部分。前端web服务由负载均衡和服务集群组成;平台职称服务以Eureka为中心,包括api网关、服务注册中心、监控平台等构成,实现基础服务框架;业务服务划分为多个微服务,基于Docker容器实现具体业务。最终上线评价很好。
正文
笔者在一个专为政企建设信息系统的集成公司任职,过往成果有“某省厅财务内网系统”等。2021年3月,我单位联合某省厅研发了数据脱敏管理系统项目(以下简称“系统”),解决了数据在生命周期的传输、存储、使用、共享环节的安全问题,保护了数据安全性和可用性。系统以数据胡脱敏为核心,主要分为资源模块、敏感属性模块、脱敏规则模块、权限模块、审计模块等。资源模块主要负责识别和维护所有需要进行数据脱敏的数据源,支持用户根据需求接入和导出数据至不同数据源(如oracle、flink、spark、文件等),并负责将抽取的数据发送到敏感属性模块进行属性分析;敏感属性模块负责自动发现数据中的敏感字段,支持用户自定义敏感属性等;脱敏规则模块根据不同的敏感属性,灵活组合不同脱敏策略,并做好算法版本控制;数据脱敏模块按用户指定或者预定义脱敏策略,对数据实施可逆、不可逆脱敏;权限模块主要是系统安全管理员对省市县三级用户实行权限控制;审计模块用于安全审计员对系统操作的监督核查。在这个项目中,我担任系统架构师的职务,主要负责系统架构设计相关共组工作。
系统需要支撑省厅所辖工作人员对数的脱敏,为保证系统的性能,将系统部署在政务云上显得尤为重要。传统购买服务器部署的方式需要准备一定规模的机器,如果业务存在激增的情况,重新调整困难,很难进行扩展,因为系统一开始就是面向云原生进行架构设计的。常见的云原生架构模式有:Serverless模式、存储计算分离模式、分布式事务模式、可观测架构、事件驱动架构等。1.服务化架构模式。他的典型模式是微服务和小服务模式,通过服务化架构,把代码模块关系和部署关系进行分离,每个接口可以部署不同数量的实例,单独扩容或者缩容;2.服务网格化架构模式。把为服务间的熔断、限流、安全等通用功能都放到Mesh进程,下沉到了平台基础实现;3.Serverless模式。无服务器模式将整个应用都委托给云,使开发者专注业务逻辑设计于实现;4.存储计算分离模式。将数据存储采用云服务来保存,实现存储和计算的分离;5.分布式事务模式。主要包括XA模式、TCC模式、SAGA模式等;6.可观测架构。可观测架构提供了对分布式链路的快速关联分析;7.事件驱动架构。用于服务之间的解耦。
系统基于spring cloud微服务框架开发,将平台服务分为三部分,分别为前端web服务、平台支撑服务、业务服务。下面对着三类服务展开说明。
1.前端web服务 前端web服务主要提供用户使用界面,分为nginx负载均衡服务器、前端网站nginx集群。当用户通过网络访问系统时,首先会访问到前置的nginx负载均衡服务器,负载均衡服务器将请求转发到前端网站nginx集群,前端网站通过发起http请求和后端交互,即通过ajax来调用后端的Rest Api接口。用户访问网站通过前置的nginx负载均衡服务器来转发到前端网站集群,以起到用户请求进行分流的作用。当前端网站集群中的部分服务发生故障时,系统仍可以正常地对外提供服务。前置nginx负载均衡服务器使用软件反向代理的方式来实现负载均衡,部署为路由模式,系统内部网络与外部网络分属于不同的逻辑网络,以实现系统内部与外部网络的隔离,保护系统安全。在负载均衡算法选择上,为了实现连接最优分配,使用了最小连接法,每当用户请求来临时,任务分发单元会将任务平滑分给最小连接数的节点,这样架构以廉价、透明的方式扩展了服务器和网络带宽,能够极大提升系统的并发量,同时保证前端整体的稳定性和可靠性。
2.平台支撑服务 平台支撑服务是实现后端微服务的基础框架,包括api网关、服务注册中心、服务监控组件等。api网关收到请求后,从服务注册中心根据请求获取对应服务配置,再通过服务配置调用已注册的服务,方后端服务存在多个实例时,采取负载均衡方式调用。服务注册中心采用spring cloud的Eureka组件实现,提供服务注册、发现功能,包括服务注册中心、服务提供者和服务消费者。api网关、所有业务服务,以及服务监控平台组件都注册到服务注册中心。各服务通过服务注册中心两两相互注册、api网关向服务注册中心注册多实例等方式实现后端整体服务的高可用性。服务监控平台通过注册到服务中心,获取所有注册到服务中心的后端业务服务,从而监控到所有后端业务服务的运行状态信息,最后收集并展示整个微服务系统的运行状态,进一步保证整个后端的服务质量。
3.业务服务 业务服务按照功能模块,相应划分为资源服务、敏感属性服务、脱敏服务、权限服务、审计服务等。各服务单独打包,基于Docker容器,连同运行环境一起封装,根据实际情况在政务云部署多个实例,服务启动后将自身信息注册到服务注册中心。服务间协同工作,通过松耦合的服务发现机制,动态调用对方Rest Api接口。对于压力较大的服务,如脱敏服务、敏感属性服务等,部署为多实例集群。以可逆脱敏功能为例,用户进行脱敏工作时,脱敏服务检验脱敏信息通过调用敏感属性服务,脱敏规则服务,由脱敏服务组成脱敏详细信息,返回前端显示。用户提交脱敏后,脱敏服务将数据发送给敏感属性服务识别脱敏属性,并将数据拆分后送入MQ队列排队,然后由负载均衡机制依次将队列中的待脱敏的数据分发给脱敏服务脱敏、密钥保存、密码本保存、评估后,脱敏服务将统计评估信息向前端显示。在此期间服务请求者无需了解其他服务对数据如何具体处理和分析的。
系统自2022年3月上线已运行两年有余,在数据生命周期的存储、传输、使用和共享环节投入使用,截至目前已经脱敏5万次有余,数据量达到了200TB,获得了单位同事领导和客户的一致好评。在开发和试运行过程中,主要遇到了敏感属性服务大量宕机问题。当部分客户短时间内提交了大量数据且需要自动识别敏感属性时,导致敏感属性服务首先出现识别慢、卡顿现象,在到最后大部分宕机。我们引入心跳机制、快照回滚机制,并基于机器学习技术预判机制,使敏感属性服务宕机时能够在10秒内自动恢复运行,最终解决了问题。
实践证明,系统能够顺利上线并且稳定运行,云系统采用了合适的架构设计密不可分。经过这次云原生架构的方法和实践效果后,我也看到了自己身上的不足之处,在未来还会不断更新知识,完善本系统在各方面的设计,使得系统更好用,更有效地服务客户。