当前位置: 首页 > 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)我将扮演一个真实的用户,把整个系统从头到尾走一遍,确保最终交付的产品没问题。用户场景模拟,验证完整的业务流程,提供最高级别的信心。验证核心用户流程,如注册、登录、下单、支付等。

相关文章:

  • 代码随想录12|翻转单词|右旋字符串|实现strStr()|重复的子字符串
  • SCAU大数据技术原理雨课堂测验1
  • 深度解析SpringBoot自动化部署实战:从原理到最佳实践
  • TerraFE 脚手架开发实战系列(一):项目架构设计与技术选型
  • uni-app项目实战笔记12--创建分类列表完成页面跳转
  • TypeScript 类
  • 大IPD之——华为的管理变革与战略转型之道(三)
  • c++第8天--虚继承与多态
  • 使用C/C++的OpenCV 构建人脸识别并自动抓拍系统
  • 【DSP笔记 · 第3章】数字世界的“棱镜”:离散傅里叶变换(DFT)完全解析
  • AtCoder AT_abc410_e [ABC410E] Battles in a Row 题解
  • Hoppscotch
  • 解决在微信小程序中view组件下的text和images设置了样式display: flex; align-items: center;对不齐
  • 位运,模拟,分治,BFS,栈和哈希表
  • 基于 C 语言的图书管理系统开发详解​
  • 人工智能学习14-Numpy-数组广播机制
  • 前端异步编程基础
  • pythonday46
  • HTML+CSS 动态背景动态登录注册框
  • 模拟 AJAX 提交 form 表单及请求头设置详解
  • 重庆做网站优化推广的公司/站长seo软件
  • 如何做亚马逊国外网站/江西百度推广开户多少钱
  • 怎么弄免费的php空间做网站/河北网站seo
  • 地方网站做相亲赢利点在哪/深圳网站开发制作
  • 兼职网站做任务/网络营销师报名入口
  • 嘉兴网站制作公司/网站建设公司网站