- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
本文由简悦SimpRead转码,原文地址
在第05讲秒杀系统领域建模部分,我曾提到秒杀场次信息是聚合根,它聚合了秒杀商品信息和秒杀专
题信息。假如我们要从关系型数据库中提取场次详情,意味着需要三张表:活动专题表、活动场次
表、活动商品表。
这会出现什么问题呢?一旦遇到高并况,数据库就会承受很高的甚至。
那有没有办法解决这个问题,提高数据的高性能和高可用?有!那就是使用KV,这也是本讲
的。
什么是KV
KV是Key-Value的缩写,KV也叫键值对。简单来说,它是利用Key做索引来实现数据的存
储、修改、查询和删除功能。
常用的高性能KV主要有Redis、Memcached、etcd、Zookeeper等,其中Redis和
Memcached主要用来缓存业务数据,etcd和Zookeeper主要用来元数据。
业务数据比较好理解,就是业务系统业务逻辑处理的数据。比如我们要在API服务中将活动信息快速读
取出来,就需要用Redis做缓存,降低耗时,提升数据的吞吐能力。
那什么是元数据呢?在分布式系统中,元数据就是系统的基本信息,包括系统名称、服务名称、服务配
置、节点IP等。比如秒杀系统中,秒杀服务调用商品和的时候,就需要从服务
里获取这两个系统的元数据。
以上是对KV的基本介绍,一般在秒杀系统中,我们会利用Redis和etcd实现多级缓存和漏斗模型
中的部分功能,比如缓存活动信息、秒杀API服务节点信息、利用分布式锁和消息队列将请求串行
化等。
所以,接下来我就为你着重介绍下KV中Redis和etcd的高可用原理及其部署方法。
Redis高可用原理及部署方法
Redis的高可用原理
你可能会问了,既然Redis和Memcached都可以缓存业务数据,那为什么会选择Redis而不是
Memcached呢?
其实Memcached在性能上要稍微比Redis好,但在易用性和可用性上,Redis要大大超过
Memcached。
先说易用性。Redis有五种数据类型:list、set、string、hash、zset。这表示在使用Redis数据
的时候将会更灵活,能节省很多开发成本。而Memcached支持的数据类型比较简单,只有string,无
法满足复杂业务场景的需求。
另外,Redis还支持原子操作和事务,可以确保操作数据时的准确性,使用非常简单。比如在秒杀中扣
减和归还库存,就可以用Redis的原子操作和事务来保障库存数据的准确性。
在可用性方面呢,Redis支持Master-Slave模式的数据备份,而Memcached不支持;在故障转移方
面,Redis的可用性也比Memcached高。
还有,Memcached是纯内存的,后里面的信息就丢失了,而Redis则可以通过命令将内存中
的数据保存到磁盘上,让数据持久化。
换句话说,即使Redis节点因为宕机导致内存中的数据丢失,它也可以从磁盘恢复数据到内存,这就大大
降低了因宕机导致缓存的风险。应用到秒杀系统里就是,假如秒杀活动进行中,缓存活动信息的
Redis挂了,由于数据做了持久化,就避免了大量请求直接到DB。
那Redis是如何做到高可用的呢?
它主要通过支持主从模式、哨兵模式、集群模式这三种模式,来满足不同业务特点和可用等级的需求。
其中,主从模式部署最简单,用得也最多,集群模式比较复杂,但可用性最高。具体怎么部署呢?
Redis的部署方法
主从模式
主从模式比较简单,可部署多个节点,其中一个作为Master节点,剩下的作为Slave节点。它的示意
图如下:
在主从模式里,客户端同时连接Master节点和Slave节点,写操作通过Master节点执行,并将结果
同步给Slave节点,读操作通过Slave节点执行。假如Master节点挂了,不影响读操作,我们可以通
过手动修改配置将某个Slave节点提升为
原创力文档


文档评论(0)