早晨挂科0--0
大白:(O ^ ~ ^ O) 小同志,听说你今天早上没看书呀,
我:( ′ ‸`) 嗯嗯
大白:反手一个大嘴巴,来说说把(O ^ ~ ^ O) ,咋回事呢?
我:昨天,没把握好时间,写作时间太长了,导致,早上睡不醒 +﹏+ 。
大白:写的时间长,说明你好歹用心了。可这并不是睡懒觉的借口,要记住哦∩0∩
我:(゜^*))嗯嗯
20:30--22:12
Redis Cluster 集群
假设我们的数据库 每秒只能处理10万条数据,那如果现在业务需要每秒处理100万条数据该怎么办呢?
假设我们的机器内存只有16-256G,那如果现在业务需要500G的内存空间该怎么办呢?
这时候我们就需要用到分布式/集群的概念来解决问题。
可以抽象的理解为,一台机器解决不了的问题,我们可以使用多台机器,一起解决 。 / 人多力量大么。
在Redis Cluster 中,数据分布有两种实现方式:
-
哈希分布:特点:数据分散度高,键值分布与业务无关无法顺序访问,支持批量操作
典型产品:一致性哈希Memcache 、Redis Cluster其他缓存产品 -
顺序分布:特点:数据分散度易倾斜,键值业务相关可顺序访问,不支持批量操作
典型产品:Big Table HBase
哈希分布又有三种实现方式:
-
节点取余分区( hash(key)%nodes ):缺点是:如果要对节点扩容,那之前存储的数据中,超过80%的数据,都要做节点迁移。即使使用多倍扩容迁移量也高达50%。
-
一致性哈希分区:客户端分片:哈希 + 顺时针(优化取余)
在扩容处理中进行了优化,如图“一致性哈希-扩容”,在n1 和 n2扩容一个n5,只会影响n1 和 n2之间的数据,不会影响到其他人。
需要注意的是:
节点伸缩:影响临近节点,还是有数据迁移;
翻倍伸缩:保证最小迁移数据和负载均衡。
QQ截图20190122225915.png -
虚拟槽分区(重点):
预设虚拟槽:每个槽映射一个数据子集,一般比节点数大
良好的哈希函数:例如CRC16
服务端管理节点、槽、数据:例如Redis Cluster
QQ截图20190122230550.png
在沉网中生活,不敢失去想飞的心,始终铭记飞翔的姿势
网友评论