2021年下半年试题四:论微服务架构及其应用

论文库链接:系统架构设计师论文


论文题目

微服务提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通。在微服务架构中,每个服务都是一个相对独立的个体,每个服务都可以选择适合于自身的技术来实现。每个服务的部署都是独立的,这样就可以更快地对特定部分的代码进行部署。

请围绕"论微服务架构及其应用"论题,依次从以下三个方面进行论述.

1.概要叙述你参与管理和开发的软件项目,以及你在其中所承担的主要工作。

2.简要描述微服务优点。

3.具体阐述是如何基于微服务架构进行软件设计实现的。

论文参考

论微服务架构及其应用

摘要

2023年1月,我参与了OA系统的开发,该项目的目标是构建一体化内网OA办公平台,推动跨部门业务线上化。该系统包含多项服务,比如:工资查询、物品申购、加班审批、公文流转、公车管理等。我主要负责OA系统的架构设计工作。本位以该项目为例,主要论述微服务架构在该项目的具体应用。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通。在微服务架构中,每个服务都是一个相对独立的个体,每个服务都可以选择适合于自身的技术来实现。每个服务的部署都是独立的,这样就可以更快地对特定部分的代码进行部署。我们团队在经历了6个月的不懈努力后,最终得到了用户和领导的一致好评,同时也让我的能力得到了锻炼,感谢领导对我能力的信任与认可。

正文

为响应国家"数字政府"建设要求,提升机关内部协同效率与信息安全水平,某省政府针对原有办公系统存在的功能分散、数据孤岛与维护成本高等问题,决定构建一体化内网OA办公平台,推动跨部门业务线上化、服务集约化转型。该项目于2023年1月正式启动,旨在通过架构升级整合原有分散的8个独立子系统,解决数据互通性差、功能重复开发及运维响应滞后等痛点。系统覆盖全省83个厅局单位、日均活跃用户超2万人,需支撑高并发访问与敏感数据安全要求。作为系统架构设计师,我主导技术方案设计与实施路径规划,核心职责包括:1.基于业务域分析制定微服务拆分策略;2.设计服务治理与分布式事务解决方案;3.指导团队完成容器化部署和流水线搭建。系统包含5大核心模块:基础服务层、业务协作层、资源管理模块、安全管控模块等。项目历时6个月完成上线,最终整合服务21个,接口平均响应时间低于200ms,运维人力成本降低45%,成为省内首个通过等保三级认证的政务协同平台。

基于微服务架构进行软件设计的优点主要包括独立部署、技术多样性、松耦合、可扩展性、高并发处理等。独立部署指每个微服务都可以独立地进行开发、测试和部署,这使得开发团队能够更快速地迭代和发布新功能,同时也降低了部署的风险。技术多样性指不同的微服务可以使用适合自身需求的最佳技术栈,这意味着开发团队可以根据具体的业务需求和技术特点选择最合适的技术,而不受限于单一的技术框架。松耦合指微服务之间通过轻量级的通信机制进行交互,这种松耦合的设计使得各个服务可以独立地进行开发和维护,不会因为一个服务的变化而影响到其他服务。可扩展性指微服务架构具有良好的可伸缩性,可以根据负载的变化,对系统中某些服务做水平扩展或收缩,更好地适应流量峰值并节省资源。高并发处理指在需要处理大量并发请求的场景下,通过微服务架构,将系统拆分成多个独立的服务,每个服务独立扩展和部署,从而实现更好的并发处理能力。

微服务架构是一种将大型应用分解成多个较小的独立部分的架构模式,其中每个部分都有各自的责任领域,这些小的服务单元可以独立部署、扩展和维护,它们之间通过轻量级的通信机制互相沟通。接下来,下文将从服务拆分、独立部署、监控与日志这三个方面来具体阐述如何基于微服务架构进行软件设计实现的。

(一)服务拆分。为了避免由于单体式应用开发导致的修复困难,当应用随着需求变成庞然大物时,开发团队就会很痛苦,修正漏洞和正确的添加新功能变得非常困难,并且很耗时,如果代码又难以理解,就不可能被正确的修改,最终会走向巨大的、不可理解的泥潭。所以在OA系统的实践过程中,我们从使用业务功能角度将服务划分为干部职工查询工资服务、电子邮件通讯服务、即时通讯服务、门户网站展现服务、物品申购服务、电子公文传输系统服务、固定资产管理服务等。将系统拆分成多个小服务,每个服务都围绕其特定的业务能力进行划分,确保服务的单一职责,此外,可以将服务划分为与团队结构相匹配的独立模块,使得每个团队能够独立开发和管理自己的服务,并行开发和部署各自的服务,加快了软件发布的速度,提高了系统的灵活性和可扩展性。

(二)独立部署。在OA系统微服务架构中,使用容器技术将微服务独立部署,不再需要协调其他服务部署对本服务的影响,通过建立持续集成/持续交付流程加快开发和部署的速度,使用单元测试和集成测试确保代码质量,用Docker等工具管理服务的部署和扩展。每个服务应独立管理自己的数据,避免共享数据库。每个服务使用独立的数据库以保持服务的自治性。使用事件驱动架构进行事件溯源,通过事件日志记录状态变化,支持数据的重建和分析。如:机关各处室门户网站的展现服务。针对用户可能频繁在各自子网站上发布处室最新内容的需求,我们在后台对各个板块做了单独的代码部署。如:焦点信息、工作动态、链接导航、组织人事等板块。采用消息发布策略,将各处室板块都做了唯一ID处理,根据对应ID即可对内容进行编辑,极大地提高了网站管理人员对板块内容进行实时更新的效率。

(三)监控与日志。OA系统的数据量会随着用户的增加不断地扩大,产生大量的日志信息。当系统出现异常或错误时因为传统的关系数据库对日志存储,查询,分析的能力有限,所以很难对问题进行迅速定位。因此,需要考虑使用一种大容量复杂场景的日志解决方案,在日志的收集,处理,存储,展示各个流程都使用微服务方式部署,支持动态扩容缩容,支持大规模日志的处理和存储,满足复杂使用场景的日志需要。我们在实践中使用ELK堆栈收集和分析日志数据,并对监控进行了分层,顶层的监控站在用户视角,底层的监控站在系统视角,形成更完善的反馈链路。通过分析日志和监控数据可以快速找到服务故障的根源,排查性能瓶颈,帮助我们快速发现和解决问题,防止系统故障的扩散,提高了系统的可维护性和可靠性。

在经历了6个月的不懈努力后终于在2023年7月顺利上线,得到了用户和领导的一致好评。这次采用基于微服务架构建设政府机关内网OA办公系统的软件架构设计总体上来讲还是不错的,微服务将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通。在微服务架构中,每个服务都是一个相对独立的个体,每个服务都可以选择适合于自身的技术来实现。每个服务的部署都是独立的,这样就可以更快地对特定部分的代码进行部署,减少了系统维护对用户使用的影响。用户在使用过程中不会因为系统维护而遇到长时间的服务中断。但同时也暴露出了一些问题,比如:因系统存储容量太小,在项目运行过程中发生需求量增多和数据量暴增导致的访问速度变慢问题。我们在下次开发过程中一定会重点关注这些问题,将其进行改进,做好统筹规划与紧急事件处理工作。

相关推荐
Edward.W1 小时前
软件架构评估方法全面解析
架构
zzr9152 小时前
TCP/IP协议深度解析:从分层架构到TCP核心机制
网络协议·tcp/ip·架构
行秋6 小时前
电池管理系统BMS三级架构——BMU、BCU和BAU详解
架构
前端熊猫13 小时前
公司项目架构搭建者
架构
珊珊而川19 小时前
5.1经典架构
架构
Lw老王要学习1 天前
25_05_02Linux架构篇、第1章_03安装部署nginx
linux·运维·nginx·架构·云计算·it
bing_1581 天前
微服务中怎么获取请求头信息
微服务·云原生·架构
yibuapi_com1 天前
开源智能体MetaGPT记忆模块解读
python·ai·语言模型·chatgpt·架构·langchain·claude
互联网搬砖老肖1 天前
深入理解 Web 架构:从基础到实践
前端·架构