深度解析:Redis集群方案优化与实现

创始人
2025-01-28 16:06:50
0 次浏览
0 评论

如何实现高可用的 redis 集群

由于其广泛的数据结构,高性能和简单协议,REDIS可以用作数据库的上游缓存层。
但是,在大规模的重新使用过程中,它仅限于几个方面:有限的一个机器内存,带WID打印,个人点问题,并且无法动态扩展容量。
基于上述,重新群集解决方案尤为重要。
通常有3种方法:官方的Redis集群; 上面的三个程序具有自己的优势和缺点。
REDIS群集(正式):尽管它已经出版了一年多,但最好的做法还是缺少的; 是什么使得在没有痛苦的情况下很难改善业务。
代理:许多主流-REDIS群集现在使用代理,例如: B. CODI,很长一段时间以来一直是开源的。
该解决方案有许多优势。
升级相对平稳。
但是,缺点是,服务成本的大约30%,因为它将再次增加。
而且,由于本地客户不能同时绑定几个代理,因此连接的代理必须在挂起时手动涉及。
如果原始客户端不像智能客户端那样封装,并通过重新连接的RE连接代理支持代理,则他还会在客户的作品中带来一些缺陷。
尽管代理可以使用几种,并且可以动态地增加代理以提高性能,但所有客户都共享所有代理人,因此某些不寻常的服务可以影响其他服务。
为每项服务创建代理也为该规定带来了其他工作。
我们决定了第三个解决方案,即客户片段。
与代理人相比,客户s碎的性能更好,延迟较小。
当然也有缺点,这意味着升级必须重新启动客户,我们必须维护几种语言,但我们喜欢高性能。
让您自己被介绍到我们的redis群集:摘要:如图0所示,我们的redis群集由四个字符组成:zookeeper:保存所有redis簇的实例地址,redis实例根据特定路径协议在您自己的地址中写入。
REDIS实例:我们更改了Redis源代码。
Sentinel:REDIS的主开关工具具有自己的。
我们意识到Sentinel的集群高可用性。
客户(SmartClient):客户通过协议找到用动物园书写的地址。
并计算一致性 - 确定钥匙掉落然后操作该组的主要库的唯一组。
客户将在动物园上设置监视。
我们的Redis集群分为业务,不同的公司使用不同的集群(即业务和集群是一种关系)。
REDIS群集由几个组组成(一个组由大师和重新的身体组成)。
组的组越多,可以使用越多的机器,并且将提供更多的存储和带宽。
在图中,故障转移如图1所示,REDIS在IP:Zooeeper中的端口开始时写入。
主要示例模式写在您自己的IP中:at/redis/company name/group Name永久打结(如果该节点不存在)。
如果主模式更改为模式,请创建/redis/company name/group name/ip/ip:端口临时结并写下您自己的ip:port(如果已经有相同的节点已经具有,创建删除)Essence如果启动实例模式/redis/bauferbietname/gruppenname/slaves/ip:临时创建的端口和您自己的IP:端口:端口(如果已经可用相同的节点,请先删除它,然后创建)。
如果您从模式切换到主模式,则首先删除/redis/company name/group name/slaves/ip:port emortary.punkt,写下您自己的IP:端口at/redis/company name/group name永久打结。
Zookeeper始终存储当前有效的主实例-IP:端口信息。
对于主和Cruber的自动切换过程,现在将带有REDIS的前哨实施设置,而无需响应30多岁以上。
客户页面通过某个业务名称下的所有组名称来计算一致性 - 计算,以确定哪个组密钥正在下降。
当客户启动时,所有组的主要端口将从Zookeeper的命名企业名称下保存下来,并在动物园中积极通知监视)。
如果来自Zookeeper的客户收到有关节点更改的通知,他将重现最新的主和Condon I:端口并重置监视(Zookeeper Monitoring是一个时间)。
使用此方法,可以实时学习客户,以访问最新的主端口和从属端口信息。
由于我们所有的REDIS实例信息都按照协议保存在动物园上,因此我们不必为每个实例提供监视。
和奴隶延迟,主-Lave -Switching,连接等工具。
开发:现在,在业务记忆需求超出预期之后,REDIS群集无法通过动态扩展来扩展。
因此,我们支持动态扩展。
我们的原始客户通过一致性-Hash执行了密钥的路由策略。
但是,在动态扩展过程中,该方法变得有些复杂。
因此,我们决定使用相对简单的胶片方法。
一致性的优点是,它可以扩大无限能力,而与电影无关。
在预芯片中,我们指示在初始化级别的群集的零件数量。
将来重新定例。
假设前芯片中的128个插槽也可以到达结核级群集。
在我们的Redis簇中,有四个角色,SmartLient,Redis,Sentinel,Zooeper。
为了支持动态扩展,我们为REDIS_CLUSTER_MANAGER(以下称为管理器)添加了角色,以管理REDIS群集。
主要的任务是初始化群集(即预先实用)。
为了最大程度地减少数据迁移对当前性能的影响,我们每次都只能迁移一块数据以迁移以完成它,然后迁移下一个碎片。
与原始方案相比,如图2所示,插槽,经理锁,客户端,迁移客户端。
插槽:所有碎片在插槽节点下写下自己的信息。
当经理初始化群集时,初始化了群集和集群下的组数量时,进行之前的芯片操作将均匀地分配给现有组。
该信息由一个JSON标志组成,该标志记录片段状态(统计数据)。
碎片有三种类型:在线,pre_mmmrate,迁移。
在线意味着这件作品处于正常状态。
pre_mimation意味着该作品必须从经理迁移。
经理还没有准备好准备好准备,然后数据将丢失。
经理确认所有客户都已准备好迁移,并且DST中的目标组写在此表中以迁移。
完成迁移后,target group_name写在SRC上。
ManagerLock:由于我们每次允许一个插槽时都允许一个插槽,因此我们不允许一个以上的经理操作集群。
因此,在操作群集之前,经理在Managerlock下进行了临时结注册。
客户和迁移客户是一个结,让经理知道客户是否完成。
客户端已在UID上描绘,格式是客户端Language_patient name_pid。
如果未迁移群集,也就是说,所有碎片都是在线的,则客户将在客户端下创建一个临时的UID节点。
当插槽从在线更改为pre_mimprate时,客户在客户端删除了uid -tempostrary结,并在迁移客户端创建了UID - 稳定性节点。
请注意,由于数据并未丢失,因此该插槽被Pre_migrate迁移到迁移而阻止。
因此,在10年代进行管理,并确认所有客户都已转换为待机。
如果客户从pre_mimprate到在线找到插槽状态,则在迁移_clients下删除了UID节点,并且在客户端下创建了UID节点。
应该注意的是,客户可能刚刚启动并在客户下创建一个UID节点。
稍后在pre_mimprate中等待插槽,然后等待1秒确认是否准备好所有客户。
如果经理看到客户之间没有客户,则游戏状态将更改为迁移。
迁移插槽后,锁也会抬起。
如果客户端在迁移过程中具有阅读和写作迁移插槽的钥匙,则客户端首先从SRCGroup迁移到DSTGROUP,然后写入。
这意味着在此期间,客户绩效将下降。
因此,每次都只会迁移一个插槽。
这样,即使只有128个集群簇,这是可以接受的,受到迁移过程中绩效影响的密钥也只有1/128。
经理发现该插槽已迁移,目标组名称写在SRC中。
客户端还删除了oprating_clients的UID,并在客户端下创建UID节点。

再谈Redis三种集群模式:主从模式、哨兵模式和Cluster模式

开发人员有三种类型的群集,您可以从世界上的建筑物中选择:首席和状态模式,领先模式和群集状态。
每种情况都有视图的场景和特征。
主要情况的主要情况是写和开发的。
虽然晚上很低,但其有效性。
一旦下载了主人,就需要劳动干预后。
因此,发件人模式有所改善。
通过控制节点,将自动回答错误,并且可以改善系统的稳定性和可用性。
但是,Tabarian模型仅限于单个水域,不适合更大和妥协。
反对再次获得3.x的利润。
多-IMAN多环境复合透明度的多国多国际冲突,以验证数据和控制的数据。
细心的构型和节点,例如锁,例如重建,杆,隔离higger和Clater模式。
在测试期间,正确的同步,写作,写作以及维持工程,真正的同步,维持和批准的信息。
两种层状模式和临床模式提供了高细分和自动侮辱过渡。
例如,在线扩展很复杂,群集模式对结构结构具有很高的兴趣。
诊断出哪种模式,您需要为某些业务需求和绩效申请人做出决定。
通常,您可以宣传和使用这三种模式的这三种模式,并更好地安排这三种模式的地址,并根据不同的大小和复杂性调整地址地址和应用程序状况的地址的应用。

再谈Redis三种集群模式:主从模式、哨兵模式和Cluster模式

REDIS支持三种集群模式,以提高性能和生产。
主要模式描述了主模型的状态越高,并且在读取和分发的定期分发和分布的定期分发中的状态越高。
部署是三个大师和三个。
主要模式的要点是同时同步主库和信息,以确保主库和高可用性。
在这一点上。
该模型引入了自动错误传输。
但是写作表现有限。
群集模式通过通过分布分配数据插槽和节点来分布数据分布和分布。
在建筑环境中,需要主库和库来配置主库和库。
Sentry节点还需要配置哨兵节点以监视中流台节点。
分配哈希。
通过实验,它是客户端或Springboot应用程序,您可以检查并符合集群模式下的兼容性和一致性。

Redis集群方案应该怎么做

有些公司简要说明Java语言,例如独立群集。
通常,有三个集群用于解决高并发问题。
它很高且合并,但解决了高可用性问题。
Jedis访问JedisCluster类。

shard -shardedjedispool类,将客户端与jedis一起使用。

您可以使用滑动双代理和连接代理使用绝地类(单个链接)和绝地完整类(Multi Link)。

REDIS Sentinel机制负责在掌握后选择从作为新主机。

如果您有任何疑问,则可以留言。

热门文章
1
高效掌握:CMD命令轻松启动、关闭及登录... 如何用cmd命令快速启动和关闭mysql数据库服务开发中经常使用MySQL数据库...

2
MySQL分区删除技巧与8.0版本新特性... mysql删除分区在MySQL中,删除分区操作主要使用“可替代”的命令与“ dr...

3
Python代码实现:如何判断三角形的三... python三角形三条边长,判断能否构成三角形Python三角形的三个长边如下:...

4
深度解析:MySQL查询语句执行顺序及优... mysql查询语句执行顺序当这是由于执行SQL的过程时,了解其过程很重要。 ...

5
SQL教程:使用SUBSTRING和IN... sql取特定字符的前面几位字符selectsubstr('L-0FCLDRBCT...

6
MySQL日期差异计算方法:轻松获取日期... MySQL计算时间差两日期相减得月份mysql两时间相减得月MySQL计算时间之...

7
MySQL及SQL查询获取前10条数据方... MySql查询前10条数据sql语句是从MySQL获取前1 0个数据的SQL查询...

8
MySQL启动问题排查与解决指南 Mysql为什么启动不了如果要配置MySQL,则遇到无法启动的问题,可能是由于配...

9
DbVisualizer添加MySQL数... 如何在DbVisualizer中添加本地mysql数据库由于DbVisualiz...

10
SQL字段默认值设置全攻略:轻松实现自动... sql如何设置字段默认值设置SQL中某个字段的默认值;需要遵循几个步骤。首先您需...