当前位置: 首页 > article >正文

2020年下半年试题三:论云原生架构及其应用

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


论文题目

       近年来,随着数字化转型不断深入,科技创新与业务发展不断融合,各行各业正在从大工业时代的固化范式进化成面向创新型组织与灵活型业务的崭新模式。在这一背景下,以容器盒微服务架构为代表的云原生技术作为云计算服务的新模式,已经逐渐成为企业持续发展的主流选择。云原生架构是基于云原生技术的一组架构原则和设计模式的集合,旨在将云应用中的非业务代码部分进行最大化剥离,从而让云设施接管应用中原有的大量非功能特性(如弹性、韧性、安全、可观测性、灰度等),使业务不再有非功能性业务中断困扰的同时,具备轻量、敏捷、高度自动化的特点。云原生架构有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用,其代表技术包括容器、服务网络、微服务、不可变基础设施和声明API等。

请围绕“论云原生架构及其应用”论题,依次从以下三个方面进行论述.

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

     2.服务化、弹性、可观测性和自动化是云原生架构的四类设计原则,请简要对这四类设计原则的内涵进行阐述。

     3.具体阐述你参与管理和开发的项目是如何采用云原生架构的,并且围绕上述四类设计原则,详细论述在项目设计与实现过程中遇到了哪些实际问题,是如何解决的。

写作要点

        一、简要叙述所参与管理和开发的软件项目,并明确指出在其中承担的主要任务和开展
的主要工作。

        二、云原生架构的四类设计原则

       1、服务化原则:

       当代码规模超出小团队的合作范围时,就有必要进行服务化拆分了,包括拆分为微服务架构、小服务(MiniService)架构,通过服务化架构把不同生命周期的模块分离出来,分别进行业务选代,避免迭代频繁模块被慢速模块拖慢,从而加快整体的进度和稳定性。同时服务化架构以面向接口编程,服务内部的功能高度内聚,模块间通过公共功能模块的提取增加软件的复用程度。分布式环境下的限流降级、熔断隔仓、灰度、反压、零信任安全等,本质上都是基于服务流量(而非网络流量)的控制策略,所以云原生架构强调使用服务化的目的还在于从架构层面抽象化业务模块之间的关系,标准化服务流量的传输,从而帮助业务模块进行基于服务流量的策略控制和治理,不管这些服务是基于什么语言开发的。

       2、弹性原则:

       大部分系统部署上线需要根据业务量的估算,准备一定规模的机器,从提出采购申请、到供应商治谈、机器部署上电、软件部署、性能压测,往往需要好几个月甚至一年的周期,而这期间如果业务发生变化了,重新调整也非常困难。弹性原则是指系统的部署规模可以随着业务量的变化自动伸缩,无须根据事先的容量规划准备固定的硬件和软件资源。好的弹性能力不仅缩短了从采购到上线的时间,让企业不用操心额外软硬件资源的成本支出(闲置成本),降低了企业的 IT 成本,更关键的是当业务规模面临海量突发性扩张的时候,不再因为平时软硬件资源储备不足而“说不”, 保障了企业收益。
        3、可观测原则:
       今天大部分企业的软件规模都在不断增长,原来单机可以对应用做完所有调试,但在分布式环境下需要对多个主机上的信息做关联,才可能回答清楚服务为什么宕机、哪些服务违反了其定义的 SLO、目前的故障影响哪些用户、最近这次变更对哪些服务指标带来了影响等等,这些都要求系统具备更强的可观测能力。可观测性与监控、业务探活、APM 等系统提供的能力不同,前者是在云计算这样的分布式系统中,主动通过日志、链路跟踪和度量等手段,让一次 APP 点击背后的多次服务调用的耗时、返回值和参数都清晰可见,甚至可以下钻到每次三方软件调用、SQL请求、节点拓扑、网络响应等,这样的能力可以使运维、开发和业务人员实时掌握软件运行情况,并结合多个维度的数据指标,获得前所未有的关联分析能力,不断对业务健康度和用户体验进行数字化衡量和持续优化。

       4、自动化原则:
       技术往往是把“双刃剑”,容器、微服务、DevOps、大量第三方组件的使用,在降低分布式复杂性和提升迭代速度的同时,因为整体增大了软件技术栈的复杂度和组件规模,所以不可避免地带来了软件交付的复杂性,如果这里控制不当,应用就无法体会到云原生技术的优势。通过laC(Infrastructure asCode)、GitOps、OAM(OpenApplication Model)、Kubemnetes operator和大量自动化交付工具在 CICD 流水线中的实践,一方面标准化企业内部的软件交付过程,另一方面在标准化的基础上进行自动化,通过配置数据自描述和面向终态的交付过程,让自动化工具理解交付目标和环境差异,实现整个软件交付和运维的自动化。

       三、第三个问题要根据项目的实际情况来写自己是怎么做的,遇到什么样的问题,如何解决的。

论文参考

论云原生架构及其应用

摘要

       为了响应国家政府新型无纸化办公的强烈要求,2023年6月我参与了单位OA系统的云原生架构开发与设计,包含的功能有公文签批流转、电子公文传输、工资查询等。我主要担任系统架构设计师,负责系统的需求分析、技术选型、质量属性效用树、概念架构、细化架构等具体业务。经过小组讨论后我们决定采用云原生架构技术,围绕服务化、弹性、可观察性和自动化等设计原则,利用容器、服务网络、微服务等技术将OA系统中的非业务代码部分进行最大化剥离,让云设施接管应用中原有的大量非功能特性(如弹性、韧性、安全、可观测性、灰度)等。提高了系统的轻量度、敏捷度以及自动化程度等。经过大家半年的不懈努力,我们终于在2023年底顺利上线该产品,最终得到了领导和用户的一致好评。

正文

       为了响应国家政府新型无纸化办公的强烈要求,2023年6月我参与了单位OA系统的云原生架构开发与设计,包含的功能有公文签批流转、电子公文传输、工资查询、物品申购、公车派送等。我主要担任系统架构设计师,负责系统的需求分析、技术选型、质量属性效用树、概念架构、细化架构等具体业务。经过小组讨论后我们决定采用云原生架构技术,围绕服务化、弹性、可观察性和自动化等设计原则,利用容器、服务网络、微服务等技术将OA系统中的非业务代码部分进行最大化剥离,让云设施接管应用中原有的大量非功能特性(如弹性、韧性、安全、可观测性、灰度)等。提高了系统的轻量度、敏捷度以及自动化程度等。经过大家半年的不懈努力,我们终于在2023年底顺利上线该产品,最终得到了领导和用户的一致好评。

       服务化、弹性、可观测性和自动化是云原生架构的四类设计原则。其中服务化指系统的设计要围绕服务展开,不可偏离这一主旨。比如在用户、管理员使用和开发人员对系统进行修改的时候,是否可以便捷高效地解决问题,让用户切身地感受到系统给大家带来的方便。弹性指在系统用户激增或因用户操作不当时是否仍能保持正常运行,而不至于因此宕机,造成数据丢失的情况,提高系统的鲁棒性。可观测性指系统的软硬件设备状态数据均可实时获取,比如正在使用系统的用户数量,CPU、服务器的负载率等数据,方便及时发现问题并予以解决。自动化指系统可以在无人操作的情况下24小时正常运转,出现一些小问题时也可以利用恢复操作将系统复原,继续正常运转,保证业务的持续可用性。

        云原生架构是基于云原生技术的一组架构原则和设计模式的集合,可以将云应用中的非业务代码部分进行最大化剥离,使业务不再有非功能性业务中断困扰,具备轻量、敏捷、高度自动化的特点。下文将围绕服务化、弹性、可观测性和自动化四类设计原则具体阐述OA系统是如何采用云原生架构进行开发的。

       (一)围绕服务化设计原则进行云原生架构的开发。利用微服务架构将OA系统拆分为多个小的、自治的服务。每个服务都独立运行、独立部署和独立扩展,降低了系统的耦合度,提高了系统的灵活性和可维护性。为了提高用户和开发人员的工作效率,我们在概念架构设计阶段就采用需求矩阵从功能、质量、约束的角度对其进行全方面的分析,考虑用户使用环境、开发工作环境和上线时用户可能遇到的问题。比如:采用Spring Cloud微服务框架实现功能解耦,将公文流转、电子签批等核心业务封装为独立服务,通过API网关统一暴露接口;单位领导之前一直使用windows系统操作界面,那么我们在设计时就要考虑到这一约束,咨询领导是否可以换成其他界面,还是继续使用;由于单位资金有限,技术公司派出的开发人员技术参差不齐,前期的开发和后期的维护均需要他们牵头,所以后台管理界面也要尽可能方便操作,提高系统的可扩展性。利用鲁棒图找到系统对应的边界对象、控制对象、实体对象,有效地降低系统的复杂性,方便进一步开发。

      (二)围绕弹性设计原则进行云原生架构的开发。利用弹性原则确保OA系统能够自动适应负载变化,根据负载情况动态地调整服务实例的数量和资源配置,实现了系统的高性能和可用性,利用自动扩展和负载均衡技术进一步优化系统的弹性。通过Hystrix实现服务熔断,当依赖服务响应超时自动降级返回缓存数据。为了提高其弹性程度,我们全面地梳理了涉及到系统应用的软硬件设备,排查单点故障,对某些关键基础设施还仍在串联的设备及时进行备份处理,一旦发生紧急情况就可以无缝切换热备/冷备,避免发生数据丢失的情况。我们将所有硬件设备均接入到堡垒机上,在堡垒机上即可对设备配置参数进行修改,减少进出机房的频率,避免造成不必要的麻烦。为了避免系统数据被一些不熟悉操作的开发人员误删,我们将root权限账号集中移交至管理人员;开发人员要对系统进行操作时需向管理人员申请使用账号,有效地降低了系统在开发过程中发生故障的可能性。

      (三)围绕可观测性和自动化设计原则进行云原生架构的开发。自动化与可观测性通常紧密耦合,可观测性为自动化提供决策依据,自动化是可观测性的落地手段。在可观测性方面,在开发前期将涉及到系统的软硬件设备均接入到可观测系统中,方便实时地了解OA系统地开发情况,发现某些设计不合理的地方可以及时地进行调整,避免造成大面积地返工。我们实现了全面的监控和日志收集机制。通过分布式追踪和指标收集,我们可以实时地了解系统的运行状态、性能和潜在问题。同时,我们还利用日志分析技术来挖掘系统的运行规律和潜在优化点。在自动化方面,我们实现了持续集成/持续部署(CI/CD)流程,使得代码可以自动构建、测试和部署到生产环境。通过自动化测试和自动化监控技术,我们可以确保每次代码更改都经过充分的测试,并及时发现和解决潜在问题。同时,我们还利用自动化故障恢复技术来减少系统的停机时间和手动干预的需求。利用动态环境监测系统对机房的温度、湿度以及电路可承受的负载率进行实时监控,一旦发生紧急情况及时通过电话和短信的方式提醒工作人员。

       经过大家半年的不懈努力,我们终于在2023年底顺利上线该产品,让云设施接管应用中原有的大量非功能特性(如弹性、韧性等),使业务不再有非功能性业务中断困扰,具备轻量、敏捷、高度自动化的特点,最终得到了领导和用户的一致好评。但是在运行过程中也暴露出了一些问题,比如:一些用户在OA系统经常使用的电子邮件传输功能因用户使用频率激增导致原有的存储已经不能满足用户的需要,所以要对系统的数据存储服务器进行扩容,避免因存储容量不足,造成系统崩溃。通过采用云原生架构对OA系统进行开发,使我们团队的系统架构设计能力也得到了充分地锻炼,非常感谢领导地栽培与信任,希望能够继续承接系统架构相关任务,继续为单位的信息化建设添砖加瓦。

     

相关文章:

2020年下半年试题三:论云原生架构及其应用

论文库链接:系统架构设计师论文 论文题目 近年来,随着数字化转型不断深入,科技创新与业务发展不断融合,各行各业正在从大工业时代的固化范式进化成面向创新型组织与灵活型业务的崭新模式。在这一背景下,以容器盒微服务…...

基于Spring Boot + Vue的高校心理教育辅导系统

一、项目背景介绍 随着高校对学生心理健康教育的重视,传统的人工心理辅导与测评模式已经难以满足广大师生的个性化需求。为了提高心理服务的效率、便捷度和覆盖范围,本项目开发了一个高校心理教育辅导系统,集成心理评测、辅导预约、留言交流…...

JavaSwing之-JDialog

JavaSwing之-JDialog JDialog 是 Java Swing 中用于创建对话框窗口的容器类,继承自 Dialog 类(AWT),常用于显示临时信息、获取用户输入或执行模态操作。它是 javax.swing.JDialog 包中的类。 与 JFrame 不同的是,JDia…...

【学习路线】 游戏客户端开发入门到进阶

目录 游戏客户端开发入门到进阶:系统学习路线与推荐书单一、学习总原则:从底层出发,项目驱动,持续迭代二、推荐学习路线图(初学者→进阶)第一阶段:语言基础与编程思维第二阶段:游戏开…...

部署安装gitlab-ce-17.9.7-ce.0.el8.x86_64.rpm

目录 ​编辑 实验环境 所需软件 实验开始 安装部署gitlab171.配置清华源仓库(版本高的系统无需做)vim /etc/yum.repos.d/gitlab-ce.repo 2.提前下载包dnf localinstall gitlab-ce-17.9.7-ce.0.el8.x86_64.rpm --rocklinux 3.修改配…...

备战菊厂笔试2-BFS记忆化MLE?用Set去重-Set会TLE?用SortedSet剪枝

目录 200.岛屿数量 不用getnei,直接在dfs判断,去掉解包 如果害怕栈溢出那么可以用bfs 2617.网格图中最少访问的格子数 注意特判! MLE主要是因为vis占用的内存过大 用SortedSet有序剪枝 什么是SortedSet? 基本性质 导入 …...

主机A向主机B发送一个长度为L字节的文件,假设TCP的MSS为1460字节,则在TCP的序号不重复使用的前提下,L的最大值是多少?

📘题干回顾: 主机A向主机B发送一个长度为L字节的文件,假设TCP的MSS为1460字节,则在TCP的序号不重复使用的前提下,L的最大值是多少? 这个问题关键在于“TCP序号不重复使用”。 ✅ 正确答案是:D.…...

【RabbitMQ】发布确认机制的具体实现

文章目录 模式介绍建立连接单独确认代码实现逻辑运行结果 批量确认代码实现逻辑运行结果 异步确认实现逻辑介绍代码实现逻辑运行结果 三种策略对比以及完整代码 模式介绍 作为消息中间件,都会面临消息丢失的问题,消息丢失大概分为三种情况: …...

React状态管理-对state进行保留和重置

相同位置的相同组件会使得 state 被保留下来 当你勾选或清空复选框的时候&#xff0c;计数器 state 并没有被重置。不管 isFancy 是 true 还是 false&#xff0c;根组件 App 返回的 div 的第一个子组件都是 <Counter />&#xff1a; 你可能以为当你勾选复选框的时候 st…...

vue和springboot交互数据,使用axios【跨域问题】

vue和springboot交互数据&#xff0c;使用axios【跨域问题】 提示&#xff1a;帮帮志会陆续更新非常多的IT技术知识&#xff0c;希望分享的内容对您有用。本章分享的是node.js和vue的使用。前后每一小节的内容是存在的有&#xff1a;学习and理解的关联性。【帮帮志系列文章】&…...

AJAX 使用 和 HTTP

ajax学习 promise和 awit Node.js 和 webpack 前端工程化 Git工具 AJAX异步的JS和XML&#xff1a; 使用XML对象和服务器通信 在这里插入图片描述 统一资源定位符 URL HTTP 超文本传输协议 域名 资源路径 资源目录和类型 URL 查询参数 使用&#xff1f;表示之后的参数…...

MySQL之基础事务

目录 引言&#xff1a; 什么是事务&#xff1f; 事务和锁 mysql数据库控制台事务的几个重要操作指令&#xff08;transaction.sql&#xff09; 1、事物操作示意图&#xff1a; 2.事务的隔离级别 四种隔离级别&#xff1a; 总结一下隔离指令 1. 查看当前隔离级别​​ …...

uniapp设置 overflow:auto;右边不显示滚动条的问题

设置了overflow&#xff1a;auto;或者其它overflow的属性不显示滚动条是因为在uniapp中默认隐藏了滚动条 解决方法&#xff1a; //强制显示滚动条 ::-webkit-scrollbar {width: 8px !important;background: #ccc !important;display: block !important;}//设置滚动条颜色.cu-…...

数据库基础复习笔记

数据库 相关概念 名称全称检查数据库存储数据的仓库&#xff0c;数据是有组织的进行存储DataBase&#xff08;DB&#xff09;数据库管理系统操作和管理数据库的大型软件DataBase Management System(DBMS)SQL操作关系型数据库的编程语言&#xff0c;定义了一套操作关系型数据库…...

MySQL基础关键_013_常用 DBA 命令

目 录 一、MySQL 用户信息存储位置 二、新建用户 1.创建本地用户 2.创建外网用户 三、用户授权 1.说明 2.实例 四、撤销授权 五、修改用户密码 六、修改用户名、主机名/IP地址 七、删除用户 八、数据备份 1.导出数据 2.导入数据 &#xff08;1&#xff09;方式…...

爬虫请求频率应控制在多少合适?

爬虫请求频率的控制是一个非常重要的问题&#xff0c;它不仅关系到爬虫的效率&#xff0c;还涉及到对目标网站服务器的影响以及避免被封禁的风险。合理的请求频率需要根据多个因素来综合考虑&#xff0c;以下是一些具体的指导原则和建议&#xff1a; 一、目标网站的政策 查看网…...

探秘网络邮差:FTP、Telnet、SMTP、NFS、SNMP介绍

引言&#xff1a;谁是网络世界的“邮差”&#xff1f; 想象一下&#xff0c;你正在网上冲浪——发送一封邮件、上传一份文件、远程登录服务器&#xff0c;甚至只是打开一个网页。这些看似简单的操作背后&#xff0c;其实有一群默默无闻的“邮差”在辛勤工作。它们就是应用层协…...

java基础:异常体系

目录 一、java异常体系介绍二、异常1、运行时异常2、非运行时异常 三、错误四、异常的处理方式1、方式1&#xff1a;throws声明抛出异常1.1、throws关键字1.2、throw关键字 2、方式2&#xff1a;try-catch-finally 一、java异常体系介绍 异常体系图如下&#xff1a; Throwable…...

CSS Grid布局:从入门到实战

CSS Grid布局&#xff1a;从入门到实战 一、初识Grid布局 还在为网页布局发愁吗&#xff1f;Flexbox虽然好用&#xff0c;但当遇到复杂布局时&#xff0c;CSS Grid才是真正的王者。Grid布局是CSS中最强大的二维布局系统&#xff0c;它就像一张无形的网格纸&#xff0c;让我们…...

记录算法笔记(20025.5.14)对称二叉树

给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true 示例 2&#xff1a; 输入&#xff1a;root [1,2,2,null,3,null,3] 输出&#xff1a;false 提示&#xff1a; 树中节点数目…...

QT Creator配置Kit

0、背景&#xff1a;qt5.12.12vs2022 记得先增加vs2017编译器 一、症状&#xff1a; 你是否有以下症状&#xff1f; 1、用qt新建的工程&#xff0c;用qmake&#xff0c;可惜能看见的只有一个pro文件&#xff1f; 2、安装QT Creator后&#xff0c;使用MSVC编译显示no c com…...

JVM 与云原生的完美融合:引领技术潮流

最近佳作推荐&#xff1a; Java 大厂面试题 – 揭秘 JVM 底层原理&#xff1a;那些令人疯狂的技术真相&#xff08;New&#xff09; Java 大厂面试题 – JVM 性能优化终极指南&#xff1a;从入门到精通的技术盛宴&#xff08;New&#xff09; Java 大厂面试题 – JVM 深度剖析&…...

Ubuntu24.04编译ORB_SLAM的一系列报错解决

Ubuntu24.04编译ORB_SLAM的一系列报错解决 decay_t报错 报错信息&#xff1a;error: ‘decay_t’ is not a member of ‘std’&#xff1b;did you mean ‘decay’ 将CMakeLists.txt中第17行的c标准修改为c14即可&#xff1a; 修改前&#xff1a; CHECK_CXX_COMPILER_FLAG…...

为何大模型都使用decoder-only?

第一章 架构之争的历史脉络 1.1 从双向到单向的革命 2017年&#xff0c;BERT的横空出世让双向注意力机制成为NLP领域的“武林盟主”。通过Masked Language Modeling&#xff08;MLM&#xff09;&#xff0c;BERT在阅读理解、情感分析等任务中展现出惊人的表现&#xff0c;但它…...

《Effective Python》第2章 字符串和切片操作——Python 字符串格式化的现代选择f-strings

引言 本篇博客基于学习《Effective Python》第三版 Chapter 2: Strings and Slicing 的 Item 11 “Prefer Interpolated F-Strings Over C-style Format Strings and str.format” 的总结与延伸。 字符串格式化是 Python 编程中的常见操作&#xff0c;用于动态生成可读性高的…...

企业报表平台如何实现降本增效

一、你的企业是否正被这些问题拖累&#xff1f;‌ 财务还在手动汇总各门店的Excel销售数据&#xff1b;市场部总抱怨“客户分析全靠拍脑袋”&#xff1b;仓库突然发现爆款断货&#xff0c;但上周的报表显示库存充足…… 这些场景你是否熟悉&#xff1f;数据散落在ERP、E…...

Ollama+OpenWebUI+docker完整版部署,附带软件下载链接,配置+中文汉化+docker源,适合内网部署,可以局域网使用

前言&#xff1a; 因为想到有些环境可能没法使用外网的大模型&#xff0c;所以可能需要内网部署&#xff0c;看了一下ollama适合小型的部署&#xff0c;所以就尝试了一下&#xff0c;觉得docker稍微简单一点&#xff0c;就做这个教程的&#xff0c;本文中重要的内容都会给下载…...

git push 报错:send-pack: unexpected disconnect while reading sideband packet

背景 新建了一个仓库&#xff0c;第一次push 代码文件&#xff0c;文件中有一个依赖的jar&#xff0c;有80MB&#xff0c;结果push的时候报错。 错误信息 error: RPC failed; HTTP 500 curl 22 The requested URL returned error: 500 send-pack: unexpected disconnect whi…...

考研英一真题学习笔记 2018年

2018 年全国硕士研究生招生考试 英语 &#xff08;科目代码&#xff1a;201&#xff09; Section Ⅰ Use of English Directions: Read the following text. Choose the best word(s) for each numbered blank and mark A, B, C or D on the ANSWER SHEET. (10 points) Trust i…...

ultralytics中tasks.py---parse_model函数解析

一、根据scale获取对应的深度、宽度和最大通道数 具体例如yaml文件内容如下: depth=0.33,那么重复的模块例如C2f原本重复次数是3,6,6,3,那么T对应的模型重复次数就是三分之一即1,1,2,1次。这个在后面定义的: width=0.25,max_channels=1024 原本c2=64,但经过make_div…...