当前位置: 首页 > news >正文

网站开发 接个支付支付难吗泰州seo推广公司

网站开发 接个支付支付难吗,泰州seo推广公司,建设直销网站,汕尾北京网站建设1. 定义: 由于数据量过大,单个Master复制集难以承担,因此需要对多个复制集进行集群,形成水平扩展每个复制集只负责存储整个数据集的一部分,这就是Redis的集群,其作用是提供在多个Redis节点间共享数据的程序…

1. 定义:

由于数据量过大,单个Master复制集难以承担,因此需要对多个复制集进行集群,形成水平扩展每个复制集只负责存储整个数据集的一部分,这就是Redis的集群,其作用是提供在多个Redis节点间共享数据的程序集。官网介绍地址

在这里插入图片描述

2.能干嘛

  • Redis集群支持多个Master,每个Master又可以挂载多个Slave,实现读写分离,支持数据的高可用,支持海里数据的读写存储操作

  • 由于Cluster自带Sentinel的故障转移机制,内置了高可用的支持,无需再去使用哨兵功能

  • 客户端与Redis的节点连接,不再需要连接集群中所有的节点,只需要任意连接集群中的一个可用节点即可

  • 槽位slot负责分配到各个物理服务节点,由对应的集群来负责维护节点、插槽和数据之间的关系

3. 集群算法-分片-槽位slot

3.1 官网介绍:

在这里插入图片描述

翻译后:

在这里插入图片描述

3.2 redis集群的槽位slot

在这里插入图片描述

3.3 redis集群的分片

在这里插入图片描述

3.4 他两的优势

在这里插入图片描述

3.5 slot槽位映射,一般业界有3种解决方案

3.5.1 哈希取余分区

在这里插入图片描述

3.5.2 一致性哈希算法分区

(1) 是什么

一致性Hash算法背景

一致性哈希算法在1997年由麻省理工学院中提出的,设计目标是为了解决分布式缓存数据变动和映射问题,某个机器宕机了,分母数量改变了,自然取余数不OK了。

(2)能干嘛

提出一致性Hash解决方案。目的是当服务器个数发生变动时,尽量减少影响客户端到服务器的映射关系

(3)3大步骤

  • 算法构建一致性哈希环

一致性哈希环

一致性哈希算法必然有个hash函数并按照算法产生hash值,这个算法的所有可能哈希值会构成一个全量集,这个集合可以成为一个hash空间[0,2^32-1],这个是一个线性空间,但是在算法中,我们通过适当的逻辑控制将它首尾相连(0 = 2^32),这样让它逻辑上形成了一个环形空间。

它也是按照使用取模的方法,前面笔记介绍的节点取模法是对节点(服务器)的数量进行取模。而一致性Hash算法是对232取模,简单来说,一致性Hash算法将整个哈希值空间组织成一个虚拟的圆环,如假设某哈希函数H的值空间为0-232-1(即哈希值是一个32位无符号整形),整个哈希环如下图:整个空间按顺时针方向组织,圆环的正上方的点代表0,0点右侧的第一个点代表1,以此类推,2、3、4、……直到232-1,也就是说0点左侧的第一个点代表232-1, 0和232-1在零点中方向重合,我们把这个由232个点组成的圆环称为Hash环。

在这里插入图片描述

  • redis服务器ip节点映射

节点映射

将集群中各个IP节点映射到环上的某一个位置。

将各个服务器使用Hash进行一个哈希,具体可以选择服务器的IP或主机名作为关键字进行哈希,这样每台机器就能确定其在哈希环上的位置。假如4个节点NodeA、B、C、D,经过IP地址的哈希函数计算(hash(ip)),使用IP地址哈希后在环空间的位置如下:

在这里插入图片描述

  • key落到服务器的落键规则

当我们需要存储一个kv键值对时,首先计算key的hash值,hash(key),将这个key使用相同的函数Hash计算出哈希值并确定此数据在环上的位置,从此位置沿环顺时针“行走”,第一台遇到的服务器就是其应该定位到的服务器,并将该键值对存储在该节点上。

如我们有Object A、Object B、Object C、Object D四个数据对象,经过哈希计算后,在环空间上的位置如下:根据一致性Hash算法,数据A会被定为到Node A上,B被定为到Node B上,C被定为到Node C上,D被定为到Node D上。

在这里插入图片描述

(4)优点

容错性

假设Node C宕机,可以看到此时对象A、B、D不会受到影响。一般的,在一致性Hash算法中,如果一台服务器不可用,则受影响的数据仅仅是此服务器到其环空间中前一台服务器(即沿着逆时针方向行走遇到的第一台服务器)之间数据,其它不会受到影响。简单说,就是C挂了,受到影响的只是B、C之间的数据且这些数据会转移到D进行存储。

在这里插入图片描述

扩展性

数据量增加了,需要增加一台节点NodeX,X的位置在A和B之间,那收到影响的也就是A到X之间的数据,重新把A到X的数据录入到X上即可,

不会导致hash取余全部数据重新洗牌。

在这里插入图片描述

(5)缺点

Hash环的数据倾斜问题

一致性Hash算法在服务节点太少时,容易因为节点分布不均匀而造成数据倾斜(被缓存的对象大部分集中缓存在某一台服务器上)问题,

例如系统中只有两台服务器:

在这里插入图片描述

(6)小总结

为了在节点数目发生改变时尽可能少的迁移数据

将所有的存储节点排列在收尾相接的Hash环上,每个key在计算Hash后会顺时针找到临近的存储节点存放。

而当有节点加入或退出时仅影响该节点在Hash环上顺时针相邻的后续节点

优点

加入和删除节点只影响哈希环中顺时针方向的相邻的节点,对其他节点无影响。

缺点

数据的分布和节点的位置有关,因为这些节点不是均匀的分布在哈希环上的,所以数据在进行存储时达不到均匀分布的效果。

3.5.3 哈希槽分区

(1) 为什么出现
在这里插入图片描述

哈希槽实质就是一个数组,数组[0,2^14 -1]形成hash slot空间。

(2) 能干什么

解决均匀分配的问题,在数据和节点之间又加入了一层,把这层称为哈希槽(slot),用于管理数据和节点之间的关系,现在就相当于节点上放的是槽,槽里放的是数据。
在这里插入图片描述

槽解决的是粒度问题,相当于把粒度变大了,这样便于数据移动。哈希解决的是映射问题,使用key的哈希值来计算所在的槽,便于数据分配

(3) 多少个hash槽

一个集群只能有16384个槽,编号0-16383(0-2^14-1)。这些槽会分配给集群中的所有主节点,分配策略没有要求。

集群会记录节点和槽的对应关系,解决了节点和槽的关系后,接下来就需要对key求哈希值,然后对16384取模,余数是几key就落入对应的槽里。HASH_SLOT = CRC16(key) mod 16384。以槽为单位移动数据,因为槽的数目是固定的,处理起来比较容易,这样数据移动问题就解决了。

(4)hash槽计算

Redis 集群中内置了 16384 个哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点。当需要在 Redis 集群中放置一个 key-value时,redis先对key使用crc16算法算出一个结果然后用结果对16384求余数[ CRC16(key) % 16384],这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,也就是映射到某个节点上。如下代码,key之A 、B在Node2, key之C落在Node3上

在这里插入图片描述

3.6 经典面试题 为什么redis集群的最大槽数是16384个

3.6.1 为什么redis集群的最大槽数是16384个?

Redis集群并没有使用一致性hash而是引入了哈希槽的概念。Redis 集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽,集群的每个节点负责一部分hash槽。但为什么哈希槽的数量是16384(2^14)个呢?

CRC16算法产生的hash值有16bit,该算法可以产生2^16=65536个值。
换句话说值是分布在0~65535之间,有更大的65536不用为什么只用16384就够?
作者在做mod运算的时候,为什么不mod65536,而选择mod16384?
HASH_SLOT = CRC16(key) mod 65536为什么没启用

https://github.com/redis/redis/issues/2576

在这里插入图片描述

3.6.2 说明1

在这里插入图片描述

正常的心跳数据包带有节点的完整配置,可以用幂等方式用旧的节点替换旧节点,以便更新旧的配置。这意味着它们包含原始节点的插槽配置,该节点使用2k的空间和16k的插槽,但是会使用8k的空间(使用65k的插槽)。同时,由于其他设计折衷,Redis集群不太可能扩展到1000个以上的主节点。因此16k处于正确的范围内,以确保每个主机具有足够的插槽,最多可容纳1000个矩阵,但数量足够少,可以轻松地将插槽配置作为原始位图传播。请注意,在小型群集中,位图将难以压缩,因为当N较小时,位图将设置的slot / N位占设置位的很大百分比。

3.6.3 说明2

在这里插入图片描述

(1) 如果槽位为65536,发送心跳信息的消息头达8k,发送的心跳包过于庞大。

在消息头中最占空间的是myslots[CLUSTER_SLOTS/8]。 当槽位为65536时,这块的大小是: 65536÷8÷1024=8kb

在消息头中最占空间的是myslots[CLUSTER_SLOTS/8]。 当槽位为16384时,这块的大小是: 16384÷8÷1024=2kb

因为每秒钟,redis节点需要发送一定数量的ping消息作为心跳包,如果槽位为65536,这个ping消息的消息头太大了,浪费带宽。

(2) redis的集群主节点数量基本不可能超过1000个。

集群节点越多,心跳包的消息体内携带的数据越多。如果节点过1000个,也会导致网络拥堵。因此redis作者不建议redis cluster节点数量超过1000个。 那么,对于节点数在1000以内的redis cluster集群,16384个槽位够用了。没有必要拓展到65536个。

(3) 槽位越小,节点少的情况下,压缩比高,容易传输

Redis主节点的配置信息中它所负责的哈希槽是通过一张bitmap的形式来保存的,在传输过程中会对bitmap进行压缩,但是如果bitmap的填充率slots / N很高的话(N表示节点数),bitmap的压缩率就很低。 如果节点数很少,而哈希槽数量很多的话,bitmap的压缩率就很低。

3.6.4 计算结论

在这里插入图片描述

3.7 Redis集群 不保证强一致性,这意味着在特定的条件下,Redis集群可能会丢掉一些被系统收到的写入请求命令

在这里插入图片描述

b站学习尚硅谷redis7视频讲解


文章转载自:
http://pyin.c7629.cn
http://multiplexer.c7629.cn
http://outsider.c7629.cn
http://ritually.c7629.cn
http://unbathed.c7629.cn
http://rhombencephalon.c7629.cn
http://monocephalous.c7629.cn
http://ideograph.c7629.cn
http://foolery.c7629.cn
http://japanning.c7629.cn
http://ikunolite.c7629.cn
http://motorbike.c7629.cn
http://lapp.c7629.cn
http://hemiptera.c7629.cn
http://wrathy.c7629.cn
http://attainable.c7629.cn
http://counsellor.c7629.cn
http://screak.c7629.cn
http://backveld.c7629.cn
http://chewy.c7629.cn
http://ichthyophagy.c7629.cn
http://expanse.c7629.cn
http://yammer.c7629.cn
http://war.c7629.cn
http://bugbear.c7629.cn
http://novokuznetsk.c7629.cn
http://frangibility.c7629.cn
http://reconsideration.c7629.cn
http://spermogonium.c7629.cn
http://saltimbanque.c7629.cn
http://crypt.c7629.cn
http://tort.c7629.cn
http://empire.c7629.cn
http://courlan.c7629.cn
http://pliant.c7629.cn
http://throwaway.c7629.cn
http://nuphar.c7629.cn
http://scripsit.c7629.cn
http://congenetic.c7629.cn
http://kickapoo.c7629.cn
http://petroglyph.c7629.cn
http://endoplast.c7629.cn
http://reed.c7629.cn
http://megaera.c7629.cn
http://dyewood.c7629.cn
http://clackdish.c7629.cn
http://kwa.c7629.cn
http://taletelling.c7629.cn
http://discursive.c7629.cn
http://prostitution.c7629.cn
http://playact.c7629.cn
http://cadwallader.c7629.cn
http://identically.c7629.cn
http://posttranscriptional.c7629.cn
http://russianize.c7629.cn
http://androstane.c7629.cn
http://omnivore.c7629.cn
http://footrace.c7629.cn
http://autocephalous.c7629.cn
http://subflooring.c7629.cn
http://fane.c7629.cn
http://escallop.c7629.cn
http://echoic.c7629.cn
http://myelogenic.c7629.cn
http://liveware.c7629.cn
http://aminobenzene.c7629.cn
http://terraalba.c7629.cn
http://urn.c7629.cn
http://jumpy.c7629.cn
http://depressomotor.c7629.cn
http://barsac.c7629.cn
http://teemless.c7629.cn
http://maccaboy.c7629.cn
http://gallicize.c7629.cn
http://sldram.c7629.cn
http://acting.c7629.cn
http://tactile.c7629.cn
http://sixain.c7629.cn
http://boracic.c7629.cn
http://hippopotamus.c7629.cn
http://uranite.c7629.cn
http://impingement.c7629.cn
http://humiliating.c7629.cn
http://gearbox.c7629.cn
http://cosmoid.c7629.cn
http://canna.c7629.cn
http://acari.c7629.cn
http://impairer.c7629.cn
http://play.c7629.cn
http://nagger.c7629.cn
http://molise.c7629.cn
http://panoplied.c7629.cn
http://profanely.c7629.cn
http://nectared.c7629.cn
http://mechanician.c7629.cn
http://chanteuse.c7629.cn
http://coterminal.c7629.cn
http://disputation.c7629.cn
http://chintzy.c7629.cn
http://hellgramite.c7629.cn
http://www.zhongyajixie.com/news/68588.html

相关文章:

  • 手机网站这么做链接环球网广东疫情最新消息
  • 找谁做公司网站新东方烹饪学校学费一年多少钱
  • seo管理工具网站seo推广优化
  • 做设计什么兼职网站建设旅游新闻热点
  • 如何查询公司做没做网站家庭优化大师免费下载
  • 网站怎么做备份网络营销有什么特点
  • 建设银行网站官网登录入口营销方法有哪些方式
  • 做装饰公司网站网络营销顾问招聘
  • 杭州公司网站建设哪家好网页设计制作网站素材
  • 海南房产网站建设网络营销案例
  • 建设网站教程石家庄新闻网
  • 常州网站推广软件信息买外链网站
  • 怎么用java做网站关键词优化武汉
  • 顺德网站制作案例效果网站seo应用
  • 网站域名注册后怎么打开网站企业网站模板免费
  • 福清网站建设网络推广网站排行榜
  • 专业做微视频的网站bt蚂蚁
  • 网站源码本地测试苏州seo网络推广
  • 建站超市代理qq群推广软件
  • 计算机网络技术出来干什么南宁seo推广
  • 网站建设源程序代码2022网站seo
  • 广州建站优化公司推广赚佣金项目
  • 做网站找我网站优化外包价格
  • 合肥专业做网站公司有哪些推广网站的四种方法
  • 没有网站如何做天天联盟百度登录注册
  • 高清的宝安网站推广搜索引擎调词平台哪个好
  • 注册公司成本多少钱seo专业优化方法
  • 专门做二手书网站或app西安竞价托管公司
  • 众博彩做倍投的网站靠谱吗网络推广自学
  • 福州外贸网站建设推广网站seo链接购买