<b>素材准备 (按热门梯度)</b><br>
第一梯队:热门架构模式
<b>微服务架构</b>
<b>云原生架构</b>
论云原生应用开发
理论论点
服务化
弹性原则
可观测原则
自动化原则
可观测
自动化
项目例证
服务化项目实战<br>
核心问题:业务臃肿,多团队协作难,故障不能隔离
方案:服务化拆分,实现分治、独立演化<br>
弹性伸缩项目实战<br>
核心问题:系统的流量呈现明显的时效性,差异大
方案:采用k8s HPA机制 根据cpu比例进行弹性伸缩<br>
可观测项目实战<br>
核心问题:服务数量增加,维护难度激增<br>
方案<br>
采用普Promethus+Grafana搭建监控系统,实时监控系统指标,异常报警<br>
使用traceId+spanId实现调用链串联,EFK构件日志系统实现日志收集、存储、分析<br>
自动化项目实战<br>
核心问题:服务激增,服务的构建、发布、部署工作量激增
方案
使用GitLab pipeline实现代码编译、单元测试、打包成容器镜像<br>
部署到测试环境测试,测试通过后,上传到公司镜像仓库<br>
现场部署灰度升级<br>
子主题
论Serverless架构及其应用
论云上自动化运维 CloudOps及其应用
论DevOps及其应用
论DevSecOps及其应用
<b>层次式架构</b>
论企业应用系统的分层架构风格<br>
项目例证
表示层
核心问题:算法配置灵活性<br>
方案:页面算法配置解释器应用<br>
业务服务层<br>
核心问题:数据量大,高效数据检索<br>
方案:读写分离,水平和垂直分表<br>
智能开放平台层<br>
核心问题:多种算力资源管理,任务管理<br>
方案:定义算子抽象层接口 <br>
算力资源层
论数据访问层设计技术及其应用
<b>架构风格</b>
论软件架构风格及其应用<br>
理论论点
数据流风格
调用返回风格
以数据为中心
虚拟机风格
事件驱动风格
项目例证
设计算法配置功能时<br>
核心问题:算法多种多样,每个算法的配置规则不同<br>
方案:为了灵活配置,使用解释器风格实现规则配置<br>
设计业务应用功能时?<br>
使用以数据为中心风格<br>
设计数据流交互时<br>
核心问题:数据需要分发到不同的业务模块,实现不同的业务功能。比如比对识别、身份认证、布控报警<br>
方案:使用事件驱动风格。发布订阅模式,不需要知道接收者有哪些,实现灵活扩展<br>
总结
成功的
问题
随着接入点位的数据,业务数据量的增加,出现延迟增加、队列积压等问题<br>
通过 kafka集群化方案解决<br>
<b>架构评估</b>
论软件系统架构评估及其应用
第二梯队:质量属性
<b>性能设计</b>
<b>可靠性设计</b>
论软件的可靠性设计<br>
项目例证
防御性设计<br>
问题:xxx场景下,服务不稳定,容易出现超时情况,
方案:采用熔断的处理策略,避免问题的扩散。 同时采取一些重试机制,保证恢复后能及时恢复请求<br>
集群化设计<br>
问题:为了避免单点故障
方案:系统部署在k8s集群上,打包成docker镜像,基于k8s的 deployment描述文件,部署多个实例。节点故障时,保证实例数量<br>
预警机制
问题:确保出现故障时,能够及时通知运维人员处理
方案:基于Promethus和Grafana搭建监控系统,检测cpu、内存、磁盘、网络带宽占用,响应时间TP99、请求错误率<br>当检测到异常时,触发告警,通知运维人员。 比如队列堆积预警<br>
软件可靠性设计技术与应用
软件可靠性评价
背景知识
概念
影响可靠性的因素
可靠性设计技术
容错设计技术
恢复块设计
N版本程序设计
冗余设计
集群技术
检错技术
防卫式程序设计
<b>安全性设计</b>
论信息系统安全性设计<br>
项目例证
采用访问鉴权、授权管理保证用户的合法访问<br>
<i>用日志记录加</i>数据备份保证系统数据安全<br>
双机热配系统和集群保证系统的运行安全<br>
总结
<b>可修改性设计</b>
第三梯队:设计开发
<b>RUP统一过程开发方法</b>
理论论点
4个阶段:初始、细化、构造、移交
3大特点:用例驱动、体系结构为中心、迭代增量
项目例证
将项目分为多次迭代,第一次迭代实现xx功能,第二次迭代实现xxx功能。<br>每次迭代包括初始、细化、构造、移交。本文着重介绍初始、细化、构造阶段<br>
初始阶段:建立系统业务模型并确认系统边界<br>
。业务模型使用用例模型来表示<br>
识别系统的主要参与者, 包括管理员、操作员、摄像机<br>
细化用例描述,为关键用例编写用例规约,包括用例名、参与者、前置条件、后置条件、基本事件等。可以展开为下发智能分析任务的用例描述<br>
细化用例之间的关系,包括包含、扩展 、泛化<br>
通过以上过程建立了用例模型,确定了系统的边界
细化阶段:设计系统的体系结构图<br>
采用面向对象的风格来实现系统架构。<br>遵循了一些设计模式,单一职责,开闭原则和依赖导致原则<br>
构造阶段:功能开发和测试<br>
为了提高开发效率和质量,我们采用持续集成和持续交付的策略。<br>通过自动化构建、测试和部署,确保每次代码提交后系统都能快速、稳定的更新<br>
总结
通过RUP应用,降低了系统的风险
设计有不合理,通过多论评审修改迭代才完成
<b>敏捷开发</b>
<b>面向对象分析方法</b>
<b>论面向对象的系统分析方法</b><br>
项目例证
建立用例模型<br>
识别参与者、合并需求获得用例、细化用例<br>
建立静态模型<br>
定义概念类、识别类之间的关系、为类添加职责、建立交互图<br>
建立动态模型<br>
使用uml中状图态和活动图建立了系统的动态模型<br>
总结
<b>论系统需求分析方法</b>
理论论点
结构化分析方法
数据流图、数据字典、ER图、状态转换图
实例论证
<b>论面向对象建模方法及其应用</b>
<b>ABSD 基于架构的软件开发</b>
<b>CBSD 基于构件的软件开发</b>
实践支撑
构件获取
构件开发
流媒体服务为了支持可靠UDP传输, 采用UDT, 但是它是同步接口,我们是异步事件驱动
<b>架构评估方法</b>
<b>系统测试</b>
<b>企业应用集成</b>
第四梯队:测试技术
论性能测试方法及应用
理论
项目例证
测试前准备
明确测试目的,环境准备、数据准备、编写测试脚本
执行测试
性能诊断与优化
总结
<b>写作技巧</b><br>
<b>论文模版参考</b><br>
某老师10段式写法
摘要 2段
时间项目职责描述 + 正文论述概括<br>
正文 7~8段<br>
项目背景2段
回应题目问题 1段
项目论述 3~4 段<br>
结尾总结 2段
某赛论文写作四部曲
摘要
正文
项目背景介绍 400字
过度内容 300~400<br>
主体内容 1000~1500<br>
论文结论 400~600<br>
<b> <font color="#e74f4c"> </font><font color="#000000">写作实践</font><br></b>(按写概设/毕设的方式)<br>
摘要部分<br>
没啥说的, 参考论文模版, 写好背<br>
<b>项目背景</b><br>
项目产生的宏观现实背景。固定内容,背诵下来<br><b>【道客xx、xx文库里找一下,AI润色一下】</b><br>
项目功能模块介绍,<b>项目维度的要求挑战,引出总体方案</b><br> 1) 比如系统对稳定性和扩展性要求高,采用xxx解决方案<br> 2) 比如系统对数据一致性要求高,采用xxx解决方案<br>
<b> 项目主体论述</b><br>
基于题目考察的理论论点,<b>聚焦于系统的三四个功能模块(或角度)进行举证</b>。<b>侧重描写有哪些问题,以及如何实践理论论点来解决这解决项目中的一些问题</b><br>
举例:<br>论微服务架构应用<br>
理论论点
模块化拆分和解耦,有利于演化和扩展<br>
独立技术栈,提效和性能<br>
独立部署和扩展,便于弹性伸缩<br>
项目例证
服务拆分<br>
<b>问题</b>:系统庞大,多团队协作难<br>
<b>方案</b>:服务拆分职责功能描述,实现分治,<br>解耦及降低复杂度,独立演化<br>
独立技术栈<br>
<b>原因</b>:多技术更贴合业务需要,实现最优配置
<b>方案:</b>业务平面java;数据平面golang,计算层面用cpp等<br>
独立部署和扩展<br>
<b>问题</b>:微服务拆分,部署运维困难; <br>业务流量有明显的时间分布<br>
<b>方案</b>:使用容器+k8s部署管理; 使用HPA进行弹性伸缩<br>
总结
成功的
问题及办法
调用链路边长,查问题变的复杂<br>
链路追踪+EFK<br>
<b>注意事项</b><br>
1. 论文的项目背景只需要准备1~2个,不需要太多<br>
2.<b> 论文主体是一个举证的过程,让阅卷老师知道<br>你具备发现及解决问题的能力</b><br>
3. <b>切忌不要流水账形式</b>,系统有什么什么功能,<br>怎么使用。而要<b>写出需求问题及解决办法</b><br>
4. 主体论述部分要融合到自己的项目中,<b>适当展开一点业务细节,使之有血有肉</b>,增加可信度,不可空泛的理论及概念<br><br>