某企业是为城市高端用户提供高品质蔬菜生鲜服务的初创企业,创业初期为快速开展业务,

练习题库2022-08-02  89

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

选项

答案

解析 【问题1】
分布式数据库缓存指的是在高并发环境下,为了减轻数据库压力和提高系统响应时间,在数据库系统和应用系统之间增加的独立缓存系统。
(1)key/value,list,set,hash,sorted 或 丰富/多种数据结构
(2)不支持
(3)客户端哈希分片/一致性哈希
(4)不支持
(5)有,私有内存池
(6)不支持
【问题2】
(1)MemCache没有持久化功能,所以掉电数据会全部丢失,而且无法直接恢复,这存在可靠性问题。
(2)MemCache不支持事务,所以操作过程中可能产生数据的不一致性。
同步方案:
读取数据时,先读取Redis中的数据,如果Redis没有,则从原数据库中读取,并同步更新Redis中的数据。写回时,写入到原数据库中,并同步更新至Redis中。
【问题3】
Redis分布式存储的常见方案:
1、主从模式(Master/Slave)
2、哨兵模式(Sentinel)
3、集群模式(Cluster)
Redis集群切片的常见方式:
1、客户端分片,即在客户端就通过key的hash值对应到不同的服务器。
2、中间件实现分片。在应用软件和Redis中间,例如:Twemproxy、Codis等,由中间件实现服务到后台Redis节点的路由分派。
3、客户端服务端协作分片。RedisCluster模式,客户端可采用一致性哈希,服务端提供错误节点的重定向服务slot上。不同的slot对应到不同服务器。
转载请注明原文地址:https://tihaiku.com/congyezige/2397915.html

最新回复(0)