`
iamzhongyong
  • 浏览: 805581 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

分布式缓存中多机房分布策略

阅读更多

​       目前的互联网架构中,缓存已经成了一个不可或缺的部分,可以将没有了缓存,很多事情玩不转了,目前开源中用的比较多的例如memcached,也有公司自己研发缓存系统的,例如淘宝已经开源的tair,当缓存的服务器数量增加或者本身就需要多机房容灾的时候,数据在多机房情况下如何分配,就成了一个问题,这篇文章就对这个问题展开讨论。

       对于分布式缓存来讲,由一个集群机器组成,这些机器有个特点,就是内存很牛逼,没办法,做缓存就是要放在内存里的吗,不过也有内存服务器的硬板来缓冲的,把内存文件dump到硬盘,用于机器断电等情况。虽然由一个集群(也就是多台机器)组成,但是对于应用系统来讲,他们就是一个机器,一个提供缓存的机器。

       应用系统在请求缓存的时候,可能只需要简单的通过缓存机器的列表,然后发送请求即可,缓冲机器自动去hash等操作,这些对于应用系统而言是透明的。

       目前有哪些分布策略呢?简单列举几个,有些是在工作中遇见的,有些是自己YY的,但是也基本靠谱。

    ​    ​机器分布在单个机房,单份数据

    ​    ​优点貌似只有方便管理了,物理机器就在一个机房,如果应用机器在多个机器,那就有可能存在跨机房调用了。如果这个放机器的机房出现问题,那机房本身是没有办法容灾的。

    ​    ​机器分布多个机房,一份数据,对外部而言,就是一个集群

    ​    ​这种的分布,机器可能对等的分布在多个机房,存储一份数据,虽然物理的部署上是分开的,但是在逻辑上,外部就是认为他是一个集群,如果应用系统也同样分布在多个机房,那就会存在跨机房调用的情况,扩机房有啥问题?不同机房的调用网络延迟会比较大。但是一般机房之间的调用是很快的。这样部署非常适合缓存类的数据,且对于跨机房调用没有那么敏感的情况下。这种情况下,如果一个机房down机了,那这个机器对应的数据会丢失,但是问题不大,因为是缓存数据,可以继续从持久化的系统里面去加载进来。由于是单份数据,也就没有一致性的问题了。

    ​    ​机器分布在多个机房,一个机房一份数据,对外部而言,每个机房就相当于一个独立的集群

    ​    ​这种分布,有个最大的好处,就是应用服务器和缓存机器如果在同一个机房,那网络延迟会很小的,机房的调用策略可以配置,就是例如应用服务器所在的机房仅仅能够调用这个机房的缓存机器。但是由于各个机房的数据时独立的,也就是独立集群,数据一致性存在问题,如果应用系统更新数据,是需要同步更新到各个集群的,这个时候,各个独立集群数据一致如何保证呢?目前已知的解决办法是增加一个独立的集群(暂且叫做A-Server)去做这个事情,更新的请求发送到这里,这个集群负责同步数据到各个数据集群,从而来保证一致性。

    ​    ​两个机房,互为主备,两份数据,经典的主备模式

    ​    ​主备模式是大家常常见到得了,正常情况下主集群来提供服务,主集群搞一个异步的线程来同步数据到备集群,当主集群挂掉的情况下,应用系统自动切换请求道备集群。这种是能够保证数据一致性的,目前很多DB也是采用这样。最常见的就是mysql的master-slaver模式,如果读写请求的比例差距很大的事情,例如读请求很大,可以增加多台slaver来挡一些读的请求。这种模式下,数据的安全性会比较高。

    ​    ​机器分布在多个机房,多份数据,对外部而言,整体就是一个集群

    ​    ​一个集群内的数据时一份,但是多个集群就多份数据,整体对外部就是一个集群,而非一个一个的独立集群,这样有个好处就是可以让应用服务器选择本地机房优先的策略来做事情。

    ​    ​当然在实际的处理中,可能还有有,如何选择呢?根据业务场景去选择,这年头还是场景为王的年代啊,不能生搬硬套。

 

 

 

 

1
0
分享到:
评论

相关推荐

    大数据技术分享 多IDC的数据分布 MySQL多机房部署 共19页.pdf

    标题和描述中提到的是关于大数据技术在多IDC(数据中心)环境下的数据分布以及MySQL的多机房部署策略。在处理大数据时,特别是在多个IDC之间进行数据分发和存储,确保数据一致性、高可用性和容灾能力是关键挑战。...

    陈吉平:高可用分布式数据库系统架构实践

    在技术的持续发展过程中,淘宝网引入了分布式存储和分布式缓存技术。分布式存储(TFS)用于解决海量非结构化数据的存储问题,而分布式缓存(Tair)则采用了PC Server作为存储媒介,解决了缓存性能的问题。 在高可用...

    美团技术沙龙04 - 美团下一代分布式存储系统.1c499490-4fe8-11e6-a7f8-6561741675a1.pdf

    Name表和ID表分离,实现元数据分布式缓存,支持Bucket和Object的多版本管理,去重与引用计数机制有效节省空间,Sharding表设计优化了数据分布,EC(Erasure Coding)与碎片整理结合,SchedServer的选主策略确保了...

    亿级用户下的新浪微博平台架构

    - 为了提高用户体验,微博平台采用多级缓存策略,如本地缓存、内存缓存和分布式缓存。 - 双机房部署可以提高服务的可用性和容灾能力,当一个机房出现问题时,另一个机房仍能提供服务。 - 缓存一致性:通过一致性...

    Java思维导图xmind文件+导出图片

    缓存击穿、缓存雪崩预防策略 Redis批量查询优化 Redis高性能集群之Twemproxy of Redis 数据存储 MongoDB NOSQL简介及MongoDB支持的数据类型分析 MongoDB可视化客户端及JavaApi实践 手写基于MongoDB的ORM框架...

    SNS网站架构PPT文档.pptx

    拓扑结构的选择也至关重要,单机房、多机房、双线布局等方案各有优劣,需要根据地理位置、网络环境和用户分布来决定。分层和数据流的设计确保了请求和响应的有效处理,同时,分布性的考虑包括服务、数据存储(如...

    Cobar的架构与实践

    这种设计允许单点数据库的数据分布到多台廉价的PC服务器上,从而减轻了单点Oracle数据库的压力。 Cobar的架构最初以Amoeba的形式出现,作为一个独立的进程运行,充当应用与数据库之间的代理。应用通过标准的MySQL...

    2009系统架构师大会PPT:曹世军:网络游戏基础系统架构与监控策略

    通常部署在高可靠性的多线机房中,以确保安全性和可用性。 - **游戏服务器组**:包括接入服务器、逻辑运算服务器、游戏数据库、日志服务器等组成部分,主要处理游戏的核心逻辑与数据处理。为降低网络延时,这些...

    阿里技术嘉年华

    在分布式系统中,尤其是涉及到缓存的应用场景中,必须确保内存使用量处于可控范围之内。为了避免内存溢出导致的系统崩溃,可以通过以下措施进行控制: - 对内存中的数据结构(如`Map`、`List`等)进行严格的容量...

    03-Samual.Just-recovery_erasure_coding_cache_tiering.pdf

    CRUSH确保了数据在物理设备上的均匀分布,并且考虑到硬件故障的可能性,能够避免将数据放置在同一机架或同一机房内的多个副本。 - **Placement Groups (PGs)**: PG是RADOS中最小的数据管理单元,每个对象都会被分配...

    云计算时代的运维与安全.docx

    - **高可靠性**:采用多机房冗余策略提高数据安全性。 - **丰富功能**:支持图像处理等功能,提升用户体验。 - **广域网问题**:面对质量参差不齐的网络基础设施,提供高可用服务。 - **机房网络挑战**:应对...

    xiaofanwei - 副本.docx

    【分布式资源监控系统设计与实现】的文档主要讨论了一个企业内部资源分布的监控系统,它采用了消息中间件作为关键组件来解决资产管理的问题。系统设计的目标是可扩展、高可用、高吞吐量、具备故障容忍能力,且确保...

    滴滴NOSQL之Fusion的演进之路

    跨机房多活是Fusion针对地理分布与容灾需求的另一个演进方向。分布式系统天然具有高可用性,Fusion通过多活设计,确保了当一个数据中心发生故障时,系统仍能够继续运行,保证业务的连续性。这不仅涉及数据的多副本...

    Redis的改造与实践

    - **异地跨机房部署策略**:对于跨机房部署,建议适当加大主从同步Buffer,并采用异步多写策略来降低延迟影响。 通过对Redis的深度改造与实践,Nice团队不仅解决了原有集群面临的挑战,还成功地构建了一个高效、...

    阿里巴巴中间件技术详解

    2. **分布式表格系统**:将大表拆分成数以万计乃至更多的小表,这些小表按主键顺序分布在不同的服务器上。虽然这种方法提高了可扩展性,但通常难以支持复杂的事务处理。为了解决这个问题,OceanBase 采用了一种特殊...

    LSI 8708E RAID卡创建raid5教程

    5. **设置卷属性**: 可以选择命名卷,设置读写策略(如直通或缓存),以及选择是否启用热备盘。 6. **确认并创建**: 仔细检查配置信息,确认无误后点击“创建”或“应用”以开始构建RAID 5阵列。 创建过程完成后,...

Global site tag (gtag.js) - Google Analytics