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

有没有人做网站网站整站优化推广方案

有没有人做网站,网站整站优化推广方案,电脑上做免费网站教程视频,电子书网站用dz还是wordpress文章目录 Redis分布式锁的实现原理Redis实现分布式锁如何合理的控制锁的有效时常?**redisson实现的分布式锁**redisson实现的如何保证主从一致性 Redis的集群方案1.主从复制主从数据的同步原理全量同步增量同步 2.哨兵模式Redis的集群脑裂是什么?3.分片集…

文章目录

  • Redis分布式锁的实现原理
    • Redis实现分布式锁如何合理的控制锁的有效时常?
    • **redisson实现的分布式锁**
    • redisson实现的如何保证主从一致性
  • Redis的集群方案
    • 1.主从复制
      • 主从数据的同步原理
        • 全量同步
        • 增量同步
    • 2.哨兵模式
    • Redis的集群脑裂是什么?
    • 3.分片集群

Redis分布式锁的实现原理

Redis实现分布式锁主要利用Redis的setnx(SET if not exists)命令,】

  • 获取锁
# 添加锁 NX 是互斥 EX是设置超时时间
SET lock value NX EX 10
  • 释放锁
# 释放锁 删除即可
DEL key

Redis实现分布式锁如何合理的控制锁的有效时常?

  • 根据业务执行时间预估
    这个时间不好控制,时间长或短都会对业务造成影响
  • 给锁延期
    我们可以添加一个线程来监控当前线程,如果业务还未完成,就给锁延期,如果业务完成,就释放锁。

有些许麻烦,还需要我们自己创建一个线程,这里有一个现成的解决方案,那就是redisson是实现的分布式锁


redisson实现的分布式锁

redisson实现的锁是可重入的,底层使用hash结构来完成锁的重入。
将锁名作为Key
将线程名和锁可重入的次数作为Value

在这里插入图片描述

redisson实现的如何保证主从一致性

RedLOck(红锁):不能只在一个redis实例上创建锁,应该是在多个redis实例上创建锁(n/2 +1),避免在一个redis实例上上锁

  • 获取锁时,向多个 Redis 节点中获取锁,只有每个节点都获取锁成功,才算-获取锁成功。实现了,只要有一个节点存活,其他线程就不能获取锁,锁不会失效。

  • 当其中有节点宕机时,其他节点仍然含有锁信息,其他节点仍然有效

Redis的集群方案

1.主从复制

搭建主从集群,实现读写分离

在这里插入图片描述

主从数据的同步原理

全量同步

主从全量同步
Replication Id: 简称replid,是数据集的标记,id一致说明是同一个数据集,每一个master都有唯一的replid,slave则会继承master节点的replid
offset: 偏移量,随着记录在repl_baklog中的数据增多而逐渐增大,slave完成同步时也会记录当前同步的offset,如果slave的ofset小于master的offset,说明slave数据落后于master,需要更新

在这里插入图片描述

  1. 从节点请求主节点同步数据,(replication id,offset)
  2. 主节点判断是否是第一次请求,是的话就同步版本信息(replication id 和 offset)
  3. 主节点执行bgsave,生成RDB文件,发送给从节点执行
  4. 在RDB执行期间,主节点会以命令的形式记录到缓冲区(日志文件)
  5. 把生成的日志文件发送给从节点同步
增量同步

主从增量同步(slave重启或后期数据变化)
在这里插入图片描述
1.从节点请求主节点建立连接,主节点判断不是第一次连接,就获取从节点的offset
2. 主节点从日志文件中获取offset之后的值,发送给从节点进行同步

2.哨兵模式

Redis提供了哨兵(Sentinel)机制来实现主从集群的自动故障恢复

  • 监控: Sentinel会不断检查master和slave是否按照与其工作

Sentinel基于心跳监测服务状态,每隔一秒向集群的每个实例发送一个ping命令
主观下线: 如果某个Sentinel发现某实例未在规定时间内响应,则认为该实例主观下线
客观下线: 超过指定数量(quorum)的sentinel都认为该实例主观下线,则认为该实例客观下线,quorum的值最好超过Sentinel实例数量的一半

  • 自动故障恢复: 如果master故障,Sentinel会将一个slave提升为master,当故障实例恢复后也以新的master为主

哨兵选主原则

  • 首先判断主从节点断开时间长短,如超过指定值就排除该从节点不会被提升为主节点
    判断从节点的slave-priority值,越小优先级越高
    如果slave-priority一样,则判断slave节点的offset值,越大优先级越高
    最后是判断slave节点的运行id大小,越小优先级越高
  • 通知: Sentinel充当Redis客户端的服务发现来源,当集群发生故障转移时,会将最新信息推送给Redis的客户端
    在这里插入图片描述

Redis的集群脑裂是什么?

集群脑裂是由于主节点和从节点和sentinel处于不同的网络分区,使得sentinel没有能够心跳感知到主节点,所以通过选举的方式提升了一个从节点为主节点,这样就存在了两个master,这样就会导致客户端还在旧的主节点哪里写入数据,新节点无法同步数据,当网络恢复后,sentinel会将旧的主节点降为从节点,再从新的master中同步数据,就会导致数据丢失

解决方案:
修改redis的配置,设置最少的从节点数量以及缩短主从数据同步的延迟时间,达不到要求就拒绝请求,就可以避免大量的数据丢失。

# 表示最少的slave节点为1个
min-replicas-to-write 1 # 表示数据复制和同步的延迟不能超过5秒
min-replicas-max-lag 5

小结:
主从和哨兵可以解决高可用,高并发读的问题
但是当出现数据量很多或者需要高并发写的场景时,主从和哨兵模式就会吃力。 为了解决这个问题,引入分片集群的概念

3.分片集群

分片集群:

  • 集群中有多个master,每个master保存不同的数据
  • 每个master有自己的slave节点
  • master之间通过ping来监测彼此的健康状态
  • 客户端的请求可以访问集群任意节点,最终都会被转发到正确节点

工作细节:

  • Redis分片集群引入了哈希槽的概念,Redis集群有16384个哈希槽
  • 将16384个哈希槽分配到不同的master实例上
  • 读写数据:根据key的有效部分计算哈希值(有效部分:如果key前有大括号,那么有效部分就是大括号内的内容,如果没有,则以key本身作为有效部分),对16384取余,余数为插槽,寻找插槽所在的实例
http://www.dt0577.cn/news/27955.html

相关文章:

  • 中国比较有名的公司厦门网站搜索引擎优化
  • 做外链的网站软文推广例子
  • 自己 做网站学什么 平面设计简述提升关键词排名的方法
  • 酒店网站建设目标营销推广ppt
  • 制作网站可用性监控免费信息推广网站
  • 世界购物网站排名上海牛巨微seo关键词优化
  • 做网站分为哪些功能的网站活动推广文案
  • 奶茶加盟 技术支持 东莞网站建设seo优化名词解释
  • 网站建设订单模板下载网络营销师证书需要多少钱
  • 远涛网站建设业务网站制作
  • 网站开发培训光山搜索引擎排名规则
  • 建设网站难吗黄页推广引流
  • 成交型网站倡导公司百度热搜 百度指数
  • 网站管理系统后台不能发布文章了人民网今日头条
  • 做网站需要的图片大小百度推广一年多少钱
  • 吉林市做网站的科技网络营销常用的工具有哪些
  • 网页游戏在线玩链接网络seo优化平台
  • 专业网站设计百度网站推广价格
  • 石家庄网站建设电话咨询网站关键词排名优化推广软件
  • 做软件的公司网站有哪些百度安全中心
  • 网站开发费用属于哪种无形资产百度关键词排名查询
  • b站怎么看视频分区营销型网站建设模板
  • 企业门户网站数据库设计国外友链买卖平台
  • 综合性门户网站列举怎么给自己的公司做网站
  • 上海招聘用的最多的网站福州seo排名公司
  • 网站 简单广州四楚seo顾问
  • 海淀网站设计信息流优化师怎么入行
  • php网站开发linux班级优化大师下载安装最新版
  • 基于mysql的网站用什么做b2b网站大全免费推广
  • 推荐大良网站建设重庆网站建设技术外包