案例分析题

试题四
阅读以下关于分布式数据库缓存设计的叙述,在答题纸上回答下列问题。

【说明】
某企业是为城市高端用户提供高品质蔬菜生鲜服务的初创企业,创业初期为快速开展业务,该企业采用轻量型的开发架构(脚本语言+关系型数据库)研制了一套业务系统。业务开展后受到用户普遍欢迎,用户数和业务数量迅速增长,原有的数据库服务器已不能满足高度并发的业务要求。为此,该企业成立了专门的研发团队来解决该问题。
张工建议重新开发整个系统, 采用新的服务器和数据架构,解决当前问题的同时为日后的扩展提供支持。但是,李工认为张工的方案开发周期过长,投入过大,当前应该在改动尽量小的前提下解决该问题。李工认为访问量很大的只是部分数据,建议采用缓存工具MemCache来减轻数据库服务器的压力,这样开发量小,开发周期短,比较适合初创公司,同时将来也可以通过集群进行扩展。然而,刘工又认为李工的方案中存在数据可靠性和一致性问题,在宕机时容易丢失交易数据,建议采用Redis来解决问题。在经过充分讨论,该公司最终决定采用刘工的方案。

问答题

在李工和刘工的方案中,均采用分布式数据库缓存技术来解决问题。请说明分布式数据库缓存的基本概念。
表4-1中对MemCache和Redis两种工具的优缺点进行了比较,请补充完善表 4-1中的空(1)~ (6)。

表4-1 MemCache与Redis能力比较

  Memcache Redis
数据类型 简单key/value结构 (1)
持久性 (2) 支持
分布式储存 (3) 多种方式,主从、Sentine、lCluster等
多线程支持 支持 (4)
内存管理 (5)
事务支持 (6) 有限支持
【正确答案】

分布式数据库缓存是在内存中管理数据并提供数据的一致性保障,采用数据复制技术实现高可用性,具有较优的扩展性与性能组合,这种数据存储机制,实现了更短的响应时间,同时极大的降低数据库的事务处理负载,极好地解决了大流量情况下数据库服务器和Web服务器质检的瓶颈。
(1) string、hash、set、sortedset、list
(2)不支持
(3)不支持
(4)不支持
(5)有
(6)不支持

【答案解析】
问答题

刘工认为李工的方案存在数据可靠性和一致性的问题,请说明原因。

为避免数据可靠性和一致性的问题,刘工的方案采用Redis作为数据库缓存,请说明基本的Redis与原有关系数据库的数据同步方案。

【正确答案】

Memcache不支持数据持久化操作,所以掉电数据会全部丢失,而且无法直接恢复,这存在可靠性问题
Memcache不支持事务,所以操作过程中可能产生数据的不一致性。

【答案解析】
问答题

请给出Redis分布式存储的2种常见方案和Redis集群切片的几种常见方式。

【正确答案】

Redis分布式存储的2种常见方案:redis主从方案、redis cluster方案。
Redis集群切片的几种常见方式:
客户端分片:在客户端通过key的hash值对应不同服务器。
对数据根据key散列到不同的slot上,不同slot对应不同的服务器。

【答案解析】