【系统架构师】-案例篇(十二)MQTT、边缘计算与缓存一致性

1、MQTT是一个基于物联网的传输协议,用于轻量级的订阅发布的消息传输。旨在为低带宽和不稳定的网络环境中的物联网设备提供可靠的网络服务。

  • 开放消息协议,简单易实现
  • 发布订阅模式,一对多消息发布
  • 基于TCP/IP网络连接,提供有序,无损,双向连接。
  • 1字节固定报头,2字节心跳报文,最小化传输开销和协议交换,有效减少网络流量。
  • 消息QoS支持,可靠传输保证

1-6中,只有3是MQTT协议,其他都是HTTP

2、从数据通信、数据安全和系统性能等方面简要分析在传统云计算模型中引入边缘计算模型的优势:

1)性能:如果使用边缘计算,则物联网设备将在边缘数据中心或本地处理数据。因此,数据无需传输回中央服务器,速度优势明显;

2)安全:边缘计算将在不同的数据中心和设备之间分配数据处理工作。黑客无法通过攻击一台设备来影响整个网络;

3)可扩展性:通过购买具有足够计算能力的设备来扩展边缘网络。企业无需为其数据需求建立自己的私有或集中式数据中心;

4)可靠性:所有的边缘数据中心和物联网设备都位于用户附近。因此,网络中断的可能性非常小。

3、设计团队在讨论缓存和数据库的数据一致性问题时,李工建议采取数据实时同步更新方案,而张工则建议采用数据异步准实时更新方案。

李工同步方案思路:

更新数据时在同一事务内依此完成删除缓存,更新数据库,再写入缓存。

张工异步准实时方案思路:

更新数据时在同一事务内首先通过消息队列发布待更新数据的消息给缓存更新服务,再更新数据库;缓存更新服务订阅消息队列,待收到更新事件执行缓存更新。

项目数据量极大,且性能要求高,较适合采用张工提出的异步准实时方案较好。

4、缓存分片方法常用的有哈希算法和一致性哈希算法

哈希算法通过某种哈希算法散列得到一个值,按该值将数据分配到集群响应节点进行缓存。

一致性哈希算法将整个哈希值空间映射成一个按顺时针方向组织的虚拟圆环,使用哈希算法算出数据哈希值,然后根据哈希值的位置沿圆环顺时针查找,将数据分配到第一个遇到的集群节点进行缓存。

一致性哈希算法有两大优点

1)  可扩展性。一致性哈希算法保证了增加或减少服务器时,数据存储的改变最少,相比传统哈希算法大大节省了数据移动的开销。

2)  更好地适应数据的快速增长。

5、布隆过滤器的工作原理和优缺点:

布隆过滤器的原理是当一个元素被加入集合时,通过K个散列函数将这个元素映射成一个位数组中的K个点,把它们置为1。检索时,只要看看这些点是不是都是1就大概知道集合中有没有它了;如果这些点有任何一个0,则被检元素一定不在;如果都是 1,则被检元素很可能在。

优点:

1. 增加和查询元素的时间复杂度为:O(K), (K为哈希函数的个数,一般比较小),与数据量大小无关

2. 哈希函数相互之间没有关系,方便硬件并行运算

3. 布隆过滤器不需要存储元素本身,在某些对保密要求比较严格的场合有很大优势

4. 在能够承受一定的误判时,布隆过滤器比其他数据结构有这很大的空间优势

5. 数据量很大时,布隆过滤器可以表示全集,其他数据结构不能

6. 使用同一组散列函数的布隆过滤器可以进行交、并、差运算

缺点:

1. 有误判率

2. 不能获取元素本身

3. 一般情况下不能从布隆过滤器中删除元素

4. 如果采用计数方式删除,可能会存在计数回绕问题

<think>好的,用户之前问过关于结合自己控制工程背景找工作的问题,现在又提到数据库开发、前后端、系统架构、Linux驱动这些例子,想结合自己的专业和项目经历,找到适合的软件开发学习路线。我需要先回顾之前的对话,确保这次回答保持一致,并且更具体地针对他提到的技术方向。 用户背景是控制科学工程,项目经历可能涉及工业自动化,比如垃圾船项目。他想转向软件开发,但需要结合原有优势。之前建议过智能制造领域,强调国产化技术栈和工业协议。现在他具体列出了几个技术方向,需要整合这些到学习路线中。 首先,要确定如何将控制工程软件开发结合,比如工业软件、嵌入式系统、物联网平台等。他提到的数据库、前后端、系统架构、驱动开发,这些都是软件开发的不同领域,需要找到控制工程相关的应用场景。 可能需要分阶段规划:基础强化阶段,然后是核心技术栈构建,接着是垂直领域深化,最后是架构能力提升。每个阶段需要结合他的项目经历,例如将垃圾船项目升级为基于边缘计算的系统,这样能展示多方面的技能。 要具体推荐技术栈,比如用Go语言处理高并发,Python用于数据分析,Vue3做前端可视化。数据库方面,时序数据库TDengine可能更适合工业数据系统架构方面,结合云原生和微服务,同时保持对工业协议的理解。 还要考虑认证和项目包装,帮助他在求职时突出竞争力。比如建议考取Kubernetes认证,将项目经验重新包装,体现系统级的开发能力。同时,强调工业背景的优势,比如熟悉Modbus、CAN总线,这在智能制造领域很关键。 需要确保路线不仅涵盖技术学习,还包括项目实践和证书准备,形成完整的提升路径。最后,对比不同方向的职业发展,帮助他根据兴趣选择细分领域,比如工业物联网或高端装备软件。</think>根据你的控制科学工程背景(含垃圾船项目经历),结合工业领域软件开发需求,为你设计分阶段技术演进路线: /// 技术路线总公式 **(控制理论 × 工业场景) + (软件开发 × 云边协同) = 智能制造系统架构师** /// 阶段一:基础强化(3-6个月) **技术栈**: - **工业级Python**: - 重点掌握:PyQT(设备控制面板开发)、ModbusTK(工业协议模拟) - 项目实践:将垃圾船PLC数据通过OPC UA协议接入Python可视化平台 - **Linux深度改造**: - 核心能力:设备树定制(针对工控机)、Sysfs接口开发 - 项目升级:在原有驱动开发基础上,实现传感器数据通过procfs实时展示 - **数据库选型**: - 主攻:TDengine(工业时序数据库) - 实践:建立设备振动数据存储模型(采样率>10kHz) /// 阶段二:核心能力构建(6-12个月) **工业软件技术栈**: ```bash # 典型工业软件技术栈构成 工业协议层:OPC UA/Modbus/CANopen 中间件层:ZeroMQ(设备通信)+ RedisTimeSeries(实时数据缓存) 业务逻辑层:Golang(高并发控制服务)+ C++(运动控制算法) 可视化层:Vue3 + WebGL(3D设备监控) ``` **重点突破方向**: 1. **控制算法软件化**: - 将PID控制算法封装成gRPC微服务 - 使用Cython加速MATLAB控制模型 2. **工业通信协议栈**: - 开发Modbus/TCP协议解析器(含异常报文处理) - 实现CAN总线到MQTT的协议转换网关 3. **设备数字孪生**: - 基于Three.js构建船舶动力系统3D模型 - 通过WebSocket实现虚实同步(<50ms延迟) /// 阶段三:垂直领域深化(1-2年) **技术方向选择矩阵**: ``` | 兴趣维度 | 推荐技术路线 | 对应岗位案例 | |-----------------|-----------------------------|--------------------------| | 设备控制 | 实时Linux+ROS2开发 | 工业机器人控制系统工程师 | | 数据分析 | 时序数据库+Spark结构化流 | 设备预测性维护专家 | | 系统集成 | 工业微服务+Kubernetes | 智能制造平台架构师 | ``` **推荐技术组合**: - **高端装备领域**: ```mermaid graph LR A[VxWorks实时系统] --> B[MATLAB/Simulink模型] B --> C[自动代码生成(C++)] C --> D[ISO13849功能安全认证] ``` - **工业物联网领域**: ```python # 典型IIoT数据处理流水线 class IndustrialPipeline: def __init__(self): self.protocol = ModbusGateway() # 协议接入 self.edge = EdgeComputing() # 边缘计算 self.cloud = TDengineCloud() # 云端存储 def process(self, data): return self.cloud.store( self.edge.analyze( self.protocol.parse(data))) ``` /// 阶段四:架构能力跨越(2-3年) **工业系统架构模式**: ```go // 典型控制-计算-展示三层架构示例 type IndustrialSystem struct { ControlLayer map[string]PLCProxy // 控制层(OPC UA连接PLC) ComputeLayer []*k8s.Deployment // 计算层(Kubernetes托管算法服务) Visualization WebGLDashboard // 展示层(三维数字孪生) } func (sys *IndustrialSystem) Run() { go sys.ControlLayer.Monitor() // 实时监控 go sys.ComputeLayer.AutoScale() // 自动扩缩容 sys.Visualization.Render() // 可视化渲染 } ``` **关键架构能力**: 1. 工业软件可靠性设计(MTBF > 10000小时) 2. 混合关键系统设计(实时控制+非实时计算共存) 3. 国产化替代架构(ARM工控机+OpenEuler+TiDB) /// 项目包装策略 将原有经历升级为: **"船用设备智能运维系统"** ``` 技术亮点: - 驱动层:定制Linux GPIO驱动(响应时间<1ms) - 协议层:逆向工程专有船舶通信协议 - 数据层:TDengine存储1亿+设备状态数据- 智能层:LSTM模型预测设备故障(准确率92%) - 展示层:三维可视化船体应力分布热力图 ``` /// 学习资源推荐 1. **工业软件必读书籍**: - 《工业控制网络安全技术实践》 - 《Building Secure and Reliable Industrial IoT Systems》 2. **特色开源项目**: - EdgeX Foundry(工业物联网框架) - OpenPLC(开源PLC实现) 3. **认证路径**: ```mermaid graph LR 基础 --> 阿里云IoT工程师认证 进阶 --> 西门子S7-1200 PLC认证 高级 --> Kubernetes CKA+工业互联网平台架构师 ``` /// 职业发展双通道选择 ``` 科研型路线: 控制算法工程师 → 数字孪生专家 → 首席科学家 (需强化数学建模能力) 工程型路线: 工业软件工程师 → 系统架构师 → CTO/技术合伙人 (需提升架构设计能力) ``` 建议先从工程型路线切入,利用你的项目基础,重点突破工业协议解析和设备控制软件开发,同时逐步构建分布式系统设计能力。可优先参数控机床联网、风电设备预测性维护等既有工业背景又需要新技术的项目。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宣晨光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值