系统架构小课堂第5课真题一

第一题,第一问什么是微服务,优缺点。

第二问,填质量效用树,

第三问质量场景属性分析可用性

第二题,好像是嵌入式,一问some/ip协议概念特点二问填一个some和dds的调用流程图,三问让你补全一个流程图,有地图,预测,控制,定位,用户界面等把流程中的依赖关系填进去

第三题nosql,主要考mongodb 一问怎么存非结构数据,优点,二问补全一些数据库图,

第四题redis分布式锁,分布式锁优点缺点 第五题考时序图

解:

第一题:

  1. 微服务是什么? 微服务是一种软件架构风格,它将一个大型应用程序分解为一组小的、独立部署的服务。每个服务运行在自己的进程中,负责处理特定的业务功能,并通过轻量级的通信机制(通常是HTTP/REST或消息队列)进行通信。

    优点:

    • 独立部署:每个微服务可以独立开发、测试、部署和扩展,不影响其他服务。
    • 技术多样性:不同的微服务可以使用不同的技术栈开发,选择最适合该服务的技术。
    • 故障隔离:单个服务的故障不会导致整个系统的崩溃。
    • 团队独立性:允许不同的开发团队各自负责不同的服务,提升开发效率。

    缺点:

    • 复杂性增加:服务之间的通信、部署和管理变得复杂。
    • 数据一致性挑战:不同服务可能需要处理不同的数据库,分布式系统下的一致性维护更为困难。
    • 网络开销:服务之间的网络通信可能会增加延迟和带宽消耗。
  2. 质量效用树: 质量效用树通常用于表示软件系统的质量需求,它通过一棵树形结构来展示不同的质量属性及其子属性。常见的质量属性包括性能、可用性、可扩展性、可维护性、安全性等。需要根据具体系统的需求将这些属性及其子属性进行填充和分析。

  3. 质量场景属性分析可用性: 在分析系统的可用性时,需要从以下方面考虑:

    • 可恢复性:系统在出现故障后的恢复能力,如故障恢复时间(RTO)。
    • 容错性:系统处理错误的能力,确保在部分组件出现故障时,系统仍能继续运行。
    • 冗余设计:通过冗余的硬件或软件设计,提升系统的高可用性。
    • 监控与警报:通过监控系统关键指标,及时发现和响应问题,避免系统宕机。

第二题:

  1. SOME/IP协议的概念和特点: SOME/IP(Scalable service-Oriented MiddlewarE over IP)是一种用于汽车网络中的通信协议,专门为车载应用设计,支持基于服务的通信模式。它允许不同的车载电子控制单元(ECU)之间通过IP网络进行通信。

    特点:

    • 服务发现:支持服务动态发现和配置。
    • 可扩展性:可以根据需要进行扩展,适应不同的车辆系统需求。
    • 高效的消息传递:通过压缩和分段技术,确保在低带宽网络中也能高效传输。
  2. SOME和DDS调用流程图: SOME/IP和DDS(Data Distribution Service)都是用于不同场景的通信协议。SOME/IP偏向于基于服务的汽车网络通信,而DDS则是用于实时系统的数据分发协议。调用流程图需要展示服务发现、发布/订阅模式、请求/响应等典型交互过程。

  3. 嵌入式系统流程图补全

    • 地图:提供位置信息。
    • 预测:根据地图和传感器数据预测车辆的路径和行为。
    • 控制:根据预测结果生成控制命令。
    • 定位:通过传感器数据确定车辆的当前位置。
    • 用户界面:提供给用户实时信息展示,交互命令。

    流程中的依赖关系可能是:用户界面依赖于定位、预测;控制依赖于预测和定位;地图作为基础数据输入。

第三题:

  1. 如何在MongoDB中存储非结构化数据,优点是什么? MongoDB是一个NoSQL数据库,它允许存储非结构化数据。MongoDB使用BSON格式(类似于JSON)来存储数据,每个文档可以有不同的字段和数据结构。

    优点:

    • 灵活的数据模型:无需固定的表结构,数据模型可以根据需要动态扩展。
    • 高可扩展性:通过分片技术支持大规模的数据扩展。
    • 快速的查询性能:适合处理大量文档并支持丰富的查询功能。
  2. 补全数据库图: 补全图形可能涉及到不同集合之间的关系,例如存储用户信息、商品信息、订单信息等集合的关系图。

第四题:

  1. Redis分布式锁的优缺点: Redis分布式锁是一种利用Redis的原子操作实现的分布式锁机制。可以通过SETNX命令或RedLock算法来实现分布式锁。

    优点:

    • 高性能:由于Redis的高效性能,分布式锁的获取和释放操作非常快速。
    • 简单实现:Redis的命令简单易用,实现分布式锁较为容易。

    缺点:

    • 可靠性问题:在网络分区或Redis节点故障时,锁的可靠性可能受到影响。
    • 锁的过期时间问题:如果锁的过期时间设置不合理,可能会导致锁提前释放或长时间不释放。

第五题:

时序图考察: 时序图通常用于表示系统中不同组件之间的交互顺序。在回答时,可能需要补全时序图中不同对象的消息发送和接收的顺序,明确各个对象之间的依赖关系以及时间顺序。

 

 

补充:

NoSQL 是 “Not Only SQL” 的缩写,它指的是一类不使用传统关系型数据库(如MySQL、Oracle等)的数据库系统。这类数据库通常不采用固定的表格结构来存储数据,而是提供了更灵活的数据模型来处理非结构化或半结构化的数据。常见的NoSQL数据库类型包括:

  • 键值存储:如Redis、DynamoDB。
  • 文档存储:如MongoDB、CouchDB。
  • 列存储:如HBase、Cassandra。
  • 图数据库:如Neo4j、JanusGraph。

NoSQL数据库的特点包括:

  • 高扩展性:支持水平扩展,能处理大规模的数据和高并发。
  • 灵活的数据模型:支持不同的数据结构,如键值对、文档、列族和图等。
  • 高性能:适合处理大量的读写请求,特别是大数据场景。

结构化数据 是指遵循固定格式和模型的数据,通常存储在关系型数据库中,使用表格、列和行的形式组织。每个数据都有明确的字段定义,比如姓名、年龄、地址等。

结构化数据的特点

  • 预定义的模式:数据存储之前需要定义好表结构,字段类型等。
  • 可被SQL查询语言轻松访问:通过SQL查询进行复杂的筛选、排序和关联操作。
  • 易于分析和组织:由于结构化数据格式统一,数据处理、存储和分析较为方便。

例子:在关系型数据库中,员工的记录可以存储为一张表,列如”姓名”、”工号”、”部门”、”工资”等,每一行代表一个员工的信息。

相对于结构化数据,非结构化数据是指没有固定格式的数据,例如图片、视频、日志文件、邮件内容等,通常需要NoSQL数据库等灵活的存储方式进行处理。