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

系统设计基本功:理解语义

欢迎来到啾啾的博客🐱。
记录学习点滴。分享工作思考和实用技巧,偶尔也分享一些杂谈💬。
有很多很多不足的地方,欢迎评论交流,感谢您的阅读和评论😄。

目录

  • 1 引言
  • 2 语义简单概览
    • 2.1 语义表

1 引言

刷小红书看到有人被问到Redis Key过期要怎么记录日志,于是想到Redis事件通知,又想到Kafka复杂的事件通知。
从设计哲学又想到语义。

我们经常接触的组件、框架都有哪些语义呢?

2 语义简单概览

在软件工程领域,“语义(Semantics)”不仅指代码的字面意思,更关乎一个组件或框架在设计上所蕴含的核心思想、行为承诺和使用范式。它回答了这样一个问题:“这个工具被设计用来解决什么问题?它承诺了什么,又不承诺什么?”

2.1 语义表

使用AI汇总了一下语义表。

领域技术/模式语义 (Semantics)语义解读 (潜台词)行为承诺 (Promise)适用场景
事件通知Redis 事件通知尽力而为的通知 (Best-Effort Notification)我会尽力、快速地告诉你发生了什么,但如果你错过了,我也无能为力。轻量级、低延迟、“发送即忘”,不保证可靠性。对可靠性要求不高,但对实时性敏感的场景,如缓存失效通知、实时数据面板。
Kafka可靠的事件流日志 (Reliable Event Stream Log)你发给我的每条消息,我都会安全存好,并确保它能被消费。高吞吐量、持久化、高可靠性(至少一次/精确一次)、支持消费者回溯。需要可靠异步通信、事件驱动架构、日志聚合、流处理的系统。
架构模式单体架构内聚与简单 (Cohesion & Simplicity)先将所有功能内聚在一起,追求初期开发的简单与高效。初期开发效率高,易于部署和测试。项目早期、小型应用、业务边界不清晰的场景。
微服务架构解耦与自治 (Decoupling & Autonomy)将系统拆分为独立自治的服务,让每个部分都能独立进化。服务独立开发、部署和扩展,高灵活性和弹性。复杂系统、大型团队、需要高可扩展性和技术异构的场景。
数据库SQL 数据库结构化与强一致性 (Structure & Strong Consistency)数据的结构和一致性是第一位的,必须严格保证。强数据一致性 (ACID),预定义表结构,支持复杂查询。金融系统、订单管理、ERP等对数据一致性要求极高的场景。
NoSQL 数据库灵活性与高可扩展性 (Flexibility & High Scalability)为了应对海量访问,我们优先考虑灵活性和水平扩展能力。高可用性、高并发读写、灵活或无模式的数据结构 (BASE)。大数据分析、社交网络、物联网、内容管理等需要高扩展性的场景。
API 设计REST无状态的资源导向 (Stateless & Resource-Oriented)把世间万物都看作资源,用统一的、无状态的方式来操作它们。无状态、资源导向、统一接口,利用HTTP协议。绝大多数Web服务、开放API、面向资源的CRUD操作。
GraphQL客户端驱动的精确获取 (Client-Driven & Precise Fetching)你(客户端)来定义你需要的数据形态,我(服务端)负责精确地满足你。客户端定义数据需求、无过度/不足获取、单一入口。移动端API、多变的前端需求、需要聚合多个数据源的微服务网关。
gRPC基于契约的高性能RPC (Contract-Based High-Performance RPC)我们先用一份严格的合同(IDL)定义好一切,然后基于此进行高效、可靠的远程调用。基于强类型契约、高性能二进制传输 (HTTP/2)、支持流式通信。内部微服务间的高性能通信、对性能和类型安全要求高的场景。
并发模型多线程抢占式并发 (Preemptive Concurrency)你们(线程)都去抢占CPU,由操作系统来当裁判,但你们自己要处理好资源冲突。抢占式并发,能利用多核CPU,但需要开发者手动处理同步和锁。CPU密集型计算、需要真正并行处理的任务。
异步/协程协作式并发 (Cooperative Concurrency)我们(任务)都很自觉,谁有事要等,就主动让出位置,让能干活的人先上,高效协作。协作式并发,高效率处理I/O,避免了内核切换和锁的开销。I/O密集型应用,如Web服务器、网络爬虫、高并发API服务。
CI/CD 工具Jenkins插件化的极致灵活 (Plugin-Driven & Ultimate Flexibility)我给你一个强大的平台和无数的积木(插件),你可以随心所欲地搭建任何自动化流水线。极致的灵活性和可扩展性,拥有庞大的插件生态。复杂的、异构的、有特殊定制化需求的CI/CD流水线。
GitLab CI/CD一体化的约定优于配置 (Integrated & Convention over Configuration)既然你的代码已经在我这里,我就为你提供一套开箱即用、紧密集成的解决方案。与代码仓库、制品库等深度集成,遵循“约定优于配置”,易于上手。使用GitLab作为代码托管平台的团队,追求快速、一体化的DevOps体验。
测试方法单元测试隔离验证 (Isolated Verification)我只关心这个零件本身的功能是不是好的,不关心它和别的零件装在一起会怎么样。隔离验证,快速反馈,保证代码单元的质量。对代码中所有独立的函数、类、模块进行基础的功能验证。
集成测试协作验证 (Collaborative Verification)我关心的是把这几个零件组装起来后,它们之间能不能正确地配合工作。协作验证,确保模块间的接口和数据交互正确。测试服务与数据库、服务与服务之间的交互。
端到端测试用户场景模拟 (User Scenario Simulation)我将扮演一个真实的用户,把整个系统从头到尾走一遍,确保最终交付的产品没问题。用户场景模拟,验证完整的业务流程,提供最高级别的信心。验证核心用户流程,如注册、登录、下单、支付等。
http://www.xdnf.cn/news/1032985.html

相关文章:

  • 【Linux】Linux多路复用-epoll
  • MapReduce技术详解
  • 软件工程的相关名词解释
  • 【力扣 简单 C】141. 环形链表
  • Spring Data JPA全面指南
  • Docker 在尝试连接 Docker Hub 时遇到网络问题(超时)
  • 在Docker上部署datalust/Seq日志服务系统
  • 【DSP笔记 · 第5章】数字滤波器的蓝图:从数学公式到硬件实现的艺术
  • React--》使用vite构建器打造高效的React组件库
  • Docker 基础使用
  • TryHackMe (THM) - SOC基础知识
  • Android音视频流媒体基础总结
  • excel中添加进度条
  • 从大模型到 AI 应用,一共需要几步?
  • Git 工作流与版本管理策略
  • JVM(1)——运行时数据区
  • Hive SQL 执行计划详解:从查看方法到优化应用
  • 学习昇腾开发的第一天--环境配置
  • RabbitMQ的交换机和队列概念
  • 精益数据分析(104/126):免费移动应用的用户活跃率与付费转化优化策略
  • STM32F4通用定时器TIM9-TIM14讲解及PWM呼吸灯实例解读
  • 1 Studying《Arm A715 Software Optimization Guide》
  • 【Python-Day 26】解锁时间魔法:深入解析 time 与 datetime 模块
  • 双重特征c++
  • 共享项目中使用Wpf和Winform——c# CAD二次开发
  • 浏览器指纹-探究前端如何识别用户设备
  • 2.4.1 ASPICE的编码与单元测试
  • 新能源汽车电子架构革命:深度解析AUTOSAR标准与实践
  • 基于U-Net与可分离卷积的肺部分割技术详解
  • error:MISCONF Redis is configured to save RDB snapshots