分布式锁2024-架构师案例(一)

时间:2024-07-17 19:13:12

1、(2024年上半年真题)mysql实现分布式锁的缺点有哪些?(9分)

1)不能高并发:因为mysql数据库不能承担大并发量。

2)性能较差:mysql每次获取锁都要查询数据库,性能低。

3)单点故障:redis锁单点特性导致单点故障,mysql因为cap理论,为了数据一致性和分区容错率,牺牲高可用。

4)扩展性差:随着系统做大,单点无法满足系统业务需求,这时候扩展性差。

5)锁释放异常:如果进程意外崩掉,进程无法正常释放。

6)缺乏灵活性:相比于redis分布式锁,在功能上缺乏灵活性。

2、(2024年上半年真题)在大数据架构中,分别描述下栅格瓦片和矢量瓦片,使用场景,以及存储建议。(9分)

解析:

矢量瓦片:(高效处理,低延迟随机读取小文件)

描述:矢量瓦片通常由矢量数据组成,如JSON的类型的格式,存储的点、线、多边形等地理信息。

适应场景:适合HBase存储,因为HBase支持大量小文件的查询和存入,是面向列的数据库,JSON等文件很好的存在列中。

建议:使用HBase存储矢量瓦片,HBase的存入和随机读取非常契合JSON等文件,HBase提供了低延迟的随机读取,可以高效查询结构化和半结构化数据。

栅格瓦片:(大、顺序读取,高吞吐读取大文件)

描述:栅格瓦片存储像素组成的的是图形数据,通常用于地图和卫星等。

适用场景:适合HDFS(Hadoop Distributed File System)存储,因为HDFS支持顺序读取和存入大文件,而栅格瓦片数据都是比较大的。

建议:适用HDFS存储栅格瓦片,因为HDFS提供了高性能读写大文件,更好的扩展性。

3、(2024年上半年真题)MongoDB如何存储非结构化数据?存储矢量数据的优点?

解析:

存储非结构化数据:

1)文档存储:可以存入文档和数组,json数据都支持存储。

2)高性能:支持二级索引查询,查询效率高。

3)灵活性高:对于数据的结构变化可以灵活适配,字段可以新增或者修改。

4)高扩展能力:大业务需求量增大的时候,支持高水平扩展。

存储矢量数据的优点:

  1. 文档存储:可以存入文档和数组,简化了数据模型,可以把相关数据聚合在一个文档。
  2. 查询效率快:支持索引查询,聚合在一个文档查询效率更高。
  3. 高性能:mongoDB使用内存映射文件技术,能够将热数据加载到内存,提高读写性能。
  4. 易于扩展:业务需求量增加的时候,支持扩展,数据结构能更改。

4、(2024年上半年真题)热数据、冷数据的原因?(4分)

解析:

  1. 扩展性强:分层存储,更适合以后扩展。
  2. 性能高:将热数据放在SSD或者内存里,查询更快。
  3. 成本低:热数据放在SSD,不必吧所有数据放在SSD或者内存,减少成本。
  4. 安全性:冷数据放在磁盘等地方,少访问,但是数据持久化得到保障。

5、(2024年上半年真题)微服务的优点和缺点?(7分)

解析:

  1. 数据离散化管理:数据在不同的服务,缺少约束和数据字典的话,可能会导致不一致。
  2. 复用性更高:因为都是独立的服务,可复用性更高。
  3. 不再局限于语言:每个微服务可以采用不同的语言编写。
  4. 灵活性:按功能划分,独立部署,独立安装。
  5. 扩展性更高:每个服务都是独立的,更容易针对性扩展。

6、(2024年上半年真题)填写redis命令。(6分)

解析:

基于string:

get,set,strlen,append

基于list:

lpush、rpush、lpop、

Lrange mykey 0 2  :0开始2坐标结束的三个元素

、llen、linsert

基于hashMap:

Hset,hget,hdel,hlen、hexists

基于set:

sadd、

Scard:获取元素数量

Smembers 查看所有

Sismember是否存在

Smove移除

基于zset:

存入秒杀的分数命令:ZADD

获取分数范围的命令:ZRANGE

获取:ZSCORE