首页 > 数据库 >纯配时效服务-双Redis集群设计

纯配时效服务-双Redis集群设计

时间:2024-12-30 13:55:31浏览次数:1  
标签:纯配 读取 时效 Redis 重试 机房 集群 数据

作者:京东物流 王运成

一、概述

纯配时效服务作为物流下单环节中计算时效的重要组成部分,直接决定了下单的成功与否。其性能与稳定性至关重要,因为它们直接影响整个物流下单系统的运行效率及客户满意度。一个高效且稳定的纯配时效服务能够确保预计送达时间准确无误地展示给用户,从而提升客户体验和信任度。反之,若纯配时效服务出现故障或延迟,可能会导致订单处理延误,甚至影响客户的业务运营。因此,在设计和维护纯配时效服务时,必须确保其具备高可靠性和快速响应能力,以应对各种突发情况,确保物流链条的顺畅运行。

二、Redis集群模式

为了确保系统的高性能运行,我们摒弃了原先直接从数据库读取数据的模式。取而代之的是,我们将所有数据同步至Redis中,从而使得应用层能够直接从Redis中获取所需数据。这一改进不仅显著提升了数据读取速度,还有效减轻了数据库的负担,使整个系统更加稳定和高效。通过这种方式,我们能够更好地应对高并发访问,确保用户在使用过程中获得流畅的体验。此外,Redis的内存存储特性进一步提升了数据读取速度,增强了系统的响应能力。

纯配核心数据读取示意图

 

 

 

三、双Redis集群设计

为了满足容灾需求,应用层采用了有孚和中云信的双机房模式。此种模式确保在一个机房发生故障时,另一个机房能够迅速接管业务,从而保障服务的连续性和稳定性。同样地,为了确保数据的一致性和高可用性,Redis亦需设计为双集群模式。通过在有孚和中云信两地部署Redis集群,可以有效分散风险,即使其中一个集群出现故障,另一个集群仍能正常运行,从而保证系统的整体性能和可靠性。此外,双集群模式还有助于减少正常情况下的跨机房问题,对提升性能亦有裨益。另外还需通过数据同步机制,确保两个集群之间的数据一致性,进一步增强系统的容灾能力和数据安全性。

双Redis集群设计示意图

 

四、双集群设计应对场景

由整体架构设计来说,应用程序依据Redis的数据分离为读写两个部分:JSF接口应用负责数据读取,而数据同步应用则负责数据写入。读写操作分别由这两部分独立控制。

1.JSF接口应用读取场景设计

1)同机房数据访问控制

Redis数据读取层 -> 同机房选择 (有孚机房访问有孚机房Redis集群、中云信机房访问中云信Redis集群)

2)数据访问故障重试控制

Redis数据读取层 -> 同机房选择 -> 数据故障重试(当数据访问失败,自动进行重试,或换机房访问)

3)DUCC人为控制

Redis数据读取层 -> 同机房选择 -> 数据故障重试 -> DUCC控制(通过DUCC由开发人员强制控制集群选择,应对应急故障处理)

2.数据同步应用写入场景设计

1)多场景数据加载设计

全量数据 (确保数据加载完整性)

增量数据(确保数据加载及时性)

指定数据(应对异常数据丢失,快速同步)

2)数据双写控制

Redis数据写入层 -> redis双写控制(对带写入数据进行双redis集群数据同步)

3)数据写入异常处理控制

Redis数据写入层 -> redis双写控制 -> 异常重试监控(对写入失败数据进行重试、排除偶然网络故障导致的失败,如果Redis集群故障,监控报警通知研发人员介入处理)

4)DUCC人为控制

Redis数据写入层 -> -> redis双写控制 -> 异常重试监控 -> DUCC控制(通过DUCC由开发人员强制控制集群选择,应对应急故障处理)

五、具体场景举例

1.当中云信机房偶发短时网络故障

1)JSF接口应用 -> Redis数据读取层 -> 同机房选择 -> 数据故障重试 进行数据重试读取(同机房重试或跨机房重试)数据及时读取

2)数据同步应用 -> Redis数据写入层 -> redis双写控制 -> 异常重试监控 进行数据写入重试,数据正常写入 (Redis双集群 数据一致性不受影响)

2.当中云信机房长时网络或服务故障
1)JSF接口应用 -> Redis数据读取层 -> 同机房选择 -> 数据故障重试 进行数据重试读取(同机房重试或跨机房重试)-> DUCC控制层(强制指定为单读 有孚Redis集群)

2)数据同步应用 -> Redis数据写入层 -> redis双写控制 -> 异常重试监控 (反复重试失败报警通知 研发介入)-> DUCC控制层 (强制指定为单写 有孚Redis集群)

3)中云信Redis集群故障恢复

4)数据同步应用 -> DUCC控制(恢复双集群写入) -> 触发 全量数据 同步 -> 执行完成

5)JSF接口应用 -> DUCC控制(恢复双集群读取)

附录

数据同步简介

纯配时效基础数据的设计采用了软删除机制,这是一种更为灵活和安全的数据管理方式。具体来说,当数据被标记为删除时,实际上只是进行了逻辑上的删除,而不是直接从数据库中物理删除。这种设计的好处在于,如果在删除操作后发现误删或需要恢复数据,可以及时找回,避免了数据的永久丢失。逻辑删除后的数据将在15天后进行物理删除,也就是所谓的结转。这15天的缓冲期为数据恢复提供了充足的时间窗口,同时也确保了系统的数据清理工作能够有序进行。通过这种方式,系统能够在保证数据安全性和完整性的同时,有效地管理数据生命周期。

数据同步设计示意图

标签:纯配,读取,时效,Redis,重试,机房,集群,数据
From: https://www.cnblogs.com/Jcloud/p/18640851

相关文章

  • nuxt 添加 redis 缓存
    这个文章的主要目的是通过redis缓存nuxt2中服务端渲染的页面。从而优化加载速度以及减轻服务端的压力。Nuxt是什么Nuxt.js是一个基于Vue.js的开源框架,旨在为开发者提供一个简单的方式来构建高性能的Vue应用。它提供了许多功能,使得开发服务器端渲染(SSR)、静态站点生成......
  • 记录:wsl2 安装 CentOS8-stream 安装docker 安装redis-cluster集群 一些步骤及问题
     一。解压  下载的CentOS8-stream.zip压缩包,双击安装   (下载地址记录:wsl2安装centOS7一些问题解决并使用shell工具连接)  二。修改root密码 (安装后直接进入root 不知道密码所以修改)  直接passwd即可修改   三。yumli......
  • redis-2(集群模式)
    主从模式(master-slave)实战规划图实际配置1,克隆主机,以redis1为基础,克隆出redis2和32,配置IP和主机名称,重启,使用xshell链接vi/etc/sysconfig/network-scripts/ifcfg-ens33:1521->22vi/etc/hostname:1redis2reboot重启使用xshell或者finalShell链接......
  • redis-3
    缓存流程图缓存实战准备工作复制项目,修改名称引入jar包<!--springboot整合redisjar开始--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><depende......
  • redis-1
    nosqlcpu,内存和磁盘的关系nosql简介NoSQL(notonlysql),泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在处理web2.0网站,特别是超大规模(京东,淘宝,天猫.......)和高并发的SNS(社交平台)类型的web2.0纯动态网站已经显得力不从心(基于磁盘存储),出现了很多难以克服......
  • 2024-12-25《linux上安装redis报错》
     在linux上安装redis时,首先要安装c/c++编译器,然后安装redis,不然redis跑不了,安装时报错:cdsrc&&makeallmake[1]:Enteringdirectory'/opt/redis-7.0.0/src'CCMakefile.depCCserver.oInfileincludedfromserver.c:30:server.h:57:10:fatalerror:systemd......
  • 腾讯音乐:说说Redis脑裂问题?
    Redis脑裂问题是指,在Redis哨兵模式或集群模式中,由于网络原因,导致主节点(Master)与哨兵(Sentinel)和从节点(Slave)的通讯中断,此时哨兵就会误以为主节点已宕机,就会在从节点中选举出一个新的主节点,此时Redis的集群中就出现了两个主节点的问题,就是Redis脑裂问题。脑裂问题影响......
  • linux中,redis哨兵和数据持久化存储
    redis哨兵:"主从同步增强架构","读写分离","高可用" 1.概念 是Redis主从同步的增强架构,可以实现Redis主从同步的读写分离和高可用 2.特性: 1、可以承接客户端连接,但不存储数据 2、实现Redis主从复制组的监控 3、实现Redis主从的读写分离 4、Redis主从复制组的故......
  • Redis-十大数据类型
    Reids数据类型指的是value的类型,key都是字符串redis-server:启动redis服务redis-cli:进入redis交互式终端常用的key的操作redis的命令和参数不区分大小写,key和value区分1、查看当前库所有的keykeys*2、判断某个key是否存在existskey3、查看key是什么类型......
  • Redis可视化工具推荐:Another Redis Desktop Manager使用教程与下载
    Redis是一种高性能的Key-Value数据库,被广泛应用于缓存、消息队列等场景。尽管Redis的命令行工具功能强大,但对于许多开发者而言,使用一款可视化工具可以大大提高操作效率和用户体验。今天为大家推荐一款功能强大的Redis可视化工具——AnotherRedisDesktopManager,并提供资源......