我的软考历程

摘要

2023年2月,我所在的公司做了开发纱线MES系统的决定,该系统为国内纱线工厂提供SAAS服务,旨在提高纱线工厂的智能化和数字化水平。我在该项目中被任命为系统架构设计师,全面掌管该项目的架构设计工作。该项目涉及参与者众多,逻辑复杂,需求变化快,要求具有高性能、高可用、高可靠性以及灵活发布等特点。基于此,我们采用云原生技术,把系统中的非功能性特性剥离出来,具体而言,我们用到了弹性、可观测性、微服务等特性,如此,开发人员就可以专注业务功能的开发,从繁重的底层搭建中解放出来。借助云原生技术的加持,最终在2023年10月,该系统正式上线并运行至今,目前已经有879家工厂接入了我们的系统,系统运行稳定,表现优异,得到了客户工厂和公司领导的一致赞扬。

项目背景

随着我国从制造业大国升级为制造业强国以及工厂数字化和智能化的持续推进,我所在的某地某科技公司基于自研的物联网平台相继开发了染整一体化和织布一体化等系统,这些系统上线后,得到了工厂的追捧,也为公司带来了丰厚的经济回报。基于此,我司于2023年2月开始研发纱线MES系统,该系统总投资730万,开发周期10个月,涵盖纱线工厂从清花、梳棉、并条、精梳、粗纱、细纱到络筒的全流程工序,将为纱线工厂提供全面的生产管理解决方案以及基于数据的智能决策分析能力。该项目采用物联网层次架构,整体分为感知层、网络层和应用层。其中网络层为公司已有的物联网平台,这次重点建设内容为感知层和应用层,感知层使用Golang语言开发,作为联网网关部署在工厂侧,负责工厂数据的采集和云端指令的下发。应用层为纱线MES系统主体,采用Java语言开发,使用Spring Cloud微服务架构,数据库使用Mysql,缓存使用Redis,前端框架使用vue.js,日志、监控和链路追踪采用skywalking、prometheus、grafana和ELK,最终通过devops的方式部署在kubernetes集群中。系统上线后,将提供以下:基础管理、数据接入、工单排产、数字孪生、工资计算、智控中心和数据分析等等功能,通过以上功能,可以全面提升纱线工厂的数字化和智能化水平,使其运营水平和生产效率得到质的提升。

论述内容

由于该系统涉及参与者众多,功能复杂,需求变化快,接入工厂设备达到483万多台,这就要求该系统必须具备快速部署、迭代速度快、高可用、高并发、高可靠性、高性能、高伸缩性等特性,基于此,我们团队一致同意采用云原生技术。目前云原生有多种架构模式,比如微服务、无服务、mesh化架构、事件驱动等等架构模式,每一种架构模式都有自己的应用场景。像无服务架构模式,它就适合消息驱动的处理任务,像事件驱动架构模式,它适合需要解耦的系统,具有良好的扩展性和可维护性。在本项目中,我们采用了微服务架构模式,微服务架构模式把系统按照领域分为一个个具体的模块,每一个模块作为微服务可以单独部署、开发、运行在独立的进程中,它具有独立管理、独立部署、技术异构、高容错性、高可靠性等特点。所以,为了实现我们的项目目标,我们使用了云原生中的微服务架构,通过领域驱动,把系统分解成领域独立的多个微服务,并在微服务架构中采用了云原生的弹性、可观测性、自动化等原则,帮助纱线MES系统实现快速部署、高迭代速度以及满足高并发、高可用、高性能的非功能质量目标,保证了纱线MES系统按时上线。

一、弹性原则

我们采用了云原生中的微服务架构模式,其中就用到了云原生中的的一个很重要的特性:云原生的弹性原则。我们项目针对纱线工厂,而纱线工厂的生产具有很强的季节性,每年的10月到来年的2月是一个旺季,这时候,纱线MES系统就需要应对海量生产数据的上报,而到了纱线工厂的淡季,就不需要应对海量并发请求,也就不需要那么多服务器资源。基于此,采用了云原生技术架构之后,就可以利用kubernetes中的机制,通过对容器的资源占用率做阈值设置,当资源利用率很低时,达到了阈值下限,就可以关闭一些容器,释放掉一些服务器资源,让服务器资源得到充分的利用,避免资源的浪费,提高系统的效益。当到了旺季后,大量生产数据的上报就会占用服务器的资源,此时,服务器的资源利用率就会上升,当达到阈值上限时,kubernetes就会自动分配新资源,启动新的容器。来应用海量的请求。我们的系统就是借助了云原生的弹性原则,有效了提高了系统的效益,降低了系统资源的浪费,以最小的代价,保障了系统的运行。

二、可观测性原则

由于本项目业务复杂,涉及参与者众多,同时需求变化快,迭代速度也快。这就要求当系统出现问题,或者在出现问题之前,就需要能够快速发现并处理掉问题,此外,由于需求变化快的缘故,这就要求我们的系统必须具备良好的测试性。这些特点就决定了我们的系统要具备可观测性,能够实时看到系统的状态,对于具体请求而言,要能够观察到这个请求从进入到结束的全流程链路。基于此,我们就用到了云原生中的又一个特性:可观测性。为了实现可观测性,我们使用了Skywalking、grafana、elk以及prometheus。通过它们,我们系统可以做到,每一个请求都能够清晰地看到它的完整链路,同时这些信息可以在页面上通过图形化展示出来,同时,系统的各项系统参数,比如cpu利用率、内部使用率、磁盘io等等都能在页面上清楚地看到。不仅如此,我们还可以实现实现自定义的报警,在设置一些阈值后,当系统的参数达到阈值之后,就可以通过电话、短信、钉钉、微信等方式直接通知到相应关系人,做到问题的快速响应。可以看到,借助云原生的可观测性,有效地提高了我们系统的可用性和可靠性。

三、自动化原则

在以前,项目的测试和部署都是通过手动的方式或者是脚本的方式执行的,但是,在本项目中,系统被分为了很多微服务,每一个微服务又是集群运行的。如果采用手动或者是脚本的方式去部署和运行,这是难以想象也是难以实施的。而云原生中的自动化原则就可以帮助我们项目解决这个问题。在项目代码开发过程中,每一次开发人员的代码提交都会触发自动的代码编译和代码检查任务,当代码有问题时,就会提示相关开发人员去修改代码,之后,CI/CD会自动地运行单元测试,但出现失败后,也会生成报告提示相关开发人员。当都没有问题后,就可以对代码生成版本号,生成对应的项目镜像,然后一键发布到对应的环境之中。不仅如此,发布还支持蓝绿发布和灰度发布,这有效提升了系统地连续运行能力。也正是接住了云原生的自动化原则,我们实现了四天一迭代,两周一个大版本的开发速度,有效保证了项目的顺利上线。

总结

通过采用云原生架构技术,我们的项目进展顺利,最终在2023年12月,该项目正式投产并对外提供服务,至今稳定运行,各项功能和性能指标均远远超过了客户的预期,得到了客户工厂和公司领导的一致赞扬。虽然项目取得了成功,但是也遇到过一些问题,在项目初期,由于产品经理对纱线业务的不熟悉,导致很多功能的调整和返工,这打击了开发人员的士气,基于此,我提出两个解决方式:1、派产品进入工厂一线,与工人交流,熟悉操作流程,彻底摸清纱线业务,保证需求质量;2、开发人员也要学习纱线业务,遇到问题反馈给产品,同时在做设计时,采用灵活的设计模式,为需求的变动留下可操作的空间。我们通过这两个方法解决了这个问题,保证了项目的进展。通过这次实践,我不仅学习到了云原生的相关技术,也锻炼了自己的架构和管理能力,我意识到只有不断地学习和实践才能让知识融汇于自己的技术体系之中,才能在未来的工作中游刃有余、勇担大任,为祖国的信息化建设贡献自己的力量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/89205.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/89205.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/89205.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重置 MySQL root 密码

引言 在linux可能存在安装mysql安装失败,一直不出现默认密码 /usr/local/mysql/mysql-8.0.26/bin/mysqld --defaults-file/etc/my.cnf --usermysql --basedir/usr/local/mysql/mysql-8.0.26 --datadir/usr/local/mysql/mysql-8.0.26/data --lower-case-table-name…

面试八股---HTML

面试八股 1、HTML 1.1 src和href的区别 src 用于替换当前元素,href 用于在当前文档和引用资源之间确立联系。 核心区别在于 href 关联的资源(主要是 CSS)是用于描述页面外观的,浏览器可以先生成内容再应用样式,因此…

气候智能体:AI如何重构人类应对气候危机的决策体系?

前言 前些天发现了一个巨牛的人工智能免费学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站 《气候智能体:AI如何重构人类应对气候危机的决策体系?》 展开全景式论述。文章结合2025年最新技术突破与…

UITableView的位置向下偏移, contentInsetAdjustmentBehavior使用详情

一.contentInsetAdjustmentBehavior 作用: 在iOS 11及以后,苹果引入了安全区域(Safe Area)的概念,当UITableView的frame超出了安全区域,系统会自定调整SafeAreaInsets的值,它可以自动调整内容的内边距,使得内容不会被导航栏遮挡。…

腾讯云RayData全新推出“行业解决方案模板”,一键快捷制作3D数据可视化作品

点击蓝字⬆ 关注我们 本文共计958字 预计阅读时长3分钟 腾讯云RayData Plus是一款专注于高视效的3D数据可视化的实时渲染工具。 功能全面:提供了三维、二维、动画、数据、交互逻辑等各类能力; 零代码制作:灵活的节点式创作,即便没…

深度解析基于贝叶斯的垃圾邮件分类

贝叶斯垃圾邮件分类的核心逻辑是基于贝叶斯定理,利用邮件中的特征(通常是单词)来计算该邮件属于“垃圾邮件”或“非垃圾邮件”的概率,并根据概率大小进行分类。它是一种朴素贝叶斯分类器,因其假设特征(单词…

WPF 3D 开发全攻略:实现3D模型创建、旋转、平移、缩放

🎮 WPF 3D 入门实战:从零打造一个可交互的立方体模型 标题: 🚀《WPF 3D 开发全攻略:实现旋转、平移、缩放与法线显示》 💡 引言 在现代图形应用中,3D 可视化已经成为不可或缺的一部分。WPF 提供…

Ruby 安装使用教程

一、Ruby 简介 Ruby 是一种简单快捷的面向对象脚本语言,以优雅、简洁、易读著称。它常被用于 Web 开发(如 Ruby on Rails 框架)、自动化脚本、DevOps、命令行工具等领域。 二、Ruby 安装教程 2.1 支持平台 Ruby 支持跨平台运行&#xff0c…

python | numpy小记(五):理解 NumPy 中的 `np.arccos`:反余弦函数

python | numpy小记(五):理解 NumPy 中的 np.arccos:反余弦函数 一、函数签名与核心参数二、数学定义与取值范围三、基础使用示例四、与 Python 内建 math.acos 的对比五、常见问题与注意事项六、典型应用场景1. 三维向量夹角计算…

华为云Flexus+DeepSeek征文 | 华为云ModelArts与Reor的完美结合:创建高效本地AI笔记环境

华为云FlexusDeepSeek征文 | 华为云ModelArts与Reor的完美结合:创建高效本地AI笔记环境 引言一、ModelArts Studio平台介绍华为云ModelArts Studio简介ModelArts Studio主要特点 二、Reor介绍Reor简介Reor主要特点 三、安装Reor工具下载Reor软件安装Reor工具 四、开…

【启发式算法】Dynamic A*(D*)算法详细介绍(Python)

📢本篇文章是博主人工智能(AI)领域学习时,用于个人学习、研究或者欣赏使用,并基于博主对相关等领域的一些理解而记录的学习摘录和笔记,若有不当和侵权之处,指出后将会立即改正,还望谅…

报告怎么写

替代方案(按场景选择) 岗前准备阶段 ✅ "熟悉业务流程/系统操作" ✅ "掌握XX工具/平台的核心功能" ✅ "完成上岗前技术对接" 知识转化场景 ✅ "梳理产品知识体系" ✅ "转化技术文档为实操方案" ✅ &…

大模型——怎么让 AI 写出好看有设计感的网页

大模型——怎么让 AI 写出好看有设计感的网页 你让 AI 给你写的网页大概都是这样的: 或者这样: 好点的时候能这样: 但都不够高级,尤其是那个像引用一样的边框,太 AI 了。 今天教大家一个小技巧,写出下面这样的网页: 或者这样的

【Torch】nn.Linear算法详解

1. 定义 nn.Linear 是 PyTorch 中最基础的全连接(fully‐connected)线性层,也称仿射变换层(affine layer)。它对输入张量做一次线性变换: output x W T b \text{output} x W^{T} b outputxWTb 其中&a…

ZGC收集器

ZGC收集器 欢迎来到我的博客:TWind的博客 我的CSDN::Thanwind-CSDN博客 我的掘金:Thanwinde 的个人主页 0.前言 ZGC收集器完全可以说是Java收集器的一个跨时代的收集器,他真正意义上实现了停顿时间在10ms以内并且几乎全时段都是…

隧道技术篇2frp代理nps代理shisel代理

FRP代理 1.实现湖北内网控制北京的内网C2上线 2.实现湖北内网探针北京内网 信息收集 (socks建立和端口映射) 1.连接47.98.210.85 7000端口服务端 2.尝试将服务端的6666转到127.0.0.1 5555采用tcp协议,备注名proxies serverAddr"47.98…

[Python 基础课程]PyCharm 的安装

Python 的编辑器目前主流的有 PyCharm 和 Vscode。 PyCharm 是 Python 目前最主流、最常用、最推荐的 Python 编辑器。 https://www.jetbrains.com/pycharm/ PyCharm 有社区版和专业版,可以根据自己的需要下载对应的版本。社区版是收费的,对于初学者或…

Spread Ribbon 工具栏控件:在WinForms中高效编辑Spread工作簿

引言 在数据密集型应用中,电子表格功能是提升用户体验的关键要素。GrapeCity Spread.NET V17 推出的独立 Ribbon工具栏控件,为WinForms开发者提供了与Excel高度一致的UI交互体验。通过集成此控件,用户可直观地进行数据编辑、格式调整等操作&…

leedcode:找到字符串中所有字母异位词

问题:给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。 package com.text;import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;…

华为云Flexus+DeepSeek征文|基于华为云 Flexus Dify平台开发AI Agent的详细流程

目录 一、Dify 应用开发平台 1.1 什么是 Dify? 1.2 Dify 平台优势 二、构建 AI Agent 2.1 创建智能客服助手 2.2 配置 LLM组件 三、访问智能应用 3.1 应用发布 3.2 智能对话 四、API 调用智能客服助手 4.1 配置 API 访问接口 4.2 调用智能客服助手API …