缓存架构设计关键因素分析.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

本文由简悦SimpRead转码,原文地址

你好,我是你的缓存老师欢迎进入第3“缓存的引入及架构设计”。

至此,缓存原理相关的主要知识点就讲完了,接下来会讲到如何引入缓存并进行设计架构,以及在缓存

设计架构中的一些关键考量点。

缓存的引入及架构设计

缓存组件选择

在设计架构缓存时,你首先要选定缓存组件,比如要用Local-Cache,还是Redis、Memcached、Pika

等开源缓存组件,如果业务缓存需求比较特殊,你还要考虑是直接定制开发一个新的缓存组件,还是对

开源缓存进行二次开发,来满足业务需要。

缓存数据结构设计

确定好缓存组件后,你还要根据业务的特点,进行缓存数据结构的设计。对于直接简单KV读写的

业务,你可以将这些业务数据封装为String、Json、ProtocolBuffer等格式,序列化成字节序列,然后

直接写入缓存中。时,先从缓存组件获取到数据的字节序列,再进行反序列化操作即可。对于只需

要存取部分字段或需要在缓存端进行计算的业务,你可以把数据设计为Hash、Set、List、Geo等结

构,到支持复杂集合数据类型的缓存中,如Redis、Pika等。

缓存分布设计

确定了缓存组件,设计好了缓存数据结构,接下来就要设计缓存的分布。可以从3个维度来进行缓存分布

设计。

1.首先,要选择分布式算法,是采用取模还是一致性Hash进行分布。取模分布的方案简单,每个

key只会存在确定的缓存节点,一致性Hash分布的方案相对复杂,一个key对应的缓存节点不确

定。但一致性Hash分布,可以在部分缓存节点异常时,将失效节点的数据均衡分散到其他正

常存活的节点,从而更好地保证了缓存系统的稳定性。

2.其次,分布读写如何进行实施,是由缓存Client直接进行Hash分布定位读写,还是通过

来进行读写路由?Client直接读写,读写性能最佳,但需要Client感知分布策略。在缓

存部署发生变化时,也需要及时所有缓存Client,避免读写异常,另外,Client实现也较

复杂。而通过路由,Client只需直接,分布逻辑及部署变更都由来处

理,对业务应用开发最友好,但业务多一跳,性能会有一定的损失。

3.最后,缓存系统运行过程中,如果待缓存的数据量增长过快,会导致大量缓存数据被剔除,缓存命

中率会下降,数据性能会随之降低,这样就需要将数据从缓存节点进行动态拆分,把部分数据

水平迁移到其他缓存节点。这个迁移过程需要考虑,是由进行迁移还是缓存Server自身进

行迁移,甚至根本就不支持迁移。对于Memcached,一般不支持迁移,对Redis,社区版本是依

靠缓存Server进行迁移,而对Codis则是通过Admin、配合后端缓存组件进行迁移。

缓存架构部署及运维管理

设计完毕缓存的分布策略后,接下来就要考虑缓存的架构部署及运维管理了。架构部署主要考虑如何对

缓存进行分池、分层、分IDC,以及是否需要进行异构处理。

1.的、高并发的不同数据,需要分别分拆到独立的缓存池中,进行分别,避免相互影

响;量较小、非的业务数据,则可以混存。

2.对海量数据、超过10~100万级的业务数据,要考虑分层,并且要分摊量,避免缓

存过载。

3.如果业务系统需要多IDC部署甚至异地多活,则需要对缓存体系也进行多IDC部署,要考虑如何

跨IDC对缓存数据进行更新,可以采用直接跨IDC读写,也可以采用DataBus配合队列机进行不

同IDC的消息同步,然后由消息处理机进行缓存更新,还可以由各个IDC的DBTrigger进行缓存

更新。

4.某些场景下,还需要把多种缓存组件进行组合使用,通过缓存异构达到最佳读写性能。

5.站在系统层

文档评论(0)

zhishifuwu + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档