系统架构师笔记

6/7/2024 考试
(adsbygoogle = window.adsbygoogle || []).push({});

# 1. 前言

计划: 和软件设计师知识点很大不同,需要准备下

# 选择

DSP是专门用于实时的数字信号处理的处理器 采用哈佛架构

# 下午题

# 反规范化设计

# 增加冗余列

在多个表中增加相同的常用列,可用来在查询时避免连接操作。

# 增加派生列

把可由通过表中其他数据计算生成的列作为固定的列插入到表中,它的作用是在查询时减少计算量,从而加快查询速度。

# 重新组表

如果许多用户需要查看两个表连接出来的结果数据,则把这两个表重新组成一个表来减少连接从而提高性能。

# 分割表

有水平分割、垂直分割两种,水平分割把表按记录进行分割,把数据放到多个独立的表中,主要用于表数据规模很大、表中数据相对独立或数据需要存放到多个介质上时使用; 垂直分割表对表按照列进行分割,通常将主键与部分列放到一个表中,主键和其他列放到另一个表中,在查询时减少I/O次数。

# 数据不一致

# 批处理维护

通过定期运行批处理作业后者存储过程对数据进行修改,适用于实时性哟啊求不高的情况。

# 应用逻辑

在同一事务中对所有涉及的表进行增、删、改操作,同一逻辑必须在所有的应用中使用和维护,缺点是容易遗漏,特别是在需求变化时,不易于维护。

# 触发器

对数据的任何修改立即触发对数据库的某些列的相应修改,实时性号,也易于维护。

# Redis

# 数据类型

String是基本类型,可用于缓存层或计数器,如视频播放量、文章浏览量等。 Hash类型是一种特殊的String类型,更节省空间,描述用户信息较为方便。 Set是无序集合类型,每个值不能重复,可用于去重、抽奖、初始化用户池等。 List是双向链表结构,可以模拟栈、队列等形式,可用于回复评论、点赞。 ZSet是有序集合类型,每个元素有一个分数,可用于首页推荐10个最热门的帖子等功能。

# 数据同步

  1. 引用MySQL事务,因为事务有一致性保证,事务提交成功后再更新缓存;
  2. 在缓存里面引用一些访问控制位,数据库数据变化后,同步变更对应的访问控制位,然后从缓存查询时,率先判断该访问控制位,有变化就从数据库查,无变化直接从缓存返回数据
  3. 通过数据库中间件产品保证缓存和数据库数据的实时同步。

# RDB和AOF

  1. RDB更新频率低
  2. AOF可以保证数据不丢失,更安全
  3. RDB间隔一段时间存储,可能发生数据丢失和不一致。
  4. RDB文件小

# 反规范化设计

# 增加冗余列

在多个表中增加相同的常用列,可用来在查询时避免连接操作。

# 增加派生列

把可由通过表中其他数据计算生成的列作为固定的列插入到表中,它的作用是在查询时减少计算量,从而加快查询速度。

# 重新组表

如果许多用户需要查看两个表连接出来的结果数据,则把这两个表重新组成一个表来减少连接从而提高性能。

# 分割表

有水平分割、垂直分割两种,水平分割把表按记录进行分割,把数据放到多个独立的表中,主要用于表数据规模很大、表中数据相对独立或数据需要存放到多个介质上时使用; 垂直分割表对表按照列进行分割,通常将主键与部分列放到一个表中,主键和其他列放到另一个表中,在查询时减少I/O次数。

# 数据不一致

# 批处理维护

通过定期运行批处理作业后者存储过程对数据进行修改,适用于实时性哟啊求不高的情况。

# 应用逻辑

在同一事务中对所有涉及的表进行增、删、改操作,同一逻辑必须在所有的应用中使用和维护,缺点是容易遗漏,特别是在需求变化时,不易于维护。

# 触发器

对数据的任何修改立即触发对数据库的某些列的相应修改,实时性号,也易于维护。

# Redis

# 数据类型

String是基本类型,可用于缓存层或计数器,如视频播放量、文章浏览量等。 Hash类型是一种特殊的String类型,更节省空间,描述用户信息较为方便。 Set是无序集合类型,每个值不能重复,可用于去重、抽奖、初始化用户池等。 List是双向链表结构,可以模拟栈、队列等形式,可用于回复评论、点赞。 ZSet是有序集合类型,每个元素有一个分数,可用于首页推荐10个最热门的帖子等功能。

# 数据同步

  1. 引用MySQL事务,因为事务有一致性保证,事务提交成功后再更新缓存;
  2. 在缓存里面引用一些访问控制位,数据库数据变化后,同步变更对应的访问控制位,然后从缓存查询时,率先判断该访问控制位,有变化就从数据库查,无变化直接从缓存返回数据
  3. 通过数据库中间件产品保证缓存和数据库数据的实时同步。

# RDB和AOF

  1. RDB更新频率低
  2. AOF可以保证数据不丢失,更安全
  3. RDB间隔一段时间存储,可能发生数据丢失和不一致。
  4. RDB文件小

# 质量属性效用树(Utility Tree)

性能 安全性 可用性 可修改性

# 可用性

心跳、ping/Echo、冗余、进程监视器

# 可修改性

抽象、信息隐藏、限制通信路径、

# 主从复制

# 过程

当在从库上启用复制时,首先创建I/O线程连接主库,主库随后创建Binlog Dump线程读取数据库事件并发送给I/O线程,I/O线程获取到事件数据后更新到从库的中继日志Retry Log中去,之后从库上的SQL线程读取中继日志Retry Log中更新的数据库事件并应用。

我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=38dpnhkh4o8wo