虹科干货 | 虹科Redis企业版数据库的延迟如此之小,proxy功不可没!

news2024/10/7 12:25:39

在Redis企业版集群的后台发生了许多事件,proxy(代理)隐藏了数据库客户端的所有活动。

大多数开发人员在构建应用程序时都会从小规模开始,使用简单的Redis开源(Redis OSS)数据库。在初期阶段,使用数据库非常直接,只需连接到单一的端点并发送请求。
然而,当Redis应用程序的需求变得更加复杂时,例如扩展和高可用性,挑战就开始了。开发人员可以使用Redis OSS Cluster和Redis Sentinel来实现这些目标。但是这需要开发人员维护数据库拓扑结构并处理扩展的实际问题。换句话说,他们必须编写更多的代码,而在企业级环境中,代码可能会迅速变得更加复杂。

虹科Redis企业版数据库软件(简称虹科Redis企业版)通过消除这些复杂性问题来解决这个挑战。无论是从企业级环境开始还是从Redis OSS迁移而来,Redis企业版数据库的设计都在大规模环境下表现得很出色,同时能够保持应用程序对数据库的简单使用。

本文介绍了Redis企业版代理,并展示了该代理在常见Redis集群场景中如何减轻拓扑结构变化的影响。在文章最后,我们还会分享证明代理效率的基准数据。

虹科Redis企业版软件(Redis Enterprise)是企业级的数据库软件,也是一款实时数据平台,为全球超过8500家知名企业提供实时数据服务。具有线性可扩展性、高可用性、持久性、备份和恢复、地理分布、分层内存访问、多租户、安全性等8大核心功能、拥有RediSearch、RedisJSON等7大【Redis企业版特有模块】,可以任何规模在云、本地和混合部署中运行现代应用程序,提供无服务器、多模型的数据库解决方案。Redis企业版的核心优势是采用Redis on flash分层存储技术即【内存+闪存+磁盘】的存储方式,其Active-Active地理分布式架构允许跨地理位置同时进行数据读写操作、拥有亚毫秒延迟和极高吞吐量。

什么是虹科Redis企业版Proxy?

虹科Redis企业版Proxy(代理)是一个几乎无延迟的实体,它在应用程序和数据库之间进行调解。它向数据库客户端公开数据库端点,同时屏蔽Redis企业版集群执行的后台活动。这使开发人员可以专注于应用程序如何使用数据,而不用担心数据库拓扑的频繁变化。

虹科Redis企业版软件(RS)通过代理进程提供高性能数据访问,该代理进程管理和优化对
RS集群内分片的访问。每个节点都包含一个代理进程。每个代理都可以是主动的并接收传入流量,也可以是被动的并等待故障转移。

虹科Redis企业版Proxy(代理)采用多线程架构,可以通过使用更多可用内核轻松扩展,并使用多路复用和流水线处理高流量。当成千上万的客户端同时连接到虹科Redis企业版时,代理会将所有传入请求整合到一组内部管道中,并将它们分发到相关的数据库分片。最终产生的结果:请求处理速度更快,允许高吞吐量和低延迟。
在这里插入图片描述

图:虹科Redis企业版代理在应用程序和数据库之间充当中介

这在实践中意味着什么呢?接下来我们就来看一下导致拓扑结构变化的几个常见集群级场景。我们将展示这种变化是如何隐藏在代理后面的,它与之前一样保持向用户暴露相同的数据库端点。从开发者的角度来看,这意味着更少的编码和从Redis开源版(Redis OSS)到Redis企业版的顺利迁移。

虹科Redis企业版的线性扩展

只要数据库分片达到某个(预定义的)大小时,虹科Redis企业版就可以对其进行扩展。扩展是通过启动一个新的Redis实例并将一半的哈希槽从原始分片移动到新分片来完成的。这使得数据库的吞吐量和性能线性增加。

在虹科Redis企业版中扩展数据库有两种方法:

  • 纵向扩展:在不向集群添加节点的情况下向数据库添加分片。当集群有足够的容量(内存和CPU)来添加分片时,就会发生这种情况。
  • 横向扩展:在创建新分片之前向虹科Redis企业版集群添加一个(或多个)新节点。当集群的现有物理资源不足以扩展数据库时,就会发生这种情况。

1.纵向扩展

图2显示了一个单分片数据库扩展为双分片数据库的示例。在左侧(扩展前),您可以看到包含单个分片的单个节点。在右侧(扩展完成后),数据库被重新分片。现在Shard 1和Shard 2位于同一个节点,各自拥有一半的哈希槽。

向上扩展是否会改变客户端连接到数据库的方式?答案是否定的。客户端继续向与以前相同的数据库端点发送请求,让代理负责将每个请求转发到适当的分片。

请注意,这与Redis OSS集群不同,在Redis OSS集群中,客户端分别连接到每个分片,因此必须了解集群拓扑。
在这里插入图片描述

图2:在虹科Redis企业版中扩展数据库,客户端继续使用相同的数据库端点

2.横向扩展

相比之下,考虑一下当我们使用多代理策略扩展数据库时会发生什么。在这种情况下,我们有多个代理在同一个端点后面运行。

(请注意,使用虹科Redis企业版,您还可以在使用OSS Cluster API的同时扩展数据库。在这种情况下,每个代理都有自己的端点。)

图3显示了将两个分片数据库扩展到一个四分片数据库的示例。一个新节点被添加到左侧的集群中,其中包含一个仍处于非活动状态的代理。扩容完成后,Shard 1和Shard 2位于Node 1,Shard 3和Shard 4位于Node 2。两个节点现在都包含活动代理。

但是,横向扩展不会改变客户端连接到数据库的方式,因为这些更改对客户端都是透明的。数据库继续将请求发送到与以前相同的数据库端点,处理每个请求的代理将这些请求转发到相关的分片。
在这里插入图片描述

图3:使用多代理策略横向扩展数据库,客户端继续使用相同的数据库端点

虹科Redis企业版的自动故障转移

虹科Redis企业版高可用性的一个关键点是自动故障转移,它依赖于数据复制。当在Redis企业版集群中检测到故障时—无论是数据库分片中断还是整个节点故障—该集群都设计为在几秒钟内自我修复。

修复过程由集群管理器执行,通常需要在集群内部更改数据库拓扑。根据新的拓扑结构通知和调整代理。从数据库客户端的角度看,没有任何变化。客户端继续使用与以前相同的数据库端点,因为拓扑更改是内部的并且隐藏在代理之后。

让我们看一下两个故障转移示例。

1.主分片故障转移示例

图4的左侧是节点1中的主分片,它的副本在节点2中。代理将所有客户端请求发送到主分片,主分片不断地与它的副本同步数据更改。截至目前,一切都运行的很好,但是当事情出错时会发生什么呢?

如果主分片发生故障,虹科Redis企业版集群管理器会将副本分片提升为主分片。代理现在将传入请求重定向到新的主分片,让客户端照常继续。最后一步是创建一个新的副本分片(如图4右侧所示)。

在这里插入图片描述

图4:自动主分片故障转移。

2.节点故障转移示例

在这个例子中,整个节点发生故障,包括主分片和代理。数据库客户端已断开连接。

但是,一旦虹科Redis企业版集群管理器完成故障转移过程,客户端就会像以前一样重新连接到相同的数据库端点并照常继续。从开发人员和运维人员的角度来看,无需进行任何更改,因为集群故障转移机制会将相同的端点分配给不同的代理。

图5说明了节点1发生故障时的过程。节点2的代理变为活动状态,虹科Redis企业版将副本提升为主节点。数据库现在再次可用,因此客户端可以在不知道此拓扑更改的情况下重新连接。集群管理器还找到了一个健康的节点(节点3),虹科Redis企业版在其中创建了一个新的副本分片。
在这里插入图片描述

图5:自动节点故障转移,其中客户端重新连接到同一数据库端点

虹科Redis企业版的基准测试

代理无疑为数据库客户端简化了很多操作。但它发生的速度有多快?为了检查其效率,让我们来看一些基准数据。

为了对延迟进行基准测试,我们使用了单端点Redis企业云集群,执行了一个包含20%SET(写入)和80%GET(读取)命令混合的常见场景。

同时,我们创建了一个内存限制为5GB的数据库,并选择了五个吞吐量目标:每秒50K、100K、200K、400K和800K操作(ops/sec)。对于每一种配置,虹科Redis企业版Cloud都会选择合适的云实例来使用,确保集群以最低的成本拥有足够的资源。

以下结果证明了虹科Redis企业版的速度有多快。该基准保持所有目标吞吐量的亚毫秒中值(p50)延迟。在某些情况下,它可以达到亚毫秒级的p99延迟
在这里插入图片描述
在这里插入图片描述

记得点赞收藏转发,评论区与我们多多交流互动哦~关于虹科Redis企业版数据库还有任何问题,虹科小云都会一一进行解答!

虹科是Redis企业版数据库的中国区战略合作伙伴,虹科持续关注各行业当下急切需求,专注于为企业解答疑问,制定专属服务,提供一站式解决方案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/598108.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

lnmp安装部署

文章目录 一、安装部署nginx二、安装部署mysql三、安装配置 PHP 解析环境四、部署 Discuz!社区论坛 Web 应用 一、安装部署nginx 1、安装依赖包 systemctl stop firewalld setenforce 0 yum -y install pcre-devel zlib-devel gcc gcc-c make2、创建运行用户 use…

设计模式之~解释器模式

简述: 解释器模式,给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 解释器模式需要解决的是,如果一种特定类型的问题发生的频率足够高,那么可…

基于安全产品DNS隧道流量分析

域名准备 选择哪家的云都没问题,这里我选择的TX云,因为之前注册过了,自己拿来做个流量分析不成问题。 域名添加解析记录 需要准备自己的vps作为DNS隧道的服务端,且需要添加ns记录 iodined 关闭53端口关闭开机自启 systemctl …

数据在内存中存储的真相来了!!!

🤩本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 🥰内容专栏:这里是《C知识系统分享》专栏,笔者用重金(时间和精力)打造,基础知识一网打尽&#xff0c…

【CMake报错】“检测到_ITERATOR_DEBUG_LEVEL和RuntimeLibrary不匹配” 的解决方案

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化 👉专__注👈:专注主流机器人、人工智能等相关领域的开发、…

外观模式详解:轻松搞定复杂子系统

一、概述 外观模式(Facade Pattern)是一种结构型设计模式,它为多个子系统中的操作提供一个统一的高层接口,用于访问复杂子系统的功能。其核心思想是通过一个外观类将子系统的复杂操作进行封装,客户端只需与外观类进行…

微信朋友圈如何批量发圈

做营销最重要的任务是什么? 毋庸置疑,就是发布朋友圈。 为什么要发圈呢? 发朋友圈是一种推广产品和服务的营销手段。 在如今社交媒体普及的时代,人们大多数时间都在线上,而朋友圈作为微信中的社交场景之一&#xff…

小程序开发,帮助小个体实现品牌化

在这个互联网时代,小程序成为了各大平台的必备。微信作为一款国民级的应用,如今已经拥有近10亿的用户,而小程序作为微信新推出的一款产品,已经被大家熟知。除了微信平台之外,小程序也被很多商家所青睐。因为小程序能带…

C++中《stack和queue的使用》

本文主要讲解栈和队列的常见接口的使用 文章目录 一、栈的介绍和使用1.1 stack的介绍1.2 stack的使用 二、queue的介绍和使用2.1 queue的介绍2.2 queue的使用 一、栈的介绍和使用 1.1 stack的介绍 1️⃣stack是一种容器适配器,专门用在具有后进先出操作的上下文环…

CS5366电路原理图|CS5366demobord参考电路|单芯片PD集成4K60Hz拓展坞芯片设计

ASL CS5366是Type-C转HDMI 4K60HZPDUSB3.0单芯片集成芯片,芯片方案带DSC压缩功能且最高可支持支持RGB 4:4:4 。 CS5366参数特性: 支持最高分辨率/定时4k60Hz 支持DSC v1.2a,并与前一版本向后兼容 支持DSC解码器和直通模式 嵌入式32位RISC-V…

2023年天府杯全国大学生数学建模竞赛B题中国环境问题的治理解题全过程

2023年天府杯全国大学生数学建模竞赛 B题 中国环境问题的治理 原题再现: 问题背景:   随着经济的快速发展和人口的持续增长,中国的环境问题已经成为了一个急需解决的重要问题。这些环境问题不仅对人们的健康和生活质量产生了巨大的影响&a…

笔试强训7

作者:爱塔居 专栏:笔试强训 作者简介:大三学生,希望和大家一起进步 目录 day9 day10 day9 一. 单选 1.下面程序的输出是:() String x"fmn"; x.toUpperCase(); String yx.replace(f,F); yy"wxy"; System.out…

Redis的内存策略(未完成)

过期Key处理: 1)Redis之所以性能强大,最主要的原因就是基于内存来存储,然而单节点的Redis内存不宜设置的过大,否则会影响持久化或者是主从复制的性能,可以通过修改配置文件来设置redis的最大内存,通过maxmemory 1gb&am…

为什么数字化转型就应该选择低代码?一文详解

数字化转型在这几年被反复提及,我们听得耳朵都快起茧子了。数字化在当前经济社会发展中扮演着越来越重要的角色,可以帮助企业更好地理解消费者和市场需求,更好地应对市场竞争,同时也可以提高企业效率,促进经济发展。 究…

WICC · 出海嘉年华倒计时!精彩不容错过,「指南」一手掌握

6.2 广州 WICC出海嘉年华 精彩不容错过 指南一手掌握 -高端峰会 圆桌会议- 超 有 料 话题剧透 如何在巨头林立的热门赛道成功突围? 如何在迅猛发展的新兴市场深挖价值? 如何在复杂合规政策下实现应用增长? 如何利用好底层技术优化本地化…

pip安装库提示Read timed out更换下载源

在使用pip install xx安装库的时候提示 Read timed out. 一般解决方案就两种: 1.延长timeout时间,治标不治本,谁知道到底该延长多少时间才能百分百每次安装都成功。 使用方式: pip --default-timeout1000 install 需要安装的库…

强化学习笔记-07 n-step Bootstrapping 多步TD时分学习

本文是博主对《Reinforcement Learning- An introduction》的阅读笔记,不涉及内容的翻译,主要为个人的理解和思考。 上一节介绍了TD算法,其采用了Bootstrapping方法,当前过去的预估以及即期收益来更新累积收益函数: 前…

通过期待已久的帕丽斯·希尔顿人物化身系列,成为元宇宙的偶像

5,555 个以帕丽斯希尔顿为主题的独特人物化身将于 5 月 31 日推出,每个人物化身均可在 The Sandbox 中使用。 我们与帕丽斯希尔顿及全球流行文化中心的下一代娱乐公司 11:11 Media 合作,很高兴宣布帕丽斯希尔顿的人物化身系列即将推出! 作为对…

Word导出PDF时图片质量下降问题的解决方法

Word导出PDF时图片质量下降问题的解决方法 ⭐️ 最近,在使用Word写完论文以后,另存为“PDF”文件时,发现文档中的图像质量明显下降。本文介绍的方法可以将Word保存为图片无压缩的带有标签的高质量PDF文件,建议仅在定稿时进行以下…

2023系统分析师下午案例分析真题

真题1 阅读以下关于软件系统分析与建模的叙述,在纸上回答问题1至3. 说明: 某软件公司拟开发一套汽车租赁系统,科学安全和方便的管理租赁公司的各项业务,提高公司效率,提升利率。注册用户在使用系统镜像车辆预约时需执行以下操作: (a) 用户登录系统 (b) 查询车辆信息 (c) …